Hallo,
nutze einen Atmega32M1 (Achtung, M1)
Versuche einen Externen Interrupt zu nutzen, klappt aber nicht.
Nutze den PIN PC0 (INT3) (Pin 30)
Folgende Funktion rufe ich in der main(..) auf:
1
voidInit_ExternerInterrupt(void){
2
EICRA=(1<<ISC30);
3
EIMSK=(1<<INT3);
4
EIFR=(1<<INTF3);
5
6
DDRC&=~(1<<PC0);
7
PORTC|=(1<<PC0);
8
}
Hier die ISR:
1
volatileunsignedinttest=0;
2
3
ISR(EXT_INT3_vect){
4
test++;
5
}
Und in der main innerhalb der while(..) frage ich die Variable test ab:
Gera schrieb:> Versuche einen Externen Interrupt zu nutzen, klappt aber nicht.Gera schrieb:> Wo mach eich einen Fehler?
Es fehlt die Beschreibung der Fehlersymptome.
"klappt aber nicht" gilt nicht.
Init_ExternerInterrupt nicht aufgerufen, nur Fragmente des Programms
gezeigt, Schaltung geheim ..., Fehlermeldungen / Warnungen des Compilers
nicht beachtet, ...
Deine LED ändert sich nicht, da Test immer > 0 ist... es sei denn Test
ist 0. Es kommt darauf an "was" nicht geht und die Freq. der Interrupts,
so - sowie PORTD7 noch auf Ausgang geben:
DraconiX schrieb:> ISR (EXT_INT3_vect)> {> test++;> if(test > 200)> {> test = 0;> PORTD ^= (1<<PD7);> }> }> }
Das hab ich versucht, klappt aber leider auch nicht.
Mir ging es jetzt erstmal darum, ob jemand einen Fehler in der Interrupt
Init findet.
Gera schrieb:> Das hab ich versucht, klappt aber leider auch nicht.
Keiner kennt Dein vollständiges Programm, keiner kennt Deine Schaltung.
Wie soll Dir dann jemad helfen?
"...klappt leider auch nicht." sagt auch nicht unbedingt jedem, was denn
nicht "klappt".
Werde präziser und Dir kann ggf. geholfen werden.
Gera schrieb:> Mir ging es jetzt erstmal darum, ob jemand einen Fehler in der Interrupt> Init findet.
Grundsätzlich nein - der PIN/INT3 reagiert selbst dann, wenn der Port
als Ausgang definiert ist. Nochmal: Wie sieht denn die Schaltung aus?
Dieter F. schrieb:> Grundsätzlich nein - der PIN/INT3 reagiert selbst dann, wenn der Port> als Ausgang definiert ist. Nochmal: Wie sieht denn die Schaltung aus?
Ich habe einfach PIN 30 mit nem kabel an 5V gehalten.
@Gera:
Ist PORTD7 für Dich das Kriterium, dass der Interrupt stattgefunden hat?
Ich habe in den gezeigten Programm-Fragmenten noch nichts gefunden, wo
PORTD7 auf "Ausgang" eingestellt wird....
Gera schrieb:> Ich habe einfach PIN 30 mit nem kabel an 5V gehalten
Schön, wenn der PIN mittels Pullup auf high gehalten wird
Gera schrieb:> PORTC |= (1 << PC0)
wird das nur wenig bewirken.
Schaltung, komplettes Program ...
Gera schrieb:> Ich habe einfach PIN 30 mit nem kabel an 5V gehalten.
Gibt es dort auch einen Pulldown-Widerstand? Sonst ist das Verhalten
undefiniert, denn ein offener Eingang ist sehr hochohmig und kann
unbeschaltet jeden Zustand annehmen!
DraconiX schrieb:> Dürfte alles passen. Aber kann mir mal jemand erklären warum INT3:2 nur> auf Read steht und INT1:0 auf Read/Write? Finde dazu keine Infos?!
In meinem ists Read/Write, hast bestimmt ein älteres DB.
Dieter F. schrieb:> Was genau hast Du an "Schaltung" und "komplettes Programm" nicht> verstanden?
Die Schaltung wofür? Ich habe wie gesagt einfach den Pin wie im Layout
zu sehen rausgeführt. Da sieht man in der Schaltung eine Verbindung zu
einem connector.
Komplettes Programm ist recht unhandlich, da ich nicht nur das darin
stehen habe. Daher nur Schnippsel.
Dietrich L. schrieb:> @Gera:> Ist PORTD7 für Dich das Kriterium, dass der Interrupt stattgefunden hat?>> Ich habe in den gezeigten Programm-Fragmenten noch nichts gefunden, wo> PORTD7 auf "Ausgang" eingestellt wird....
Erstmal ja. Das toggeln des Pins klappt. Steht korrekt auf Ausgang.
Dieter F. schrieb:> Schön, wenn der PIN mittels Pullup auf high gehalten wird
??
Dieter F. schrieb:> wird das nur wenig bewirken.
Habe ich wie schon empfohlen raus genommen.
Dietrich L. schrieb:> Gibt es dort auch einen Pulldown-Widerstand? Sonst ist das Verhalten> undefiniert, denn ein offener Eingang ist sehr hochohmig und kann> unbeschaltet jeden Zustand annehmen!
Nein, teste ich.
Gera schrieb:> Die Schaltung wofür?
Tust Du nur so? Hast ein Layout aber keine Schaltung?
Viel Spaß noch.
Gera schrieb:> Da sieht man in der Schaltung eine Verbindung zu> einem connector.
Den Unterschied zwischen Schaltung/Schaltplan und Layout kennst Du?
Gera schrieb:> DraconiX schrieb:>> Dürfte alles passen. Aber kann mir mal jemand erklären warum INT3:2 nur>> auf Read steht und INT1:0 auf Read/Write? Finde dazu keine Infos?!>> In meinem ists Read/Write, hast bestimmt ein älteres DB.>
Hmm... ist das aktuelle vom Atmel Server, die Version 7647O-AVR-01/15.