Forum: Mikrocontroller und Digitale Elektronik SD-Card an ATMega16 mit Software von Ulrich Radig


von Ralf (Gast)


Lesenswert?

Hallo,

ich versuche gerade mit einem ATMega16 Daten in eine SC-Card zu 
schreiben.
Dazu wollte ich die Software von Ulrig Radig 
http://www.ulrichradig.de/home/uploads/File/AVR_MMC_SD/MMC_SD_SourceCode.zip 
verwenden.

Bei Ulrich Radig wird das mit einem ATMega32 gemacht, sollte das auch 
mit einem ATMega16 funktionieren?

Ich habe die mmc.h um die Zeilen:

#if defined (_AVR_ATmega16_)
  #define SPI_DI        6    //Port Pin an dem Data Output der 
MMC/SD-Karte angeschlossen ist
  #define SPI_DO        5    //Port Pin an dem Data Input der 
MMC/SD-Karte angeschlossen ist
  #define SPI_Clock      7    //Port Pin an dem die Clock der 
MMC/SD-Karte angeschlossen ist (clk)
  #define MMC_Chip_Select    3    //Port Pin an dem Chip Select der 
MMC/SD-Karte angeschlossen ist
  #define SPI_SS        4    //Nicht Benutz muß aber definiert werden
#endif
 erweitert (dachte mir ATMega16 und ATMega32 sind ja Pin-Kompatibel) und 
einfach einmal ausprobiert.

Wenn ich meine Schaltung mit einer SD-Card angesteckt habe, bekomme ich 
über das UART ausgegeben:

Karte gefunden!ŠªÍÑ•µAReady!
KarteV–V—‹•¹…ŠªÍÑ•µAReady!
Karte gefunden!ŠªÍÑ•µAReady!
Karte gefunden!ŠªÍÑ•µAReady!
Karte gefunden!ŠªÍÑ•µAReady!
KarteV–V—‹•¹…ŠªÍÑ•µAReady!
Karte gefunden!ŠªÍÑ•µAReady!
KarteV–V—‹•¹…ŠªÍÑ•µAReady!
Karte gefunden!ŠªÍÑ•µAReady!
Karte gefunden!ŠªÍÑ•µAReady!
Karte gefunden!ŠªÍÑ•µAReady!
Karte gefunden!ŠªÍÑ•µAReady!
KarteV–V—‹•¹…ŠªÍÑ•µAReady!
Karte gefunden!ŠªÍÑ•µAReady!
Karte gefunden!ŠªÍÑ•µAReady!
KarteV–V—‹•¹…ŠªÍÑ•µAReady!

Also erstens mit einer Menge Frame Errors auf der seriellen 
Schnittstelle, da muss noch etwas mit der Takt- bzw. Baudrate faul sein. 
Ich habe die Taktfrequenz 1000000 eingestellt da ich annehme, der 
ATMega16 läuft von Hause aus erstmal mit einem internen Takt von 1MHz.

Und zweitens scheint das Programm in eine Endlosschleife zu geraten was 
ich mit nicht erklären kann.

Hat jemand von Euch ein paar Tipps für einen blutigen Anfänger?

MfG Ralf

von holger (Gast)


Lesenswert?

>Und zweitens scheint das Programm in eine Endlosschleife zu geraten was
>ich mit nicht erklären kann.

Der ATMEga32 hat 2kB RAM. Der ATMega16 nur 1kB. Vermutlich
schmiert der ab wegen Stacküberlauf.

von Klaus (Gast)


Lesenswert?

>da muss noch etwas mit der Takt- bzw. Baudrate faul sein

ja der interne RC Taktgenerator ist so ungenau das eine
Kommunikation über RS232 schwierig bis unmöglich ist!
Verwende einen externen Quarz oder Taktgenerator.

von J. K. (rooot)


Lesenswert?

>Der ATMEga32 hat 2kB RAM. Der ATMega16 nur 1kB. Vermutlich
>schmiert der ab wegen Stacküberlauf.

Ich hab's mit Ulrich Radig's SPI-Routinen und Mikrofat (weiß grad den 
Link nicht, findst du aber leicht [google, forumsuche])

Is aber ziehmlich voll und funktioniert nur mit wenigen Karten richtig.

Besser ist da Holgi's Code.
http://www.holger-klabunde.de/avr/avrboard.htm#FullFAT

Funktioniert meiner Erfahrung besser. Hab einen Logger mit SD und MEGA16 
laufen. Du kannst mit dem MEGA16 nicht den gesammten Funktionsumfang 
nutzen.

MfG
J.K.

von holger (Gast)


Lesenswert?

>Hat jemand von Euch ein paar Tipps für einen blutigen Anfänger?

Ja klar.

Daten auf eine SD Karte zu schreiben benötigt mit
FAT Support immer mindestens 512 Byte RAM.
Ok, es gibt da noch andere Möglichkeiten.
Aber die sind dreckig und umständlich.

Dann kommt noch ein bisschen Verwaltung dazu. Im Endeffekt bleiben
bei einem ATMega16 vieleicht noch 300-400 Byte
für den Rest des Programms übrig. Die bekommt man ganz schnell
mit z.B. langen Textausgaben auf UART oder LCD voll wenn
man Routinen benutzt die Texte aus dem RAM ausgeben.

Bei SD Karte mit FAT schreiben würde ich immer
einen uC mit 2kB RAM nehmen. Da hat man wenigstens
ein bisschen Luft. Es geht auch mit 1kB RAM, aber dann
sollte man schon wissen was man tut.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.