Lorenz
10.08.2006, 16:07
Hallo,
habe da ein kleines Problem:
Ich habe ein Programm für den ATmel AT90S2313 in Bascom geschrieben. In dem Programm werden sowohl Timer0 Interrupts als auch die externen Interrupts INT0 und INT1 benutzt. Das Problem ist nun, dass die externen Interrupts wunderbar funktionieren aber der Timer0 Interrupt nicht anspricht, sprich nicht ausgeführt wird. Deaktiviere ich die Interrupts INT0 und INT1, dann funktioniert der Timer0 Interrupt wie gewünscht. Aber alle zusammen klappen leider irgendwie nicht!
Villeicht kann mir jemand von Euch einen Tipp geben? Villeicht stelle ich mich auch nur zu dumm an? Hier mal die entsprechenden Codeschnipsel:
$regfile = "2313def.dat"
$crystal = 1000000
Ddrb = &B11111111 'Ports Definieren alle Ausgang
Ddrd = &B11110011 'PinD.2 und Pind.3 Eingang sonst Ausgang
Portb = &B00000000 'Ausgänge Low setzen
Portd = &B00000000
Sreg.7 = 1 'Interrupts Global freigeben
Tccr0 = &B00000101 'Timer0 = Systemtakt / 1024
Timsk = &B00000010 'Timer0 Overflow Interrupt einschalten
Gimsk = &B11000000 'Interrupt INT0 und INT1 einschalten
Mcucr = &B00000101 'Interrupt INT0 und INT1 bei fallender oder steigender Flanke
On Timer0 Int_blinken 'Interrupt Routinen Deklarieren
On Int0 Int_vorwaerts
On Int1 Int_rueckwaerts
Do 'Hauptprogramm
Loop
Int_blinken: 'Timer0 Overflow Interrupt Routine
Toggle Portb.0
Return
Int_vorwaerts: 'Interrupt0 Routine
Toggle Portb.1
Return
Int_rueckwaerts: 'Interrupt1 Routine
Toggle Portb.2
Return
habe da ein kleines Problem:
Ich habe ein Programm für den ATmel AT90S2313 in Bascom geschrieben. In dem Programm werden sowohl Timer0 Interrupts als auch die externen Interrupts INT0 und INT1 benutzt. Das Problem ist nun, dass die externen Interrupts wunderbar funktionieren aber der Timer0 Interrupt nicht anspricht, sprich nicht ausgeführt wird. Deaktiviere ich die Interrupts INT0 und INT1, dann funktioniert der Timer0 Interrupt wie gewünscht. Aber alle zusammen klappen leider irgendwie nicht!
Villeicht kann mir jemand von Euch einen Tipp geben? Villeicht stelle ich mich auch nur zu dumm an? Hier mal die entsprechenden Codeschnipsel:
$regfile = "2313def.dat"
$crystal = 1000000
Ddrb = &B11111111 'Ports Definieren alle Ausgang
Ddrd = &B11110011 'PinD.2 und Pind.3 Eingang sonst Ausgang
Portb = &B00000000 'Ausgänge Low setzen
Portd = &B00000000
Sreg.7 = 1 'Interrupts Global freigeben
Tccr0 = &B00000101 'Timer0 = Systemtakt / 1024
Timsk = &B00000010 'Timer0 Overflow Interrupt einschalten
Gimsk = &B11000000 'Interrupt INT0 und INT1 einschalten
Mcucr = &B00000101 'Interrupt INT0 und INT1 bei fallender oder steigender Flanke
On Timer0 Int_blinken 'Interrupt Routinen Deklarieren
On Int0 Int_vorwaerts
On Int1 Int_rueckwaerts
Do 'Hauptprogramm
Loop
Int_blinken: 'Timer0 Overflow Interrupt Routine
Toggle Portb.0
Return
Int_vorwaerts: 'Interrupt0 Routine
Toggle Portb.1
Return
Int_rueckwaerts: 'Interrupt1 Routine
Toggle Portb.2
Return