Zunächst erst einmal vielen Dank für Eure Antworten und Tipps!
Frank wrote:
>so wie ich das sehe musst Du im init LCD_DDR = 0x1F schreiben, sonst ist
>PD4 nicht auf Ausgang geschaltet.
Stefan wrote:
>Es ist etwas ungeschickt in der Source, aber Output für PD4 einstellen
>macht die Zeile
> LCD_DDR_RS |= (1<<LCD_RS); // RS-Port auf Ausgang
Das ist nicht ungeschickt, sondern so gewollt um die Ports flexibel zu
gestalten, so, wie von mir geplant.
Es ist möglich die Leitungen Daten, RS und Enable an getrennten Ports zu
betreiben.
Stefan wrote:
>Machen die nicht sichtbaren Codeteile (insbesondere die PWM
>Initialisierung) noch was mit DDRC oder PORTC? Vielleicht machen die die
>lcd_int() für die EN Leitung unwirksam.
Ich habe im Moment, wegen des Problems, den Code minimiert. Die PWM wird
nicht genutzt und auch nicht initialisiert. Außerdem ist PWM an PortD
und daher wollte ich mit Enable an PortC ausweichen.
Meine main sieht so aus, das nur etwas am Display angezeigt werden soll:
1 | main.c:
|
2 |
|
3 | uint16_t Spg=0;
|
4 | char Buffer[10]; // Buffer für LCD Umwandlung ascii to integer
|
5 |
|
6 | lcd_init(); // initialisieren von Display
|
7 | set_cursor(1,0); // Cursor setzen: Zeile 1, Stelle 0
|
8 | lcd_string("Hallo Welt"); // schreiben
|
9 |
|
10 | for(;;) // Programmschleife
|
11 | {
|
12 |
|
13 | Spg = Messung(Spannung); // Unterprogramm Standart ADC-Funktion, ohne DDR und PORT Anweisung
|
14 | itoa(Spg,Buffer,10); // umwandeln in lesbare Zahl am Display
|
15 | set_cursor(2,0); // Cursor setzen: Zeile 2, Stelle 0
|
16 | lcd_string(Buffer); // Ausgabe der Zahl
|
17 |
|
18 | }
|
btw, wenn ich >Build starten< auswähle, kommt folgende Warnung:
warning: implicit declaration of function 'itoa'
beim nächsten Build-Vorgang ist die Warnung wieder weg. Wie soll ich
damit umgehen? Ignorieren?
Und noch was PortC Pin C5 habe ich vorher als Digit Out benutzt und das
funktionierte auch. Jetzt brauche ich die PWM-Ansteuerung und habe daher
D5 und C5 tauschen wollen. Heißt: C5 ist nicht defekt.