Lesen mit SPI

Gast #2622538
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe ein Blockschaltbild angehängt, indem 2 Mikrocontroller 
(ATMEGA328 und ATMEGA16) und der MAX6675 miteinander verbunden sind. Der 
MAX6675 digitalisiert eine Temperatur, welche mittels eines Fühlers 
gemessen werden.

Der ATMEGA328 und der MAX6675 sind bereits in einem System integriert, 
ich will nun die 16Bit, welche der MAX6675 sendet mittels SPI lesen, 
darum habe ich noch den ATMEGA16 angehängt, welcher auch ein Display 
betreibt, welches die Temperatur ausgeben soll.

Ich konnte das Gerät allerdings nicht mit nachhause nehmen, darum dachte 
ich, dass ich einfach zwei ATMEGA16 miteinander kommunizieren lasse, 
also:

- einer davon ist der Master, der 2 Testbytes sendet
- der andere ist der Slave, der diese 2 Testbytes empfangen soll

Den Code für den Master habe ich bereits geschrieben, der funktioniert 
einwandfrei, habe ihn auf meinem Experimentierboard getestet und 
ausgemessen. (Der Code ist übrigens auch angefügt).

Mein Problem liegt beim Empfangen. Ich weiß auch gar nicht so recht, wie 
ich da arbeiten soll:

- soll ich den SCK an den INT1 hängen, um so mit externem Interrupt die 
einzelnen Bits auszulesen? Dann müsste ich das GIE-Bit setzen, wenn CS=0 
wird und das GIE-Bit wieder löschen, wenn CS=1 wird?
Oder gibt es da eine bessere Möglichkeit?

Vielen Dank im Vorraus!
mfg Ni_Hao_Na
Angehängte Dateien:
#2622743
Lesenswert?
• ▲
▼
Der ATmega16 hat ein Hardware-SPI-Modul, du brauchst deine SPI-Leitungen 
also bloß an die entsprechenden Pins vom ATmega hängen (CS vom MAX6675 
an SS vom ATmega, DO an MOSI, SCK an SCK) und ihn als SPI-Slave 
konfigurieren. Dann empfängt er vollautomatisch die Daten und löst, wenn 
du das möchtest, einen Interrupt aus, sobald ein Byte komplett ist.

Nebenbei: Du kannst INT1 (wie jeden anderen Interrupt auch) einzeln ein- 
und ausschalten (das Register dafür heißt GICR); du musst nicht generell 
alle Interrupts ein-/ausschalten.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.