Forum: Compiler & IDEs GCC und ATMega 8 mit Display


von Karl T. (don_karlo)


Lesenswert?

Ich habe einen Timer in C - und auf ATMega 8 kompilert,das Prog läuft 
...
aber wenn ich das LCD abhänge - funktioniert es nicht mehr ...

Ich verwende Studio  4.19
mfg Karl

von eric (Gast)


Lesenswert?

Entweder (unsauber) du nimmst #ifndef und #endif noch weg, oder (sauber) 
du suchst die Einstellung -DF_CPU=16000000 und änderst die.

Keine Ahnung was du mit "Studio  4.19" meinst, das sollte sich aber in 
dem Makefile oder der Projektdatei/Einstellungen finden lassen.

von eric (Gast)


Lesenswert?

Oder du editierst deinen Post nochmal komplett um... Jetzt sind die 
Angaben viel zu vaage, um den Fehler ohne Kristallkugel einzugrenzen.

von Karl T. (don_karlo)


Lesenswert?

Danke !

Die Einstellung gefunden.

Aber eine andere Frage: Wenn ich das LCD abhänge -
dann läuft der Timer nicht mehr ...
Habe festgestellt wenn D7 vom Display dranhängt - dann läuft er wieder 
...
Was kann da sein?

mfg Karl

von Bernhard M. (boregard)


Lesenswert?

Fragst Du das Busy-Flag des Displays ab? Wenn ja, dann wartet die 
Software wahrscheinlich darauf...

(Das ist besser als Kreuzworträtsel hier, stochern im Nebel...)

von Kupferwurm (Gast)


Lesenswert?

Ab und zu funktioniert die Elektrik meines Autos nicht. Ich hab nen 
VW-Golf. Don Karlo, woran liegt das?

Du siehst, solche Fragestellungen führen ins Nichts.

Naja. Dann hast du irgendwas im Code das den Timer über den Port 
beeinflusst. Welchen Timer hast du denn überhaupt verwendet? Und an 
welcher Portleitung hängt D7? Poste mal den Code.

von Karl H. (kbuchegg)


Lesenswert?

Kupferwurm schrieb:

> Naja. Dann hast du irgendwas im Code das den Timer über den Port
> beeinflusst.

In dem Fall wahrscheinlich nicht.

Wenn ich mal diesen, seinen Thread, zugrunde lege
Beitrag "lcd.c - Testprogramm - Wie kompiliere ich das richtig?"
dann hat es Bernhard M. schon getroffen.

Seine LCD Routinen werten das Busy Flag aus und somit wartet das 
lcd_init bis zum St. Nimmerleinstag, bis ein nicht vorhandenes LCD dann 
endlich "ready" wird und es mit der Initialisierung des Programms dann 
endlich weitergeht und irgendwann dann der Timer initialisiert wird, die 
Interrupts freigegeben und die Hauptschleife zu arbeiten anfängt.

Ist halt immer ein Kreuz, wenn jemand Code benutzt, ohne ihn wenigstens 
rudimentär in den Grundzügen zu verstehen.

von Ingo (Gast)


Lesenswert?

Das Problem lässt sich lösen indem du nicht das Busy-Flag abfragst, 
sondern pauschal wartest. Ich habe beide Versionen einmal ausprobiert. 
Die Zeitersparnis mit Busy-Flag ist wirklich klein, so 5us. Das sind 
selbst @16MHz nur 80 Takte. Also in den meisten Fällen warte ich 
pauschal, da es meist sowieso in einem "Zeit spielt keine Rolle" 
-abschnitt im Programm abgearbeitet wird.



Ingo

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.