06.08.2004, 15:44
Hallöle
Ich beschäftige mich erst seit ca. vier Wochen mit Mikrocontroller und habe deshalb Timer-Neulingsproblem mit Bascom.
Es sollen einzelne Pins eines Ports nacheinander ein- und wieder ausgeschaltet werden. Das ganze dient der Ansteuerung von Servos, die als Stellmotor nach einem Tastendruck lediglich zwei bestimmte Positionen langsam anfahren sollen.
Ich habe schon alles mit For..Next – Schleifen zum laufen gebracht, was mir aber mit 3,5µs/Schleife schlichtweg zu lange dauert, da das Signal um nur 110µs verkürzt werden kann (Stellvorgang dauert nur 600ms was mir zu kurz ist). Deshalb brachte mich ein Bekannter auf die Idee die Internen Timer zu nutzen. So weit so gut alles mal in den Rechner getippert und den Versuch einer Simulation unternommen. Nach dem Start der Simulation bleibt das Prog bei „loop until...“ stehen und Timer1 hat angeblich den Wert „0“. Hat jemand eine Idee was ich falsch mache? – Im Forum habe ich leider keinen vergleichbaren Thread gefunden.
Hier mal ein Auszug aus meinem Programm:
$regfile „2313def.dat“
$crystal = 10000000
Config Timer1 = counter, edge = rising, prescale = 8
Config portb = output
Dim a(2) as Word
Begin1:
Timer1 = 0 ‘Timer auf “0” zurücksetzen
Set pind.0 ‘Pind.0 logisch 1
Do
loop until timer1 = a(1)
reset pind.0 ‘pind.0 logisch null
.
.
.
Goto begin1: ‘letzter Programmpunkt
MfG der E-Fan
Ich beschäftige mich erst seit ca. vier Wochen mit Mikrocontroller und habe deshalb Timer-Neulingsproblem mit Bascom.
Es sollen einzelne Pins eines Ports nacheinander ein- und wieder ausgeschaltet werden. Das ganze dient der Ansteuerung von Servos, die als Stellmotor nach einem Tastendruck lediglich zwei bestimmte Positionen langsam anfahren sollen.
Ich habe schon alles mit For..Next – Schleifen zum laufen gebracht, was mir aber mit 3,5µs/Schleife schlichtweg zu lange dauert, da das Signal um nur 110µs verkürzt werden kann (Stellvorgang dauert nur 600ms was mir zu kurz ist). Deshalb brachte mich ein Bekannter auf die Idee die Internen Timer zu nutzen. So weit so gut alles mal in den Rechner getippert und den Versuch einer Simulation unternommen. Nach dem Start der Simulation bleibt das Prog bei „loop until...“ stehen und Timer1 hat angeblich den Wert „0“. Hat jemand eine Idee was ich falsch mache? – Im Forum habe ich leider keinen vergleichbaren Thread gefunden.
Hier mal ein Auszug aus meinem Programm:
$regfile „2313def.dat“
$crystal = 10000000
Config Timer1 = counter, edge = rising, prescale = 8
Config portb = output
Dim a(2) as Word
Begin1:
Timer1 = 0 ‘Timer auf “0” zurücksetzen
Set pind.0 ‘Pind.0 logisch 1
Do
loop until timer1 = a(1)
reset pind.0 ‘pind.0 logisch null
.
.
.
Goto begin1: ‘letzter Programmpunkt
MfG der E-Fan