Forum: Mikrocontroller und Digitale Elektronik Problem mit MIKROFAT16 und Zuordnung der SPI Anschlüsse


von Ralf (Gast)


Lesenswert?

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

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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.

von Ralf (Gast)


Lesenswert?

>> 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...

von Gast (Gast)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.