Eine LCD Ansteuerung zu Debuggen ist kein schöner Job, besonders wenn
man noch wenig Erfahrung mit Elektronik/µCs hat und einem die richtigen
Werkzeuge fehlen. IMHO ist die LCD-Ansteuerung die erste größere Hürde
beim µC-Einstieg, weil viel Eigeninitiative gefordert ist. Die
Ferndiagnose und Hilfe ist eigentlich nur bei offensichtlichen
Schnitzern möglich (falsche Verkabelung o.ä.).
1 | int main (void) {
|
2 | // POS #1
|
3 |
|
4 | // Initialisierung des LCD
|
5 | // Nach der Initialisierung müssen auf dem LCD vorhandene schwarze Balken
|
6 | // verschwunden sein
|
7 |
|
8 | lcd_init();
|
9 |
|
10 | // Text in einzelnen Zeichen ausgeben
|
11 | lcd_data( 'T' );
|
12 | lcd_data( 'e' );
|
13 | lcd_data( 's' );
|
14 | lcd_data( 't' );
|
15 |
|
16 | // POS #2
|
Bei deinem Testprogramm könntest du an POS #1 eine Wartezeit einlegen,
damit sich das LCD nach dem Einschalten der Schaltung korrekt selbst
initialisieren kann, ohne dass es durch das nachfolgende lcd_init();
gestört wird. Ideal wäre es, wenn die Wartezeit z.B. mit einer Debug-LED
an einem µC-Pin angezeigt wird.
Wenn deine Spannungsversorgung eher schwachbrüstig für die Schaltung
dimensioniert ist, solltest du mal versuchen die Zahl der Verbraucher in
deiner Schaltung zu verringern. Ein nicht zu unterschätzender
Verbraucher kann das Backlight des LCD sein. Eine Beurteilung der
Schaltung kannst du bekommen, wenn du den Schaltplan zeigst.
Damit du siehst ob das LCD reagiert, ist es sinnvoll ein kleineres
Programm zu haben, also im Prinzip eins bis POS #2 und dann eine leere
Endlosschleife. Dann kannst du auch am Kontrast drehen bis hoffentlich
das "Test" zu sehen ist.
Beim Wechsel zwischen Flashen und Testen habe ich mir angewöhnt, die
Schaltung komplett von der Versorgung zu nehmen. Damit kann man
unerwünschte Effekte die vom ISP-Programmieren kommen ausschalten.