-
probier mal statt
das hier zu schreiben:
Kann evtl sein, dass er bei LCD den Timerwert als Ascii-Code interpretiert und dazu das Zeichen ausgibt. Mit dem STR wird der Wert so wie er ist als String ausgegeben. Wenn dass nicht geht, müsste der Umweg über
Code:
text = STR(Timer1)
LCD text
laufen. Wobei text natürlich ne Stringvariable mit ausreichender Länge sein muss. (Bascom tut sich oft schwer, mehrere Schritte auf einmal zu machen)
-
geht ebenfalls nich.
Ich habe es mit integer und word probiert. geht trotzdem nich
Code:
$regfile "m8def.dat"
$crystal = 7000000
$sim
Config Timer1 = Timer , Prescale = 1
Config Int0 = Rising
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.1 , Rs = Portd.0
Enable Interrupts
Enable Int0
On Int0 Sprung:
Config Lcd = 16 * 2
Config Portd.1 = Output
Config Portd.7 = Output
Config Portd.6 = Output
Config Portd.5 = Output
Config Portd.4 = Output
Dim Text As Word
Text = Timer1
Cls
Start Timer1
Do
Loop
Sprung:
LCD text
Timer1 = 0
Return
-
Naja die Zuweisung Text = Timer1 muss auch unmittelbar vor der Ausgabe erfolgen, sonst ändert der Wert sich nie.
Falls du das Programm direkt auf nem AVR testest und nicht im Simulator, muss die $sim wieder raus.
-
also jetzt weis ich gar nich mehr weiter!!
Zuerst ging es und dann kommen 5 zahlen, dann vier drei, zwei, eins null und dann gar nich mehr. ich weis nich was jetzt schon wieder los is.
Code:
$regfile "m8def.dat"
$crystal = 7000000
$sim
Config Timer1 = Timer , Prescale = 1
Config Int0 = Rising
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.1 , Rs = Portd.0
Enable Interrupts
Enable Int0
On Int0 Sprung:
Config Lcd = 16 * 2
Config Portd.1 = Output
Config Portd.7 = Output
Config Portd.6 = Output
Config Portd.5 = Output
Config Portd.4 = Output
Dim Text As Word
Cls
Start Timer1
Do
Loop
Sprung:
Cls
Text = Timer1
Lcd Text
Timer1 = 0
Return
-
komisch auf einmal läuft es wieder mit dem Grundprog. Vielen Dank für die tolle Hilfe
Code:
$regfile "m8def.dat"
$crystal = 7000000
$sim
Config Timer1 = Timer , Prescale = 1
Config Int0 = Rising
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.1 , Rs = Portd.0
Enable Timer1
Enable Interrupts
Enable Int0
On Int0 Sprung:
Config Lcd = 16 * 2
Config Portd.1 = Output
Config Portd.7 = Output
Config Portd.6 = Output
Config Portd.5 = Output
Config Portd.4 = Output
Start Timer1
Cls
Do
Loop
Sprung:
Cls
Lcd Timer1
Timer1 = 0
Return
-
Bewegen sich diese Zahlen im Bereich von 0 - 65535?
Ist Crystal wirklich 7MHz? Vorher warens noch 8.
Hinter "On Int0 Sprung:" ist der Doppelpunkt zu viel.
Hm also rein von der Programmlogik her sollt es doch so sein, dass das Display die Zeit zwischen 2 Tastendrücken anzeigt.
Und von der Programmierung her sollts auch gehen.
Wo jetzt noch das Problem liegen kann, wäre beim Taster/Schalter. Wie sieht denn die Beschaltung aus? Hab da den Verdacht, dass der Taster nicht entprellt ist. D.h. du drückst drauf, der Kontakt prellt und löst damit mehrere Interrupts hintereinander aus. Da müsste man das ganze also noch entprellen. Das könnte man per Hardware (ergibt aber ne Verzögerung) oder per Software lösen, was aber eine Art "Refraktärzeit" nach sich zieht, also einen Zeitraum nach einer Auslösung, wo keine erneute Auslösung erkannt wird.
Du kannst ja mal ein zweites Programm so bauen, dass "Sprung" eine Variable hochzählt und die Variable mal anzeigen lassen. Wenn du 1x auf den Taster drückst, dürfte die Variable auch nur um 1 hochzählen.
-
Na dann passts ja *g*
Also wenns doch noch Probleme gibt, einfach melden.
-
ich mache das nich mit n taster, sondern greife ein pwm signal vom empfänger eines Empfängers vom Modellbau ab. Deswegen brauche ich einen so hohen timer
Code:
$regfile "m8def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.1 , Rs = Portd.0
Config Lcd = 16 * 2
Config Lcdbus = 4
Config Timer1 = Timer , Prescale = 1
Config Int0 = Rising
Enable Interrupts
Enable Int0
On Int0 Sprung:
Config Portd.1 = Output
Config Portd.7 = Output
Config Portd.6 = Output
Config Portd.5 = Output
Config Portd.4 = Output
Start Timer1
Cls
Do
Loop
Sprung:
Cls
Lcd Timer1
Timer1 = 0
Return