mikrocontroller.net

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


Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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_MM... 
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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.