ATmega8 SPI Slave

18/11/2012 - 20:32 von Johannes Bauer | Report spam
Hallo Gruppe,

ich habe in einer Anwendung den ATmega8 eingeplant und benutze den als
SPI Slave. Jetzt schreibe ich die Software dafür und stutze etwas: Zwar
gibts für jedes übertragene Bit einen IRQ, aber wie kriege ich denn mit,
dass ein neuer Burst anfàngt? Hatte in Errinerung, dass es im
Statusregister dafür ein Bit gibt (erstes Byte nach !SS), aber offenbar
war das irgendein anderer Prozessor. Für den mega8 sehe ich da nàmlich
nichts. Möchte gerne meine Frame-Synchronisierung nàmlich auch über die
HIGH->LOW Flanke auf !SS machen und nur ungern irgendwas hinpfuschen.
Gibts da eine elegante Lösung oder muss ich den !SS in irgendeinem Timer
pollen und mir ein Flag merken, wenn im Timer-ISR !SS High ist?

Viele Grüße,
Johannes



Wo hattest Du das Beben nochmal GENAU vorhergesagt?


Zumindest nicht öffentlich!


Ah, der neueste und bis heute genialste Streich unsere großen
Kosmologen: Die Geheim-Vorhersage.
- Karl Kaos über Rüdiger Thomas in dsa <hidbv3$om2$1@speranza.aioe.org>
 

Lesen sie die antworten

#1 Heiko Nocon
18/11/2012 - 23:42 | Warnen spam
Johannes Bauer wrote:

ich habe in einer Anwendung den ATmega8 eingeplant und benutze den als
SPI Slave. Jetzt schreibe ich die Software dafür und stutze etwas: Zwar
gibts für jedes übertragene Bit einen IRQ



Dann wàre was kaputt. Es sollte ein IRQ pro Byte sein.

Hatte in Errinerung, dass es im
Statusregister dafür ein Bit gibt (erstes Byte nach !SS), aber offenbar
war das irgendein anderer Prozessor.



Offenbar...

Möchte gerne meine Frame-Synchronisierung nàmlich auch über die
HIGH->LOW Flanke auf !SS machen und nur ungern irgendwas hinpfuschen.
Gibts da eine elegante Lösung



Natürlich. Bei jedem neuzeitlichen AVR kann jeder Pin auch einen IRQ
auslösen. Also nimm z.B. Mega8A statt Mega8 und der Drops ist gelutscht.

In konkreten Fall braucht man den IRQ ja nichtmal wirklich auslösen, es
genügt, ihn soweit zu konfigurieren, daß das IRQ-Flag gesetzt wird.

Ähnliche fragen