Forum: Mikrocontroller und Digitale Elektronik [BASCOM] Berechnung läuft nicht richtig


von Thomas E. (tomedl)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich habe ein Problem mit meinem Programm. Es handelt sich hierbei um 
einen Bordcomputer für einen Roller, der hardwareseitig schon komplett 
aufgebaut ist. Allerdings funktioniert die Berechnung/Anzeige der 
Geschwindigkeit nicht. Ein Impuls vom Reed-Kontakt am Rad kommt aber, 
denn der Kilometerzähler zählt richtig hoch.

Kann da mal bitte wär drüberschauen? Der Code ist im Anhang.

Die Berechnung der Geschwindigkeit findet in folgenden Zeilen statt:
+ In der Hauptschleife unter dem Kommentar "Berechnung Geschwindigkeit"
+ In der INT0_isr
+ In der Timer0_isr
Umgewandelt werden die Werte in der Hauptschleife unter "Umwandlung 
Werte für LCD"

Besten Dank
Thomas

von Thomas E. (tomedl)


Lesenswert?

Keiner eine Idee?

von Profi :-) (Gast)


Lesenswert?

Frag mal in einer Stunde nochmal nach...

von Paul Baumann (Gast)


Lesenswert?

Du stoppst in der INT_0-ISR den Timer0. Der muß aber weiterlaufen, sonst
stimmt das Zeitregime nicht mehr und Dein "Time_umdrehung_n" wird nicht
weiter erhöht.

MfG Paul

von eProfi (Gast)


Lesenswert?

Time_umdrehung_ms   wird nirgens berechnet

Wenn alles funktioniert, kannst Du die Formel so umstellen, dass ein 
Befehl herauskommt.

Vermutlich musst Du noch ein bisschen mitteln, sonst hüpft die Anzeige.

von Gast (Gast)


Lesenswert?

Ich denke, dass in der INTo_isr der Befehl

Time_umdrehung_n = Time_umdrehung_ms

genau anders herum sein sollte.

Gruß

Rolf

von Thomas E. (tomedl)


Lesenswert?

Hallo!

Der letzte Eintrag von Gast hat Licht ins Dunkel gebracht - allerdings 
war dies nur ein weiterer Fehler, angezeigt wird am Display trotzdem 
keine geschwindigkeit. Nur der Kilometerstand erhöht sich.

Hat da noch jemand eine Idee, woran es liegen könnte?

LG

von Thomas E. (tomedl)


Lesenswert?

Irgendwie scheine ich blind zu sein und komme einfach nicht auf den 
Fehler drauf. Der Km.Stand zählt hoch, jedoch scheint die Berechnung 
und/oder Anzeige der Geschwindigkeit nicht zu funktionieren.
Kann da mal wer drüberschauen?

Gruß
Thomas

von Gast (Gast)


Lesenswert?

Weiß keiner was?

von Hans K. (Gast)


Lesenswert?

Hallo Thomas

hier ein Auszug aus der Bascom-Hilfe, wie man mit Single's in Interupt's
umgeht.

R12 – R15 are not saved. When you use floating point math in the
ISR(not recommended) you must save and restore R12-R15 yourself in the
ISR.

My_Isr:
Push R12  ‘ save registers
Push R13
Push R14
Push R15
Single = single + 1 ‘ we use FP
Pop R15   ‘ restore registers
Pop  R14
Pop R13
Pop R12
RETURN

möglicherweise bringt dich das einer Lösung näher.

Gruß Hans

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.