2strokePino
03.07.2009, 19:44
Hallihallo RN Community,
ich versuche mir derzeit einen dzm und tacho für meine cross mit einem mega8 zu bauen. als hardware habe ich das myavr board mit lpt anschluss.
zur ausgabe habe ich ein 16*2 display.
ich habe in bascom einen code geschrieben, vermute da aber noch nen haufen bugs, wo ich aber einfach nicht weiter weiß, da ich erst durch den elektrotechnik leistungskurs in der schule zur elektronik kam. die ganze mikrocontrollerei habe ich mir soweit möglich dann selbst versucht beizubringen.
$regfile "m8def.dat"
$crystal = 3686400
Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portb.0 , Rs = Portb.1
Config Lcdpin = 16 * 2
Config Portb = Output
Dim Umin As Integer 'Drehzahl
Dim Speed As Integer 'Geschwindigkeit
Speed = 113
Dim Numa As Integer 'zahl1 für berechnung
Dim Numb As Integer 'zahl2 für berechnung
Config Int0 = Low Level 'int0
Enable Int0
On Int0 Isrcounter
Config Timer1 = Timer , Prescale = 64 'timer1
Enable Timer1
On Timer1 Isrtimer
Enable Interrupts
Timer1 = 36735
Do
'Waitms 100 'Display
'Cls
Locate 1 , 1
Lcd "Drehzahl:"
Locate 1 , 11
Lcd Umin
Locate 2 , 1
Lcd "Speed: "
Locate 2 , 8
Lcd Speed
Locate 2 , 11
Lcd "Km/h"
Loop
End
Isrcounter:
Incr Numa 'Zähler durch Interrupt
Return
Isrtimer: 'Timer, alle 500ms Überlauf
Cls
Timer1 = 36735
Numb = Numa * 2
Umin = Numb * 60
Numa = 0
Numb = 0
Return
ich hatte mir gedacht durch einen timer in 500ms die anzahl der impulse zu zählen und dann auszugeben.
das display funktioniert und zeigt mir auch was an. aber ich weiß noch nicht so recht wie ich alles beschalten mus.
Da ich das signal gern induktiv, um das zündkabel, abnehmen möchte, tun sich mir da noch einige rätsel auf aber das wird schon noch werden. mir wäre jetzt erst einmal die software wichtig, da wenn ich dann int0 mit der masse verbinde und wieder davon weg gehe, wo ja ne fallende flanke entsteht, zeigt mir das display auch etwas an aber halt riesige zahlen und zum teil auch negative.
nach recht kurzer zeit scheint sich der atmel dann aufzuhängen weil das display dann nur noch wirres, schnell wechselndes zeug anzeigt.
meine vermutung es liegt an den langen isr, aber ich weiß nicht wie ich das besser machen soll.
es wäre toll wenn mir hier geholfen werden könnte, ich bin halt einfach noch ein verdammt blutiger anfänger.
danke im vorraus
ich versuche mir derzeit einen dzm und tacho für meine cross mit einem mega8 zu bauen. als hardware habe ich das myavr board mit lpt anschluss.
zur ausgabe habe ich ein 16*2 display.
ich habe in bascom einen code geschrieben, vermute da aber noch nen haufen bugs, wo ich aber einfach nicht weiter weiß, da ich erst durch den elektrotechnik leistungskurs in der schule zur elektronik kam. die ganze mikrocontrollerei habe ich mir soweit möglich dann selbst versucht beizubringen.
$regfile "m8def.dat"
$crystal = 3686400
Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portb.0 , Rs = Portb.1
Config Lcdpin = 16 * 2
Config Portb = Output
Dim Umin As Integer 'Drehzahl
Dim Speed As Integer 'Geschwindigkeit
Speed = 113
Dim Numa As Integer 'zahl1 für berechnung
Dim Numb As Integer 'zahl2 für berechnung
Config Int0 = Low Level 'int0
Enable Int0
On Int0 Isrcounter
Config Timer1 = Timer , Prescale = 64 'timer1
Enable Timer1
On Timer1 Isrtimer
Enable Interrupts
Timer1 = 36735
Do
'Waitms 100 'Display
'Cls
Locate 1 , 1
Lcd "Drehzahl:"
Locate 1 , 11
Lcd Umin
Locate 2 , 1
Lcd "Speed: "
Locate 2 , 8
Lcd Speed
Locate 2 , 11
Lcd "Km/h"
Loop
End
Isrcounter:
Incr Numa 'Zähler durch Interrupt
Return
Isrtimer: 'Timer, alle 500ms Überlauf
Cls
Timer1 = 36735
Numb = Numa * 2
Umin = Numb * 60
Numa = 0
Numb = 0
Return
ich hatte mir gedacht durch einen timer in 500ms die anzahl der impulse zu zählen und dann auszugeben.
das display funktioniert und zeigt mir auch was an. aber ich weiß noch nicht so recht wie ich alles beschalten mus.
Da ich das signal gern induktiv, um das zündkabel, abnehmen möchte, tun sich mir da noch einige rätsel auf aber das wird schon noch werden. mir wäre jetzt erst einmal die software wichtig, da wenn ich dann int0 mit der masse verbinde und wieder davon weg gehe, wo ja ne fallende flanke entsteht, zeigt mir das display auch etwas an aber halt riesige zahlen und zum teil auch negative.
nach recht kurzer zeit scheint sich der atmel dann aufzuhängen weil das display dann nur noch wirres, schnell wechselndes zeug anzeigt.
meine vermutung es liegt an den langen isr, aber ich weiß nicht wie ich das besser machen soll.
es wäre toll wenn mir hier geholfen werden könnte, ich bin halt einfach noch ein verdammt blutiger anfänger.
danke im vorraus