Hallo liebes Forum, kurz ab, ich bin PIC Hobbyprogrammierer und habe mir dies und jenes abgeschaut, selbst angelernt und ausprobiert. Aktuell hänge ich an der Programmierung vom E-Kart. Das Programm läuft soweit ich prüfen konnte, jedoch macht mir neuerdings das 2x20 LCD jetzt Probleme. Es lief vorher, aber irgendwie ist durch weitere Programmierung der Wurm jetzt reingekommen und ich kann die Werte nicht mehr visualisieren Das Programm in MPLAB und C18 Compiler macht im Moment grob folgendes: Geschwindigkeit messen Batteriespannung messen Licht messen Beleuchtung anschalten Bremsepedal überwachen Bremsleuchte einschalten 4x Interrupt on change einlesen Fahrstrom messen Gaspedal ca. 1..5 V einlesen und PWM mit Rampe entspr. erhöhen 1x PWM wird für H-Brücke und andere Ausgänge für Freigabe/ sperrren der MOSFET genommen. Die MOSFET Ausgänge sind im Code aktuell nicht drin, funktionieren aber. Habt ihr eine Idee, woran die Ausgabe auf dem LCD hängen kann? Wenn ich Gas (AN0) drücke (verschiedene Werte) wird plötzlich "P767" angezeigt beispielsweise. Vorher lief das 1a. Vielen Dank.
1 | volatile unsigned short ERG; |
1 | ERG = (float)AN0_DC * (AN0 - AN0_offset); |
John Doe schrieb: > 1volatile unsigned short ERG; > > 1ERG = (float)AN0_DC * (AN0 - AN0_offset); Und? Müsste eine 1:1 Kopie von meinem Code sein. Was soll mit das bitte sagen ?
Daniel schrieb: > Und? Müsste eine 1:1 Kopie von meinem Code sein. Was soll mit das bitte > sagen ? Na was den schon, das Du dir diese Stell, noch mal genauer ansehen solltest! Dein Spiel heißt "Wo ist Walter" und Er hat ihn dir eingekreist....
Hallo zurück, Ich konnte den ersten Fehler einkreisen. Ein deaktivieren und aktivieren von Interrupts in den ISR sollte scheinbar tunlichst unterlassen werden. Durch die Erweiterung meines Programmes in den betroffenen ISR kam es wohl jetzt dadurch zur Problemen. Jetzt friert der ANO wert auf dem Display nach kurzer Zeit ein, obwohl andere Werte aktualisiert werden. Die Main Routine wird anständig durchlaufen mit einer visualisierten LED und die Display Werte werden ja auch angezeigt. Warum wird AN0 nicht aktualisiert? Danke.
Ohne jetzt tiefer einzusteigen: Du definierst ein unsigned short mit Namen ERG. Dem weist du einen float-Wert zu. Alles ist erlaubt, aber nicht alles ist gut. Weist du genau, was dein Compiler in diesem Fall macht? Bernd
Oh, das stimmt natürlich 🙈. Nicht korrekt und nicht gut. Danke, ich habe das geändert. AN0 ist m.M. korrekt definiert und wird nicht in der ISR verwendet. Warum friert der Wert ein? AN0 wird doch auf laufend aktualisiert? Ideen ? Danke.
Bernd schrieb: > Ohne jetzt tiefer einzusteigen: Du definierst ein unsigned short mit > Namen ERG. Dem weist du einen float-Wert zu. Alles ist erlaubt, aber > nicht alles ist gut. Weist du genau, was dein Compiler in diesem Fall > macht? Was genau sollte den da unklar sein? Oliver
Oliver S. schrieb: > Bernd schrieb: > >> Ohne jetzt tiefer einzusteigen: Du definierst ein unsigned short mit >> Namen ERG. Dem weist du einen float-Wert zu. Alles ist erlaubt, aber >> nicht alles ist gut. Weist du genau, was dein Compiler in diesem Fall >> macht? > > Was genau sollte den da unklar sein? > Oliver Nichts ist unklar, wurde nun doch schon geklärt. Warum friert AN0 ein wäre jetzt das Thema. Gibt es noch Hinweise ?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.