Ich meine hier:
General Interrupt Control Register – GICR
Seite 49 im Datenblatt
Sorry, ich bin da irgendwie garnicht mehr drin...
Wie kann ich einzelne Interrupts deaktivieren?
Mit cli(); deaktiviere ich ja alle...
Ich meine hier:
General Interrupt Control Register – GICR
Seite 49 im Datenblatt
Sorry, ich bin da irgendwie garnicht mehr drin...
MFG Moritz
www.free-webspace.biz/update
@johannes:
Schau bitte mal in eines der oben erwähnten Tutorials rein. Da ist alles bestens erklärt.
Kurzer Hinweis: Du musst erst mal Deine Interrupt Register so einstellen, dass der INT0 und INT1 frei geschaltet sind.,
Hallo,
ok, also hier der aktuelle Code
Wenn ich nun INT0 oder INT 1 mit VCC verbinde passiert manchmal gar nix, manchmal kommt Zeichensalat im Terminal an..Code:#define F_CPU 16000000 #include <avr/io.h> #include <avr/interrupt.h> #include <inttypes.h> #include "usart.c" ISR(INT0_vect) { usart_print("INT0\n"); } ISR(INT1_vect) { usart_print("INT1\n"); } int main() { usart_init(); GIMSK |= (1 << INT1) | (1 << INT0); MCUCR |= (1 << ISC11) | (1 << ISC10); MCUCR |= (1 << ISC01) | (1 << ISC00); sei(); usart_print("Warte auf Interrupt\n"); while(1) ; }
Viele Grüße,
Johannes
Hm, also usart.c habe ich noch nie benutzt.
Setze auf jeden Fall mal die DDR.
ich glaube:
DDRD = 0bxxxx0010;
x := wie es bei dir ist.
Dann solltest du die Ports noch Null setzten (Pulldown):
PORTD &= ~(1<<2);
PORTD &= ~(1<<3);
MFG Moritz
www.free-webspace.biz/update
Das ist meine eigene Datei und die funktioniert sonst immerZitat von RCO
Was meinst du damit?Zitat von RCO
Er weiß ja nicht genau, wie die DatenRichtung an deinem PortD aussieht...
An meinem AVR ist gar nix angeschlossen, nur eben die 2 Taster an INT0/1
Soll ich Port D als eingang oder ausgang definieren?
Viele Grüße,
Johannes
genauEr weiß ja nicht genau, wie die DatenRichtung an deinem PortD aussieht...
Beides alleine geht nicht, da D2 und D3 je Eingänge sein müssen. Du willst aber per serieller Schnittstelle senden, deshalb muss PD2 auf jeden fall Ausgang sein. Falls du noch Empfangen willst, dann muss PD1 ein Eingang sein. Wenn aber sonst ncihts anderes and den AVR angeschlossen ist, probier mal das:An meinem AVR ist gar nix angeschlossen, nur eben die 2 Taster an INT0/1
Soll ich Port D als eingang oder ausgang definieren?
DDRD = 0b11110010;
PORTD &= ~(1<<2);
PORTD &= ~(1<<3);
Wenn du D2 oder D3 jetzt an 5V legst sollte was passieren
DDRD ist das Data Direction Register des Port D. Eine 1 bedeutet Ausgang, eine 0 Eingang.
MFG Moritz
www.free-webspace.biz/update
Lesezeichen