Benutze in der isr keinen Print. Immer so klein wie möglich halten, so wie es besserwessi auch schon geschrieben hat. Da habe ich mir schon viele Bugs mit gebaut.
Druckbare Version
Benutze in der isr keinen Print. Immer so klein wie möglich halten, so wie es besserwessi auch schon geschrieben hat. Da habe ich mir schon viele Bugs mit gebaut.
Ich sehe in Deinem ersten Prog zwei Probleme:
- Du dimensionierst die Variablen als Word und Long. Der µC braucht sehr lange um die zu berechnen. Versuche mit Bytes auszukommen.
- Du legst die LCD Anzeige in die Timer ISR. Die braucht zu lange für eine ISR. Das ist auch gar nicht nötig. Lege die LCD in die Hauptschleife und die Pulsabfrage in die ISR.
Grüße
Hallo,
ich hatte in einem Projekt auch mal ab und an das Phänomen, dass in einem Array, welches vom ADC gefüllt wird, Werte > 1023 waren.
Später hat sich herausgestellt, das dieser Fehler (und ein paar sporadische weitere) durch schlechtes Timing auftraten und dieses Timing wurde durch die LCD-Ausgabe "versaut"
hierbei stellte ich fest, dass der Bascom-Befehl für eine Ausgabe von 20 Zeichen ca. 23ms brauchte.
Da gerade beim programmieren und testen, mehr Debug-Ausgaben auch auf das Display gebracht wurden, produzierte ich die Fehler umso öfter.
Die Lösung für mich war dann:
- das Display im 8-Bit-Modus zu betreiben
- anstelle des lcd-Befehls eigene Routinen zu schreiben, welche die Ausgaben in einen 80 Zeichen-String legten (4*20Zeichen Display)
- Zeitlich gesteuert diesen 80-Zeichen-String an das Display zu senden.
im Gegensatz zu
20 Zeichen / 23ms erreichte ich
80 Zeichen / 3,3ms
damit waren meine Timingprobleme weg ;-)
Gruß BoGe-Ro
Displayprobleme konnten es bei mir nicht sein, da
Ein Datensatz angefortert wird,
Ein Datensatz kommt,
Nachgeschaut, ob er vollständig ist
und dann per LCD ausgegeben.
150 us gewartet
erst dann wird ein neuer Datensatz angefordert.
Nach dem der 14 Byte Datensatz angekommen ist, passiert über die UART nichts mehr.
Das Display kommt ja später wieder weg, ist nur zu Testzwecken angeschlossen.
Trotzdem ein berechtigter Hinweis.