Forum: Mikrocontroller und Digitale Elektronik Interruptgesteuerte SPI-Kommunikation zw. Atmega32 und AD7794


von Tycho B. (asellus)


Lesenswert?

Ahoi,

folgendes Problem:
Ich habe erfolgreich (zumindest im Atmel-Simulator) die Kommunikation 
zw. Atmega32 und AD7794 über SPI implementiert, allerdings gibt es da 
eine Sache, die ich nicht hinkriege. Der AD7794 setzt die 
DOUT/nRDY-Leitung (MISO) auf LOW, wenn eine Konversion abgeschlossen 
ist, aber dies ist im SPI-Handling des Atmega nicht implementiert, d.h. 
er löst das Interrupt immer bei "transmission complete", ohne Rücksicht 
auf MISO.
Interessanterweise ist die Leitung nur beim Auslesen der Daten wichtig, 
das reine Reinschieben von Befehlen geht laut Datenblatt von AD7794 auch 
bei DOUT/nRDY auf HIGH.
Gibt es eine Möglichkeit es interruptgesteuert zu lösen, ohne polling?

Das einzige was mir einfällt, ist das SPI-Interrupt (welches aus einem 
Ringspeicher Befehle an den AD7794 weiterleitet und ankommende Daten in 
einen anderen Ringspeicher schreibt) vor dem speziellen Befehl des 
Auslesens des DATA-Registers des AD7794 zu deaktivieren und einen 
Timerinterrupt zu aktivieren, der jede Millisekunde die 
DOUT/nRDY-Leitung überprüft. Falls die Leitung auf LOW geht, aktiviert 
die Timerinterruptroutine das SPI-Interrupt und deaktiviert sich selbst.

Ansonsten ein dickes Lob an das Forum, immer wieder erste 
Suchmaschineneinträge bei Elektronikfragen.

Grüße
Tycho

von Tycho B. (asellus)


Lesenswert?

bump?

von Tycho B. (asellus)


Lesenswert?

lastbump?
Schade, ich werde es also wie oben dargestellt ausprobieren.
Im Datenblatt vom AD7794 habe ich folgendes gefunden:
"The DOUT/RDY falling edge can also be used as an interrupt to a 
processor, indicating that valid data is available."

Und genau das kriege ich nicht hin.

Grüße
Tycho

von 2ter Gast (Gast)


Lesenswert?

Die Leitung zusätzlich auf einen interruptfähigen Pin legen. Welcher das 
ist verrät dir dein Datenblatt.

von Tycho B. (asellus)


Lesenswert?

Leider ist die Platine schon entwickelt und verlötet, ich könnte aber 
eine Brücke legen.
Ist das eine typische Lösung für ähnliche Probleme oder geht es noch 
irgendwie anders?

von 2ter Gast (Gast)


Lesenswert?

Im Moment fallen mir keine anderen Lösungen ein; entweder Pollen oder 
Hardware-Interrupt.

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.