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