globe
27.02.2005, 01:43
Hallo!
Ich bin gerade dabei meinem Robby das genaue Geradeausfahren bei zu bringen. Dazu habe ich jedem Motor eine Gabellichtschranke verpasst die jede Umdrehung zwei Impulse abgibt.
Um die Sachen zu testen habe ich folgendes Programm geschrieben:
$baud = 19200
$regfile = "m8def.dat"
$crystal = 4000000
Config Pinb.1 = Output
Config Pinb.2 = Output
Ddrd = &B11000011 'PD2+3+4 Eingang, Rest Ausgang
On Int0 Rad 1 'Interrupt-Routine für motor1
On Int1 Rad 2 'Interrupt-Routine für motor2 1
Config Int0 = Falling 'Interrupt 0 bei H/L-Flanke auslösen
Config Int1 = Falling 'Interrupt 1 bei H/L-Flanke auslösen
Dim Um1 As Integer
Dim Um2 As Integer
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Enable Interrupts
Enable Int0 'Externen Interrupt 0 einschalten
Enable Int1 'Externen Intterrupt 1 einschalten
Pwm1a = 100
Pwm1b = 140
Do
Waitms 200
Print Um1 ; " " ; Um2 ; "*"
Loop
Rad1:
Incr Um1
Return
Rad2:
Incr Um2
Return
(Die Pull-up´s hab ich mit Absicht nicht an da das meine externe Beschaltung alles Übernimmt (OP).)
Das Problem bei meinem Code ist leider, dass sich nur Um1 erhöht und Um2 nur wenn der Motor 1 (Um1) steht.
Ich bin mir sicher Ihr könnt mir da helfen!
Gruß Georg
Ich bin gerade dabei meinem Robby das genaue Geradeausfahren bei zu bringen. Dazu habe ich jedem Motor eine Gabellichtschranke verpasst die jede Umdrehung zwei Impulse abgibt.
Um die Sachen zu testen habe ich folgendes Programm geschrieben:
$baud = 19200
$regfile = "m8def.dat"
$crystal = 4000000
Config Pinb.1 = Output
Config Pinb.2 = Output
Ddrd = &B11000011 'PD2+3+4 Eingang, Rest Ausgang
On Int0 Rad 1 'Interrupt-Routine für motor1
On Int1 Rad 2 'Interrupt-Routine für motor2 1
Config Int0 = Falling 'Interrupt 0 bei H/L-Flanke auslösen
Config Int1 = Falling 'Interrupt 1 bei H/L-Flanke auslösen
Dim Um1 As Integer
Dim Um2 As Integer
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Enable Interrupts
Enable Int0 'Externen Interrupt 0 einschalten
Enable Int1 'Externen Intterrupt 1 einschalten
Pwm1a = 100
Pwm1b = 140
Do
Waitms 200
Print Um1 ; " " ; Um2 ; "*"
Loop
Rad1:
Incr Um1
Return
Rad2:
Incr Um2
Return
(Die Pull-up´s hab ich mit Absicht nicht an da das meine externe Beschaltung alles Übernimmt (OP).)
Das Problem bei meinem Code ist leider, dass sich nur Um1 erhöht und Um2 nur wenn der Motor 1 (Um1) steht.
Ich bin mir sicher Ihr könnt mir da helfen!
Gruß Georg