Archiv verlassen und diese Seite im Standarddesign anzeigen : Timer0: "ISR already defined"? (gelöst)
Hi,
ich habe ein komisches Problem. Ich möchte den Timer0 meines Mega8 benutzen, um eine Variabel hochzuzählen:
$regfile = "m8def.dat"
$crystal = 8000000
.
.
.
Config Timer0 = Timer , Prescale = 8
On Timer0 Isr_von_timer0
.
.
.
Isr_von_timer0:
Zaehler = Zaehler + 1
Return
Allerdings gibt Bascom bei "On Timer0 Isr_von_timer0" den Fehler
"Isr already defined" aus.
Wodran kann das liegen? Ich habe schon mehrere Beispiele gesehen, in denen das genau so verwendet wird.
Schonmal Danke für eure Hilfe!
Gruß
Jan
... nimm 'mal das "Timer0:" in der ISR raus!
Gruß Dirk
ist immernoch der gleiche Fehler...den "timer0:" hatte ich noch vom rumprobieren drin.
Gruß
Jan
... musste gucken, ob in deinem restlichen Prog irgendwo noch Timer0-Definitionen auftauchen oder das Label "Isr_von_timer0" sonstwo verwendet wird.
Gruß Dirk
Bluesmash
22.12.2007, 13:09
oder benutzt du z.b. den getrc5 befehl? dieser benutzt auch den timer0...
gruss bluesmash
ne, den benutze ich nicht. Ansonsten benutze ich nur Servos, Int0 , den ADC und eben den Timer0.
Hier mal das ganze Programm:
$regfile = "m8def.dat"
$crystal = 8000000
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Servos = 1 , Servo1 = Portb.1 , Reload = 10
Config Timer0 = Timer , Prescale = 8
On Timer0 Isr_von_timer0
Config Int0 = Rising
On Int0 Einedrehung
Config Portb = Output
Config Portc = Input
Config Portd = Input
Dim Zaehler As Word
Dim Geschwindigkeit As Word
Dim Zeit As Long
Dim Servoposition As Byte
Dim Potiposition As Byte
Dim Temp As Byte
Const Umfang = 80000000 'umfang in mm*100000
Const Vmax = 312
Start Adc 'maximalgeschwindigkeit in cm/s
Do
Servo(1) = 50
Zaehler = 0
Waitms 3000
Enable Interrupts
Enable Int0
Do
Gosub Holepotipos
If Geschwindigkeit > Vmax Then
Servoposition = 0.9 * Servoposition
End If
If Geschwindigkeit < Vmax Then
Servoposition = Potiposition
End If
Temp = 50 + Servoposition
Servo(1) = Temp
Loop
Loop
Einedrehung:
Disable Interrupts
Disable Timer0
If Zaehler > 10 Then
Zeit = Zaehler * 256
Geschwindigkeit = Umfang / Zeit 'in cm/s
End If
Zaehler = 0
Enable Timer0
Enable Interrupts
Return
Isr_von_timer0:
Zaehler = Zaehler + 1
If Zaehler > 65530 Then
Disable Timer0
Zaehler = 0
End If
Return
Holepotipos:
Potiposition = Getadc(0)
Potiposition = Potiposition / 10
Return
End
Gruß
Jan
hmmm... ich bin doof... Servos scheint auch timer0 zu benutzen. Ohne Servos gehts jetzt^^
Danke für eure Hilfe!
Schöne Weihnachten!
Gruß
Jan
roboterheld
22.12.2007, 15:00
scheint nicht so, es ist so :
Resources used
TIMER0 is used to create the ISR.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.