Gast
#3939430
Moin und wünsche frohe Weihnachten zu haben/gehabt zu haben.
Ich bin langsam mit meinem Latein am Ende. Ich versuche ganz einfach ein
2x16 LCD Display an einem ATmega88 zu betreiben(*):
ATmega mit Quartz (14.7456MHz, 2 Kondensatoren, Pullup an der
RESET-Leitung, LCD Display über 4 Datenleitungen an PORTD und PB0
angeschlossen), Software ist im Wesentlichen Peter Fleurys LCD
Bibliothek (passend konfiguriert) und ein simples Programm:
main()
{
lcd_init();
lcd_clrscr();
lcd_puts("Hello");
set_sleep_mode(SLEEP_MODE_IDLE);
while (1)
sleep_mode();
}
Diese Programm gibt nur Müll auf dem Display aus. Ersetze ich
"lcd_puts("Hello");" durch einzelne "lcd_putc('H'); ...", steht "Hello"
auf dem Display.
Ich habe dann mal den externen Quarz durch den internen Takgenerator
ersetzt und die CLKDIV8 Fuse gelöscht, weil ich meinen Logic Analyzer
anschließen wollte und der ist nicht der Schnellste, der uC lief also
intern mit 1MHz und dann fiel mir auf, daß das Display flackerte.
Dann habe ich mein Oszilloskop mal an den E-Eingang des Displays
geklemmt und sehe, daß dort unregelmäßig die Leitung auf "1" gezogen
wird! Dann eine LED zusätzlich angesteuert (am Anfang von main() aus-
und kurz vor dem while(1) wieder angemacht) und die flackert deutlich
sichtbar!
Ich vermute nun, daß der uC einen Reset bekommt, nur ... von wem?
Hat jemand eine Idee, was den Reset verursachen könnte?
WDT ist aus (Fuse-Bit ist 1), Interrupts nutze ich auch nicht.
Wie gesagt: mit dem Latein am Ende ...
Josef
(*) Ist eigentlich ein Nebenkriegsschauplatz: eigentlich will ich mit
MPCM experimentieren um mehrere uC als Sensoren/Aktoren an einem
Raspberry Pi zu betreiben.