Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega 128 ,Bascom, Karta pamięci MMC lub SD, plik txt

joizo 25 Paź 2009 22:46 5691 14
  • #1 25 Paź 2009 22:46
    joizo
    Poziom 9  

    Poszukuję programu do obsługi karty MMC lub SD.
    interesuje mnie najbardziej zapis na karcie pliku w postaci TXT w, którym zapis występował by w ten sposób:
    Lp. Data Godzina U[mV] I[mA]
    1 23.12.2009 3:00
    2 23.12.2009 3:30
    3 23.12.2009 4:00
    itd.
    Mikrokontroler będzie zapisywał na karcie pomiary.


    WSZELKA POMOC MILE WSKAZANA!!!!!

    0 14
  • #2 25 Paź 2009 22:50
    atom1477
    Poziom 43  

    AVRDOS

    Code:

      Stream = Godz + Fusing(Napiecie, "##.##")
      Stream = Stream + Fusing(Prad, "##.##")

      A2 = Driveinit()
      A2 = Initfilesystem(1)
      If A2 = 0 Then
        Open "PLIKTEXT.TXT" For Append As #1
        Print #1 , Stream
        Close #1
      End If

    0
  • #3 27 Paź 2009 22:01
    joizo
    Poziom 9  

    a jak poradzić sobie z tym AVRDOS-em, bo nie jestem dobry w bascomie

    0
  • Pomocny post
    #4 27 Paź 2009 22:24
    atom1477
    Poziom 43  

    Dodajesz do katalogu projektu pliki "CONFIG_AVR-DOS.bas" i "Config_MMC.bas". "Config_MMC.bas" możesz zedytować.
    Najlepje też wywalić z niego "Driveinit()". Inaczej przy włączaniu urządzenia bez karty będziesz miał kilkuminutową przywiechę.
    Dodajesz te pliki do za pomocą:

    Code:

    $Include "Config_MMC.bas"          'include mmc
    $Include "Config_AVR-DOS.BAS"      'include avr-dos

    gdzieś na początku programu i już.

    Acha. Kiedyś miałem z tym problem. I doszło nawet do tego że straciłem kilka miesięcy na napisanie własnej procedury do obsługi plików bo już nie miałem siły do AVR-DOSa (o bibliotekach w C już nie wspominam, do tej pory nie mogę uruchomić). Chodziło o błędy wyrzucane przez kompilator. Jakiś miesiąc temu dopiero się zgapiłem, że samo dodanie bibliotek do kodu ale nie użycie ich spowoduje wywalenie błędów. Nie wiem dlaczego, nie jak pisałem BASCOMa.
    Jeżeli jednak doda się jakieś operacje na plikach to te błędy znikną i pogram skompiluje się. Czyli jak by Ci coś nie działało to nie trać czasu na szukanie błędów. Zamiast upraszczać kod, skomplikuj go :D To znaczy dodaj obsługę pliku.

    0
  • #5 06 Lis 2009 11:30
    joizo
    Poziom 9  

    a jeszcze takie pytanie czy da zrobić sie mini przetwornice z 0,2V na co najmniej 3,6V i zeby była ona naprawde mała??

    Dodano po 38 [sekundy]:

    a no i żeby była zasilana z bateri lub akumulatora 3,6V

    0
  • #6 06 Lis 2009 11:54
    arnoldziq
    Moderator Programowanie

    Przeczysz sam sobie.
    Masz zasilanie 3v6 i chcesz je podnieść do 3v6 ?

    0
  • #7 06 Lis 2009 13:15
    atom1477
    Poziom 43  

    Może chodzi o to żeby uzyskać stabilizowane 3,6V

    Ale jednego nie rozumiem. Przetwornica ma być zasilana z napięcia 0,2V pochodzącego z baterii 3,6V?
    Decyzja: albo 0,2V (prawie niewykonalna przetwornica) albo 3,6V.

    0
  • #8 06 Lis 2009 20:53
    joizo
    Poziom 9  

    Nie chodzi o to ze akumulatorki beda ladowane z ogniw slonecznych , a jesli w przetwornicy bylby jakis uklad to on tez musi byc czyms zasilany

    Dodano po 1 [minuty]:

    a przetwornica ma sluzyc do podniesienia napiecia do ladowania akumulatorkow, a wszystko zczyna sie od ogniwa!!

    0
  • #9 06 Lis 2009 21:59
    wader_669
    Poziom 28  

    W sumie nidgy nie widzialem przetwornicy 0,2V ale zanim zaczniesz szukac musisz sobie uswiadomic, ze: nie wyczarujesz tych 3,6V, zrobisz to kosztem natezenia, pytanie czy z natezeniem wyrobi.

    Dodano po 1 [minuty]:

    Polecam zamiast akumulatorkow superkondensatory. Naprawde super dzialaja :D sam posiadam 1,5F na 5V zdziwilem sie jak to gromadzi energie

    Dodano po 40 [sekundy]:

    tylko z tego co slyszalem te mmc karty duzo pobieraja pradu, zgadza sie?

    0
  • #10 06 Lis 2009 22:11
    atom1477
    Poziom 43  

    wader_669 napisał:
    tylko z tego co slyszalem te mmc karty duzo pobieraja pradu, zgadza sie?


    Tak. Nawet ze 100...200mA.

    0
  • #11 12 Gru 2009 23:12
    joizo
    Poziom 9  

    Jest problem komunikacji karty SD z Atmegą
    mam jeszcze takie pytanie czy plik zapisany na karcie da się odczytać na PC?

    0
  • #12 12 Gru 2009 23:20
    wader_669
    Poziom 28  

    Jak zapisujesz wszystko w facie to normalnie powinno byc to mozliwe. Jak zapisujesz bez fata to sa programy do tego.

    0
  • #13 12 Gru 2009 23:24
    PiotrEtenM500
    Poziom 19  

    wader_669 napisał:
    ..... Jak zapisujesz bez fata to sa programy do tego.


    Znasz jakąś nazwę?

    0
  • #14 12 Gru 2009 23:24
    joizo
    Poziom 9  

    Podobno jest zapisywany w facie, ale jest zerowy kontakt Atmegi z karta

    to jest program z mikrokontrolera :

    $regfile = "M644def.dat"
    $crystal = 1000000
    $hwstack = 128
    $swstack = 128
    $framesize = 256
    '-------------------------------------------------------------------------------
    Dim A2 As Byte
    Dim Adc_data As Integer

    Dim Text As String * 40
    '-------------------------------------------------------------------------------
    Config Clock = User
    Config Date = Dmy , Separator = .


    Porta = &B00000000
    Portb = &B00000000
    Portc = &B00000000
    Portd = &B00000001

    Config Porta = &B00000000
    Config Portb = &B00000000
    Config Portc = &B00000000
    Config Portd = &B00000001

    jmp Omin
    $include "Config_MMC.bas" 'include mmc
    $include "Config_AVR-DOS.BAS" 'include avr-dos
    !Omin:



    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc








    Do
    Portd.0 = 0

    Wait 1

    _sec = 44
    _min = 55
    _hour = 22
    _day = 8
    _month = 8
    _year = 8


    Adc_data = Getadc(0)

    Text = "22:22:22, DATA1, DATA2, "
    Text = Text + Str(_sec) + ":"
    Text = Text + Str(_min) + ":, "
    Text = Text + Str(adc_data)

    A2 = Driveinit()
    A2 = Initfilesystem(1)
    If A2 = 0 Then
    Open "PLIK.TXT" For Append As #1
    Print #1 , Text
    Close #1
    End If

    Wait 1

    Portd.0 = 1


    'For A2 = 0 To 29
    'Wait 60
    'Next A2
    Loop

    Czy jest dobrze??

    0
  • #15 13 Gru 2009 01:41
    gelmi
    Poziom 9  

    Akumulatorki 3,6V? Chodzi Ci o 3 paluszki czy np o baterie z komórki. Jeżeli to drugie to napięcie ładowania ma być większe niż 3,6V - coś koło 4,1V chyba. Ogólnie to polecałbył jakiś układ kontrolujący takie ładowanie, np. MAX1811. A jeżeli chodzi Ci o przetwornice to np jest malutki układ MAX1674, co prawda potrzebuje cewkę zewnętrzną, ale aż tak dużo miejsca nie zajmuje. i daje 3,3-5[V] z 0,7-Vout[V]. Sam robiłem niedawno doładowywanie akumulatora z ogniw słonecznych, także jak coś to PM.

    0