Hallo Forum,
ich betreibe die SPI beim ATMega 1284(p) und muss diese zur Erzeugung
eines verhältnismäßig langem Puls mal in ihrer eigentlichen Funktion
(als SPI) abstellen. Die SPI ist als "Master" konfiguriert und
funktioniert auch.
Was nicht funktioniert, ist dass ich nach dem "Abstellen" der SPI den
MOSI Pin (PB5) auf Masse (Logic 0) schalten kann !
Mein Grundgedanke war: alle Register in den Ausgangszustand bringen !
So gehts nicht(!):
1 | // Switchoff SPI Interface (to abtain control of lines)
|
2 |
|
3 | PRR0 |= (1<<PRSPI); // Disconnect Clock
|
4 | SPCR = 0; // Init Value
|
5 | SPSR = 0;
|
wenn jedoch der Befehl "Dissconnect Clock", also das PRSPI Bit nicht zu
Beginn gelöscht wird, sondern gar nicht wie hier:
1 | // Switchoff SPI Interface (to abtain control of lines)
|
2 | SPCR = 0; // Init Value
|
3 | SPSR = 0;
|
dann kann ich den MOSI Pin B5 seltsamerweise korrekt betreiben.
Im Datenblatt finde ich keinen Hinweis auf das "abstellen" der SPI.
Laut Datenblatt gilt für den PRSPI:
1 | Bit 2 - PRSPI: Power Reduction Serial Peripheral Interface
|
2 |
|
3 | Writing a logic one to this bit shuts down the Serial Peripheral
|
4 | Interface by stopping the clock to the module.
|
5 | When waking up the SPI again, the SPI should be re initialized
|
6 | to ensure proper operation.
|
Ich hege die Vermutung, dass der Atmel den Clock braucht, um die
Statusregister noch laden zu können !
Hat jemand von Euch schon ähnliche Effekte beobachtet ?
(Such- und Findezeit für dieses Problem ca. 4Stunden ! **grr**)
Gruß Daniel