Abend zusammen. Ich bin gerade dran das Avr Tutorial durch zu arbeiten, und bin bei dem Programm Uhr http://www.mikrocontroller.net/articles/AVR-Tutorial:_Uhr auf folgendes Problem gestoßen: Dass Display zeigt gar nichts an, es wird nur ein schwarzer Balgen angezeigt, als wäre das Display nicht Initialisiert. Ich habe dass Programm schon durch den Avr Simulator laufen lassen, und es scheint alles zu funktionieren, soweit ich dass beurteilen kann. Das Display ist dieses Hier:http://www.reichelt.de/Hintergrund-gruen/LCD-162F-LED/3/index.html?&ACTION=3&LA=2&ARTICLE=31655&GROUPID=3005&artnr=LCD+162F+LED Ich nutze noch folgende Dinge: Eigenbau Board streng nach Tutorial mit ATmega 8 Original Atmel ISP MK2 AVR Studio 4 (Das 6.1 hab ich auch, ist mir aber für den Anfang zu überfrachtet) Was ich noch zu meinem Problem hinzufügen muss: Die anderen Test Programme liefen alle auf meinem Controller. Auch dass Programm aus dem LCD Tutorial lief einwandfrei, und auf meinem LCD erschien der Text TEST. Wenn jemand eine Zündende Idee hat, wäre ich sehr dankbar. Ich Suche da jetzt schon seit Wochen dran, und seh den Wald vor lauter Bäumen nicht mehr. Gruss Jens
Gast
#3548745
>Eigenbau Board streng nach Tutorial mit ATmega 8 Welche Taktfrequenz? >Dass Display zeigt gar nichts an, es wird nur ein schwarzer Balgen >angezeigt, als wäre das Display nicht Initialisiert. Dann sind entweder die delays fürs Display zu kurz oder die Pinbelegung stimmt nicht.
Mit 4MHZ, externer Oszillator. Den habe ich in den Fuses auch angewählt. Kann die Pin belegung trotzdem falsch sein, obwohl das Display in einem anderen Programm funktioniert?
Gast
#3548760
>Kann die Pin belegung trotzdem falsch sein, obwohl das Display in einem >anderen Programm funktioniert? Sicher, dazu müsste man aber deine Pinbelegung wissen und auch mal das komplette Programm sehen. Alles andere ist nur raten.
Pinnummer LCD Bezeichnung Anschluss 1 VSS GND (beim TC1602E: VCC) 2 VCC +5 V (beim TC1602E: Gnd) 3 VEE GND oder Poti 4 RS PD4 am AVR 5 RW GND 6 E PD5 am AVR 7 DB0 nicht angeschlossen 8 DB1 nicht angeschlossen 9 DB2 nicht angeschlossen 10 DB3 nicht angeschlossen 11 DB4 PD0 am AVR 12 DB5 PD1 am AVR 13 DB6 PD2 am AVR 14 DB7 PD3 am AVR 15 A Vorsicht! Meistens nicht direkt an +5 V abschließbar, sondern nur über einen Vorwiderstand, der an die Daten der Hintergrundbeleuchtung angepasst werden muss. 16 K GND Dass ist die Pinbelegung die ich verwendet habe, ist die aus dem Tutorial und stimmt so weit ich gesehen habe exakt mit der aus dem Datenblatt des Displays über ein. Dass Programm ist direkt in dem ersten Link den ich im Startpost gepostet habe.
Jens Naumann schrieb: > Dass ist die Pinbelegung die ich verwendet habe, ist die aus dem > Tutorial und stimmt so weit ich gesehen habe exakt mit der aus dem > Datenblatt des Displays über ein. Gemeint ist wohl eher, an welche AVR Pins du das LCD angeschlossen hast und ob das mit der im Programm verwendeten übereinstimmt. Wenn du ein Testprogramm hast, in dem das LCD funktioniert, dann sehe ich 2 gute Möglichkeiten Entweder vergleichen, worin sich die beiden in den LCD Routinen unterscheiden. Oder aus dem funktionierenden Programm das Uhrenprogramm entwickeln. Letzters ist keine so schlechte Übung, denn mit Copy&Paste Programmierung und sich daran erfreuen, dass das Programm welches du gerade kopiert hast, lernst du sowieso nicht sehr viel. Wenn du hingegen das funktionierende Programm um die Timersachen und die andere Ausgabe erweiterst, musst du dich zumindest ein wenig mit dem Code beschäftigen, den du gerade kopierst.
Die Lcd Routinen sind in beiden Programmen die gleiche, dass ist ja dass Komische. Ich sehe nur im moment absolut nicht, wo der Fehler im Hauptprogramm liegen könnte, bzw wo da noch anpassungen notwendig sind. Klar lerne ich nichts durch Copy und Paste, allerdings bekomme ich so ein wenig Routine im Umgang mit dem Avr Studio, und sehe so schon mal den Aufbau von einem funktionierenden Programm.
Jens Naumann schrieb: > Die Lcd Routinen sind in beiden Programmen die gleiche, Irgendetwas MUSS aber anders sein. Sonst würde es ja funktionieren.
Fang halt mal mit diesem 'abgespeckten' Uhrenprogramm an
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
Initialisiert das LCD?
Danke dir Karl Heinz, mir ist aufgefallen, wenn ich in dein Programm oder das Uhren Programm, unter Main noch den Satz: ldi temp1, 0xFF out DDRD, temp1 Einfüge, funktioniert das Display. Das Uhren Programm aus dem Tut funktioniert so auch, wenn ich den Satz noch einfüge. Es zählt so auch auch. Einziges Problem: Das Display gibt die Zahlen so aus: 0J:0J:0J Das Display zählt aber trotzdem hoch. Nach zehn Sekunden steht drauf 0J:0J:1J Edit: Das Display zeigt jetzt richtig an, hat alles geklappt. Danke noch mal an Karl Heinz, dein Tipp die Programme zu vergleichen hat mich weiter gebracht. Manch mal denkt man vor lauter lauter nicht an die einfachsten Dinge. Gruß Jens
Jens Naumann schrieb: > Danke dir Karl Heinz, > > mir ist aufgefallen, wenn ich in dein Programm oder das Uhren Programm, > unter Main noch den Satz: > > ldi temp1, 0xFF > out DDRD, temp1 Hmm. Das sollte eigentlich nicht notwendig sein. Denn lcd_init beginnt so
1 | |
2 | |
3 | |
4 | |
setzt sich also selbst die Pins auf Ausgang. kontrollier mal in deinen LCD-Routinen ob am Anfang LCD_DDR richtig gesetzt ist.
Also ich habe diese Routine verwendet:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.