PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SPI stört Int0/Int1



Nicy
21.02.2009, 19:15
Hallo zusammen,

ich steuere über Hardware-SPI eines Atmega32 ein S65 Display an.
Jedoch scheint die SPI-Ansteuerung den Int0 oder Int1 zustören.

Hier ein einfaches Beispiel:

Im Hauptprogramm wird ständig Daten an SPI gesendet:


int main(void) {
while(1)
{
SPDR = 0b11110000;
}
}

In ISR von Int0 wird über Uart ein Zeichen gesendet:



SIGNAL (SIG_INTERRUPT0)
{
uart_putc('1');
}


Int0 ist so eingestellt, dass bei steigender Flanke ein Interrupt ausgelöst wird.

Ich löse einen Interrupt aus in dem ich Int0-Eingang auf High mache, es kommt das Zeichen "1" an. Bis hier ist alles soweit richtig. Wenn ich den Int0-Eingang wieder auf low mache. Empfange ich über den Uart zwei oder "1" Zeichen. Obwohl das gar nicht sein darf, dann nur bei steigender Flanke soll ein Interrupt stattfinden.
Tue ich aber im Hauptprogramm die Senderei von SPI entfernen:


SPDR = 0b11110000;

Dann funktioniert alles einwandfrei. Heißt: Wenn In0-Eingang auf High ist, wird nur einmal das Zeichen "1" gesendet und beim Low machen passiert nichts.

Bin ratlos warum das so ist. :-k

Bitte um Hilfe.

Vielen Dank!

MFG

s.o.
23.02.2009, 06:13
Erste Vermutung: Schalter entprellt?
Zweite Vermutung: liegen die kabeln weit genug auseinander?, eventuell schon mal mit Alufolie geschirmt?