Hallo ich möchte mit einem ATMega??? eine SD Karte beschreiben. Dazu habe ich mit die Bibliothek MIKROFAT16 von www.mikro-control.de heruntergeladen und die entsprechende Harware aufgebaut. Letztere scheint zu funktionieren, die SD-Karten Software von Ulrich Radig läuft damit (und einem ATMega32). Da MIKROFAT16 ursprünglich für einen ATMEGA644 geschrieben ist, ich aber "nur" einen ATMEGA644p habe, habe ich die "#if defined (_AVR_ATmega644_)" in "#if defined (_AVR_ATmega644P_)" geändert. Bitte belehrt (und schlagt mich nicht:-) mich, wenn das so nicht geht. Ich dachte, da wäre kein relevanter Unterschied zwischen den beiden. Dann lies sich alles schon mal in AVR Studio compilieren und auf den ATMega644p meines STK500 schieben. Auf die Karte schreib es aber nichts... Ich habe mich nun Schritt für Schritt durch den Programmablauf gehangelt und div. Kontrollausgaben (über das UART, funktioniert) eingebaut. Dabei hänge ich gerade bei der Initialiesierung der SD Karte bzw. schon einem Schritt vorher beim init der SPI. In der headerdatei steht: #if defined (_AVR_ATmega32_) #define SPI_DI 6 #define SPI_DO 5 #define SPI_Clock 7 #define MMC_Chip_Select 3 #define SPI_SS 4 #endif #if defined (_AVR_ATmega644P_) // das "P" stammt wie o.g. von mir #define SPI_DI 6 #define SPI_DO 5 #define SPI_Clock 7 #define MMC_Chip_Select 4 #define SPI_SS 3 #endif Also die letzten beiden Zeilen sind beim ATMega32 bzw. ATMega644(p) vertauscht. Wenn ich aber in die Datenblätter von ATMega32 bzw. ATMega644(p) schaue, liegt dort (SPI_)SS bei beiden auf PB4. So ist auch meine Hardware verdrahtet. Kann mir jemand weiterhelfen? Gruß Ralf
Du mußt die defines schon an deine Hardware anpassen. SS kann als normaler ausgnag im SPI Modus verwendet werden, aber auch jeder ander I/O Pin kann seine Funktion übernehmen. Probiers mal dort die für deine Hardware passenden Pinnummer einzutragen und dann neu zu kompilieren.
>> Probiers mal dort die für deine Hardware passenden >> Pinnummer einzutragen und dann neu zu kompilieren. CS der Karte (Pin 1 bei SD Karten) liegt (über Pegelwandler) an PP4. Habe schon beide (siehe oben) Arten des defines probiert. Die Karte (auch schon mehrere versucht) wird nicht initialiesiert...
> Da MIKROFAT16 ursprünglich für einen ATMEGA644 geschrieben ist, ich > aber "nur"
einen ATMEGA644p habe,
lt. Datenblatt haben die doch eine völlig identische Pinbelegung...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.