HD44780 atmega168

#2449260
Lesenswert?

Hallo zusammen,

ich weiss, dass Thema gab es hier schon tausend Mal, aber ich habe 
leider nichts passendes dazu gefunden.

Also ich versuche das Display WD-C2704M unter dem uc Atm 168 zum laufen 
zu kriegen.

Zum Initialisieren und Testen mag ich den Code von Peter Fleury 
verwenden (siehe Anhang). Das Display läuft unter einem Atm 32 
problemlos.

Beim Ausführen des Programms auf dem Atm 168 bleiben die zwei schwarzen 
Balken auf dem LCD Display.

Liegt es daran, dass die zwei Boards nicht miteinander kompatibel sind 
(also vermutlich der Speicher).

Was müsste ich am Code ändern, damit es funktioniert?

Vielen Dank schonmal für alle Tipps.

Gruss
Christoph
Angehängte Dateien:
#2449292
Lesenswert?

Karl Heinz Buchegger schrieb:
> Christoph G. schrieb:
>
>
>> Liegt es daran, dass die zwei Boards nicht miteinander kompatibel sind
>> (also vermutlich der Speicher).
>
> Eher: vermutlich die Taktfrequenz


Wegen der Taktfrequenz habe ich alle Delays mal um Faktor 10 
vergrössert, hat aber nichts verändert.


Als Taktfrequenz habe ich auf dem Atm168 und auf dem Atm32 1 MHz 
eingestellt.
#2449317
Lesenswert?

Klaus Wachtler schrieb:
> Wie?

Wie ich die Delays hochgesetzt habe? Auf zwei Weisen:
1) überall delay(...) durch delay(...0) ersetzt
2) #define delay(us)  _delayFourCycles( ( ( 1*(XTAL/4000) )*us)/1000 ) 
durch #define delay(us)  _delayFourCycles( ( ( 10*(XTAL/4000) )*us)/1000 
) ersetzt

Natürlich unabhängig voneinander getestet. Faktor 100 habe ich auch 
schon probiert.
#2449338
Lesenswert?

Klaus Wachtler schrieb:
> nein, ich meinte wie du die Frequenz gesetzt hast - bzw. ob es sicher
> ist, daß er mit dieser Frequenz läuft.


Achso, nein da bin ich mir nicht sicher. Habe mich nicht getraut die 
Fuses beim Atm 168 zu setzen.

Bei einem Testprogramm habe ich für einen 8Bit-Timer Durchlauf mit einem 
Prescaler von 1024 die Zeit von etwa 950 ms gemessen. Das würde nach 
meinen Berechnungen etwa 0,25 MHz entsprechen, was mich doch etwas 
irritiert.


Edit: In AVR Studio wird unter Fuses wenn man ´Read´ drückt `Ext. 
Crystal Osc. 8.0 -    MHz; Start-up time PWRDWN/RESET: 16K CK/...` 
angezeigt.
#2449378
Lesenswert?

Christoph G. schrieb:

> Achso, nein da bin ich mir nicht sicher. Habe mich nicht getraut die
> Fuses beim Atm 168 zu setzen.

Wenn du die Fuses nicht angerührt hast, dann läuft der auch mit 1Mhz

(Wenn du wieder mal das Problem hast, machs nicht so kompliziert. LED im 
Sekundentakt blinken lassen mittels

  while( 1 ) {
    LEd ein
    _delay_ms( 1000 );
    Led aus
    _delay_ms( 1000 );
  }

die 1 Sekunde kannst du auch so ganz gut schätzen. Die Alternativen die 
du hast, 2 Mhz, 4 Mhz, 8 Mhz, sind davon alle soweit entfernt, das 
merkst du auch mit freiem Auge, ob die Leuchtphase der LED eine ganze 
oder eine halbe (oder eine viertel oder achtel) Sekunde ist.

Wenn F_CPU mit der tatsächlichen Taktfrequenz übereinstimmt und die 
Compileroptimierung auf -Os steht, dann stimmt die 1 Sekunde ziemlich 
gut. Auf ein paar Hunderstel Sekunden Abweichung kommt es dabei nicht 
an.


F_CPU hast du in den Project Options den richtigen wert gegeben?
Die Optimierung des Compilers ist eingeschaltet?

> Edit: In AVR Studio wird unter Fuses wenn man ´Read´ drückt `Ext.
> Crystal Osc. 8.0 -    MHz; Start-up time PWRDWN/RESET: 16K CK/...`
> angezeigt.

Bei wem?`
M168 oder M32
#2449403
Lesenswert?

Karl Heinz Buchegger schrieb:
> Wenn du die Fuses nicht angerührt hast, dann läuft der auch mit 1Mhz
>
> (Wenn du wieder mal das Problem hast, machs nicht so kompliziert. LED im
> Sekundentakt blinken lassen mittels
>
>   while( 1 ) {
>     LEd ein
>     _delay_ms( 1000 );
>     Led aus
>     _delay_ms( 1000 );
>   }

Ach logisch, den Wald vor ganzen Bäumen nicht gesehen...Danke!


Karl Heinz Buchegger schrieb:
> F_CPU hast du in den Project Options den richtigen wert gegeben?
> Die Optimierung des Compilers ist eingeschaltet?

Das wars, da waren Fehler drin, schon beim Device, statt 168 stand da 
128 und die Optimierung war auch falsch. Vielen Dank Karl Heinz! Das 
hätt ich alleine wohl nie gefunden, habe an den falschen Stellen 
gesucht...Schönen Abend noch!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren