Forum: Mikrocontroller und Digitale Elektronik C18_PIC18Fx_Code läuft nicht


von danny_678 (Gast)


Angehängte Dateien:

Lesenswert?

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.

von John Doe (Gast)


Lesenswert?

1
volatile unsigned short ERG;
1
ERG  = (float)AN0_DC * (AN0 - AN0_offset);

von Daniel (Gast)


Lesenswert?

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 ?

von Teo D. (teoderix)


Lesenswert?

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....

von Daniel (Gast)


Lesenswert?

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.

von Bernd (Gast)


Lesenswert?

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

von Daniel (Gast)


Lesenswert?

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.

von Oliver S. (oliverso)


Lesenswert?

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

von Daniel (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.