Hero_123
22.01.2019, 16:47
Hallo
Ich habe 2 ATMega8 (1*myAVR Board MK2 USB, 1*myAVRBoard Light), gemeinsame Spannungsversorgung und lasse sie per SPI kommunizieren; in jeder SPI-Leitung ist ein 1kOhm Serienwiderstand.
Der Datenaustausch fkt auch (es werden 8 Bytes ausgetauscht), den korrekten Empfang der Daten lasse ich mir am PC per USART und hTerm anzeigen.
Der Master sendet/empfängt die Daten gepollt (im main); der Slave per Interrupt.
Bei der Sende/Empfangsfkt "void SPI_write( uint8_t *sen_buf, uint8_t *empf_buf, uint8_t buf_size )" des Masters muss ich aber ein _delay_us(50) einfügen, sonst stehen im Empfangspuffer des Master die Werte des Sendepuffers und nicht die Sendewerte des Slave (nach Einfügen des delays speichert der Master korrekt die Sendewerte des Slave)- ein delay ist ja die schlechteste Möglichkeit ...
Außerdem muß ich den Slave auch flashen, wenn ich den Master geflasht habe, obwohl beim Slave nichts geändert worden ist - woran kann das liegen?
Anbei das Master- und Slave File
mfg
Hero_123
Ich habe 2 ATMega8 (1*myAVR Board MK2 USB, 1*myAVRBoard Light), gemeinsame Spannungsversorgung und lasse sie per SPI kommunizieren; in jeder SPI-Leitung ist ein 1kOhm Serienwiderstand.
Der Datenaustausch fkt auch (es werden 8 Bytes ausgetauscht), den korrekten Empfang der Daten lasse ich mir am PC per USART und hTerm anzeigen.
Der Master sendet/empfängt die Daten gepollt (im main); der Slave per Interrupt.
Bei der Sende/Empfangsfkt "void SPI_write( uint8_t *sen_buf, uint8_t *empf_buf, uint8_t buf_size )" des Masters muss ich aber ein _delay_us(50) einfügen, sonst stehen im Empfangspuffer des Master die Werte des Sendepuffers und nicht die Sendewerte des Slave (nach Einfügen des delays speichert der Master korrekt die Sendewerte des Slave)- ein delay ist ja die schlechteste Möglichkeit ...
Außerdem muß ich den Slave auch flashen, wenn ich den Master geflasht habe, obwohl beim Slave nichts geändert worden ist - woran kann das liegen?
Anbei das Master- und Slave File
mfg
Hero_123