Guten Abend,
ich habe ein Projekt aus einem Buch mit einem Atmega32a. Es scheint auch
soweit zu funktionieren, aber kann die Ausgabe am display nicht sehen.
ich bin der Meinung das ich alles richtig angeschlossen habe. Und den
Kontrast habe ich auch schon verstellt.
das einzige das ich mir vorstellen kann ist das bei der
"LCD_display_on_Port_C.h" oder in der main.c irgendetwas falsch ist.
kann mir bitte jemand weiterhelfen warum mir mein display keinen Wert
bzw. anzeigt?
"LCD_display_on_Port_C.h"
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
Ich muss bei jedem IC ein Abblock-C von VCC nach GND anschliessen.
No Y. schrieb:> Also auf dem obersten Bild ist der Kontrast schonmal falsch..> Der muss so sein das du gerade keine schwarzen Kästchen mehr siehst.
Ach wo, der Kontrast stimmt, aber das Display wird nicht initialisiert.
No Y. schrieb:> Also auf dem obersten Bild ist der Kontrast schonmal falsch..> Der muss so sein das du gerade keine schwarzen Kästchen mehr siehst.
Ja. Ich hab schon verstellt. Das zeigt nicht an.
Ich weiß nicht genau was mit errata gemeint ist. Kann das sein das ich
die falschen fuse bit für den externen quarz eingestellt habe?
- AVcc gehört auch an Vcc angeschlossen. Inklusive extra Abblock-C.
- Quarz-Lastkapazitäten gehören an den Masse-Pin des Controllers
angeschlossen, nicht irgendwo an Masse.
- Reset gehört auch definiert beschaltet.
Wer solch eine Anleitung schreibt gehört schon ausgepeitscht.
Ich bilde mir ein, dass diese Folge so im Datenblatt gefordert wird –
beachte die Delays. Auch das hier:
1
voidtoggle_enable_pin(void)
2
{
3
sbi(LCDPORT,LCD_PIN_E);
4
cbi(LCDPORT,LCD_PIN_E);
5
}
kann eventuell nicht mehr Datenblatt-konform sein, bei mir steht da ein
_delay_us(0.5) dazwischen. Falls dein Controller mit 1 MHz getaktet
wird, wäre es wohl OK so. Hast du nicht geschrieben. Falls du
tatsächlich mit den 8 MHz vom Quarz fährst, ist das aber so auf jeden
Fall zu schnell.
Michael H. schrieb:> ich bin der Meinung das ich alles richtig angeschlossen habe. Und den> Kontrast habe ich auch schon verstellt.
JTAGEN Fuse deaktiviert?
Grüßle
Volker
Habe genau das Gleiche mal vor Jahren aufgebaut, gleiches Buch.
Hat funktioniert.
Aber erst nachdem ich durch eine Kontroll-LED, die im Sekundentakt
blinken sollte, sah das ich den internen Takt falsch eingestellt hatte.
:-/
Ups, etwas zu spät :)
Volker B. schrieb:> JTAGEN Fuse deaktiviert?
Innerhalb der zeitlichen Randbedingung JTD setzen sollte genauso
funktionieren.
Aber natürlich ein sehr guter Einwand!
Ist auch nicht völlig klar, warum man sich an einem Controller mit
vielen ungenutzten Pins für das LCD ausgerechnet die aussuchen muss, die
ohne Fuse-Umkonfiguration nicht benutzbar sind.
Volker B. schrieb:> JTAGEN Fuse dekativiert?
Frage mich schon die ganze Zeit wie er seinen Controller
programmiert, aber da ist ja SPI angeschlossen. Nur reicht
das vermutlich nicht da für ISP auch der Reset betätigt
werden muss.
??? schrieb:> Beschreibe doch mal in Prosa wie die Schaltung funktionieren soll.
Ich kenne den Namen des TO aus ein paar früheren Threads (gut
ein paar Monate oder sogar mehr als ein Jahr her) in denen schon
mal mit dem Kopf geschüttelt werden durfte.
Typische Vorgehensweise:
- Problem in den Raum gestellt. "Warum"-Frage.
- kaum oder keine Reaktion auf Bemerkungen seitens der Leser.
- kein oder wenig Verständnis für die Problempunkte die
von den Lesern erwähnt werden.
- Reaktionszeit lang bis unendlich.
Schliesslich bleibt das Gefühl der TO dreht sich im Kreis und
ist mit dem "Projekt" und den Problem-Lösungsvorschlägen überfordert.
Jörg W. schrieb:> Jörg W. schrieb:>> Ich bilde mir ein, dass diese Folge so im Datenblatt gefordert wird –>> beachte die Delays.>> Hier die Datenblattseite.
Ist zwar in Assembler, funktioniert ausgezeichnet. Wichtig sind die
delays als auch die Umschaltung auf 4 bit Ansteuerung. Pinning und clock
als o.k. angenommen.
1
;Init the LCD an PortB entsprechend TC1602A_Manual.pdf
2
;als auch *******AD9850 DDRB, PB6 = FR_UD und PB7 = W_CLK********
3
lcd_init:
4
ldi C,$FF ;PortB alle auf Output Seite50
5
out DDRB,C
6
out PortB,C ;definierter Status fürs Display
7
ldi B,100 ;n x 2ms delay
8
wait_display: ;t2313 ist fertg, display auch
9
rcall delay2ms ;lass alles zur Ruhe kommen
10
dec B
11
brne wait_display
12
13
; Display DB [7:4] liegt auf PortB [3:0]
14
; sonst könnte man nicht RS = PB5, Enable = PB4
15
; im 4 bit mode vom PortB aus bedienen
16
ldi C,0b00000011 ;8bit mode,
17
out LCD_PORTB, C ;
18
rcall lcd_enable ;1,
19
rcall delay2ms
20
rcall delay2ms
21
rcall lcd_enable ;2
22
rcall delay2ms
23
rcall lcd_enable ;3
24
rcall delay2ms ;Display ist jetzt eindeutig im 8bit mode
25
26
;LCD: function set
27
ldi C,0b00000010;4bit-Mode, noch im 8 bit mode gesendet
28
out LCD_PORTB, C
29
rcall lcd_enable
30
rcall delay2ms ;Display ist jetzt im 4bit mode
31
32
; ab nun kann das Byte jeden Wert haben, da es in 2 nibbles aufgeteilt
33
; wird, die via PB[3:0] kommend, an das Display DB[7:4] gelangen.
Rudi D. schrieb:> Ist zwar in Assembler, funktioniert ausgezeichnet.
Sehr gut! Und sehr hilfreich für jemanden der kaum selbst
einen Dreizeiler in C zustande bringt sondern sich mit
Copy&Paste Vorlagen behelfen muss.
mitlesa schrieb:> Rudi D. schrieb:>> Ist zwar in Assembler, funktioniert ausgezeichnet.>> Sehr gut! Und sehr hilfreich für jemanden der kaum selbst> einen Dreizeiler in C zustande bringt sondern sich mit> Copy&Paste Vorlagen behelfen muss.
ldc_enable fehlt noch:
1
;create enable pulse 5 cycles auf 1 macht 0,75 us ändert kein Register
2
;mit fallender Flanke werden Daten übernommen
3
lcd_enable:
4
sbi LCD_PORTB, PIN_E ;2; Enable high
5
nop
6
nop
7
nop
8
cbi LCD_PORTB, PIN_E ;2; Enable low
9
rcall delay50us ;ab H>L Enable braucht das Display 38 us
Pete K. schrieb:> Quarz-Thema: F_CPU gesetzt?> Lass mal eine LED für 1 Sekunde leuchten, dann weisst Du, ob der Quarz> richtig schwingt.
Also, der Takt Stimmt wohl mit 8 Mhz mit externen Quarz, wie im Code
oben eingestellt. Habe eine LED im Sekunden Takt blinken lassen und sie
Blint im Sekundentakt.
Das mit der Zeit Einstellung für das display muss ich noch schauen.
mitlesa schrieb:> Volker B. schrieb:>> JTAGEN Fuse dekativiert?>> Frage mich schon die ganze Zeit wie er seinen Controller> programmiert, aber da ist ja SPI angeschlossen. Nur reicht> das vermutlich nicht da für ISP auch der Reset betätigt> werden muss.
Ich habe einen originalen MK2 ISP Programmer
mitlesa schrieb:> Nur reicht> das vermutlich nicht da für ISP auch der Reset betätigt> werden muss.
Wenn man genau hinschaut dann darf man sogar annehmen dass der
Reset auch angeschlossen ist.
Michael H. schrieb:> Ich habe einen originalen MK2 ISP Programmer
Jetzt kontrolliere ob das JTAG Enable Bit gelöscht ist, denn
dein LCD benutzt zufällig zwei Leitungen des JTAG Ports. Das
(JTAG Enable und Port I/O) geht leider nicht zusammen.
mitlesa schrieb:> mitlesa schrieb:>> Nur reicht>> das vermutlich nicht da für ISP auch der Reset betätigt>> werden muss.>> Wenn man genau hinschaut dann darf man sogar annehmen dass der> Reset auch angeschlossen ist.>> Michael H. schrieb:>> Ich habe einen originalen MK2 ISP Programmer>> Jetzt kontrolliere ob das JTAG Enable Bit gelöscht ist, denn> dein LCD benutzt zufällig zwei Leitungen des JTAG Ports. Das> (JTAG Enable und Port I/O) geht leider nicht zusammen.
Danke das war das Problem, das hatte oben auch schon jemand geschrieben,
aber so schnell bin ich nicht, Danke.
hiho,
ich musste feststellen, dass das der LCD-Controller Dicht macht, wenn
man die Timings missachtet und genau dann eben nur schwarze Rechtecke
anzeigt.
Hoffe Dir hilft mein Code, da ich ebenfalls den 4-Bit-Mode nutze.
1
#define F_CPU 4000000UL
2
3
#include<avr/io.h>
4
#include<util/delay.h>
5
6
7
voidwrite_lcd_sign(uint8_tvalue){
8
PORTD=(0x10|(value>>4));
9
PORTD=(0x50|(value>>4));
10
PORTD=(0x10|(value>>4));
11
PORTD=(0x10|(value&0x0F));
12
PORTD=(0x50|(value&0x0F));
13
PORTD=(0x10|(value&0x0F));
14
PORTD=0x00;
15
_delay_ms(2);}
16
17
voidset_cursor_row1(void){
18
PORTD=0X08;
19
PORTD=0x48;
20
PORTD=0x08;
21
PORTD=0x00;
22
PORTD=0x40;
23
PORTD=0x00;
24
_delay_ms(2);}
25
26
voidset_cursor_row2(void){
27
PORTD=0x0C;
28
PORTD=0x4C;
29
PORTD=0x0C;
30
PORTD=0x00;
31
PORTD=0x40;
32
PORTD=0x00;
33
_delay_ms(2);}
34
35
voidlcd_init(void){
36
_delay_ms(20);//Time for LCD to Power on
37
38
PORTD=0x02;// 4-bit mode, 2 Reihen
39
PORTD=0x42;
40
PORTD=0x02;
41
PORTD=0x08;
42
PORTD=0x48;
43
PORTD=0x08;
44
PORTD=0x00;
45
_delay_ms(1.6);
46
47
PORTD=0x00;//Display on, Cursor on, Cursor-blink off
Musst Dir das dann halt auf deinen Code umschreiben, da wo Main-Funktion
beginnt für deine Ports.
Auf PortB ist eine Heartbeat-LED angeschlossen, die kurz aufblinkt
nachdem ins LCD geschrieben wurde.
Gruß,
michi (:
Edit: Ohhhh - zu spät :/
MaWin schrieb:>> Ach wo, der Kontrast stimmt>> Na ja, sieht man dann ja.
Wenn man mit 5V arbeitet kann man den Kontrast-Pin einfach auf Masse
ziehen ;)
Micha W. schrieb:> Wenn man mit 5V arbeitet kann man den Kontrast-Pin einfach auf Masse> ziehen ;)
Hängt vom konkreten Display ab. Es gibt welche, bei denen das dann schon
arg schwarz wird.
Vernünftige Software macht das über PWM und Menü justierbar. ;-)
Hi
> //Row 1 full> set_cursor_row2();
Der TO hat aber ein 8+8 Zweizeiliges Display d.h. nach 8 Zeichen muss in
die 2.Zeile geschaltet werden
>Wenn man mit 5V arbeitet kann man den Kontrast-Pin einfach auf Masse>ziehen ;)
Soll ;) ein breites Grinsen bedeuten?
MfG Spess
Jörg W. schrieb:> Hängt vom konkreten Display ab. Es gibt welche, bei denen das dann schon> arg schwarz wird.
Hatte ich glücklicherweise noch nicht (:
Spess53 schrieb:> Der TO hat aber ein 8+8 Zweizeiliges Display d.h. nach 8 Zeichen muss in> die 2.Zeile geschaltet werden
Da habe ich nicht aufgepasst ;)
Spess53 schrieb:> Soll ;) ein breites Grinsen bedeuten?
Nur ein freches, spontanes, unwissendes Zwinkern, weil bisher alles
Glatt lief.
gruß,
michi ;)
mitlesa schrieb:> Ingolf G. schrieb:>> Habe genau das Gleiche mal vor Jahren aufgebaut, gleiches Buch.>> In diesem Buch steht sicher noch mehr Schrott drin.
Was wäre denn ein gutes Buch ?
jtag disable lässt sich aus der Software raus aktivieren, da gibt es das
JTAG disable Bit in einem Register, das man setzen muss. Man braucht
also keine Fuses ändern.
Schrieb ich schon, aber er hat ja wohl nun die Fuses geändert. Wenn man
eh keinen JTAG-Debugger hat, ist das sicher OK. Wenn man den hat, ist
JTD die günstigere Option: im "Normalbetrieb" rennt die Software durch
die Sequenz durch und schaltet es ab. Mit dem Debugger hält man davor an
und macht dann zwei single-steps; damit ist die zeitliche Bedingung für
das Abschalten des JTAG-Interfaces nicht erfüllt, und man kann weiter
debuggen.
Im vorliegenden Beispiel ist aber eh völlig unklar, warum ausgerechnet
die JTAG-Pins als GPIOs zur Ansteuerung des LCD genutzt werden sollen.
Es sind ja noch so viele andere Pins frei …
No Y. schrieb:> Also auf dem obersten Bild ist der Kontrast schonmal falsch..> Der muss so sein das du gerade keine schwarzen Kästchen mehr siehst.
Nein, dieses Bild ist für den Zustand normal, bevor das Display
initialisiert wurde. Was ein guter Hinweis auf den Fehler ist.
Diese direkt aufeinander folgenden sbi/cbi Befehle machen mich stutzig.
Ist das nicht zu schnell? Und zwischen dem Anlegen der Daten und dem
Enable-Impuls muss man auch ein bisschen warten, soweit ich mich
erinnere.
Du hast vielleicht Glück dass dein Display schneller ist als der
originale HD44780 Chip.
Michael H. schrieb:> Was wäre denn ein gutes Buch ?
Meins http://stefanfrings.de/mikrocontroller_buch/index.html
Nein, das war Spaß. Ich kann mein eigenes Buch ja schlecht selbst
bewerten. Allerdings ist da in den vergangenen Jahren eine Menge
Feedback eingeflossen, so dass die Qualität immer besser geworden ist.
Vielleicht gefällt es dir, schau mal rein. Kostet ja nichts.
http://sprut.de/electronic/lcd/index.htm
eine sehr ausführliche Beschreibung des HD44780 Controllers.
Die Wartezeiten sind für heutige Mikrocontroller elend lang, auch die
nötigen Impulsbreiten für kurze Ansteuerimpulse sind oft länger als es
ein AVR könnte.
Die Benutzung des Busy-Signals ist daher zu empfehlen, um die Zeiten
nicht sicherheitshalber noch länger machen zu müssen. Das bedeutet
allerdings etwas mehr Programmieraufwand, da R/W umgeschaltet werden
muss.
Christoph db1uq K. schrieb:> eine sehr ausführliche Beschreibung des HD44780 Controllers.
Das finde ich auch.
> Die Benutzung des Busy-Signals ist daher zu empfehlen
Das Busy Signal sagt aber nicht, wie lange die Daten vor dem Enable
Impuls anliegen müssen und wie lang der Enable Impuls sein soll.
Da ist es einfacher, bei der Initialisierung simple Delays zu benutzen
und danach die Kommandos und Zeichen einzeln per 2ms Timer-Interrupt
auszugeben. Das ist dann immer noch schneller, als man lesen kann.
Stefan ⛄ F. schrieb:> Das Busy Signal sagt aber nicht, wie lange die Daten vor dem Enable> Impuls anliegen müssen und wie lang der Enable Impuls sein soll.
Das nicht, aber es sagt einem insbesondere, wann das Display mit lange
dauernden Operationen fertig ist. Da wartet man sonst u. U. sehr viel
länger als nötig.
Ich verstehe diesen Busy-Bit-Geiz auch nicht so richtig, weder von der
Hardware noch vom Code ist das viel Aufwand. Und dass kein GPIO mehr
frei ist, scheint ja hier nun nicht gerade der Fall zu sein …
Jörg W. schrieb:> Ich verstehe diesen Busy-Bit-Geiz auch nicht so richtig
Ich versuche es mal zu erklären.
Das Busy Flag ist hilfreich, wenn meine Anwendung single-threaded ist,
also die Ausgabe (wie bei Arduino) blockierend stattfindet. Diese
Methode ist aber eh nicht optimal.
Wenn mein Programm das Busy Bit auswertet, muss es warten. Das Display
kann mein ganzes System anhalten, es sei denn, ich nutze Multithreading
irgendeiner Variante.
Ich könnte z.B. einen Timer-Interrupt nutzen, um zyklisch das Busy Flag
abzufragen und gepufferte Daten nach und nach auszugeben. Nur kann ich
dann auch einfach direkt auf ein 2ms Intervall setzen. Denn dann brauche
ich kein busy Flag mehr, das Display ist sowieso garantiert schneller.
Mit 2ms Delay zwischen jeden Befehl/Zeichen ist die Ausgabe immer noch
schneller als ich gucken kann. Der Aufwand, die Ausgabe mittels Busy
Flag zu beschleunigen bringt mir daher keinerlei praktischen Nutzen.
Rudi D. schrieb:> ;LCD: function set> ldi C,0b00000010;4bit-Mode, noch im 8 bit mode gesendet> out LCD_PORTB, C> rcall lcd_enable> rcall delay2ms ;Display ist jetzt im 4bit mode>> ; ab nun kann das Byte jeden Wert haben, da es in 2 nibbles aufgeteilt
Nö,
da fehlt aber noch was. die 28hex zum Beispiel und nicht nur das...
Jörg W. schrieb:> Ich verstehe diesen Busy-Bit-Geiz auch nicht so richtig, weder von der> Hardware noch vom Code ist das viel Aufwand. Und dass kein GPIO mehr> frei ist, scheint ja hier nun nicht gerade der Fall zu sein
Hi,
meine, in einen Dabla den Hinweis gelesen zu haben, dass der
Adresscounter noch aktiv sein kann, und schon Zugriff erfolgt. Dadurch
könnten sich je nach Situation weitere ungeahnte "Timing-Probleme"
ergeben.
Brauche nur für Busyabfrage evtl. doch noch ein Delay. Alles rutscht
sonst eine Zeile zu weit. Die Steuerbefehlsabfolge ist so wie so nicht
mehr beliebig.
Habe das Timing Diagramm für den HD44780-er mal angehängt.
ciao
gustav
Jörg W. schrieb:> Ich habe 37 ms für ein komplettes Löschen in Erinnerung.
Sprut sagt "Display löschen... 1,64 ms".
Im Datenblatt fehlt die Angabe seltsamerweise.
In meinem eigenen Code warte ich nach CLEAR_DISPLAY sogar nur 60µs so
wie auch nach allen anderen Zeichen/Kommandos nach der Initialisierung.
kit einer Ausnahme: RETURN_HOME braucht 1.6ms
Hi,
da offenbar die Aussage "Mein Display zeigt nur schwarze Balken" das
Hauptproblem hier zu sein scheint,
ist zunächst einmal zu überprüfen, ob und wie überhaupt eine
Initialisierung erfolgt. (Wurde oben ja schon von H.H. gesagt.)
Welche Fehler können sich da einschleichen:
a)Portzuweisung: welche Ports werden tatsählich
von Steuerbits und Daten an IC-Anschlüssen verwendet und im Programm
zugewiesen
b) Reihenfolge der Befehle laut Dabla mit Pausen
c) Enableimpulsgenerierung, Einfügen von Enableimpulsen an der richtigen
Stelle
d) bei Vierbitmodus: Swappen (Display erwartet, "liest" die oberen 4-Bit
zuerst)
e) Pushen und Poppen von
von Zeitschleifen verwendeten Temporärregistern
vergessen.
War wohl das Wichtigste
ciao
gustav
Karl B. schrieb:> Hi,> da offenbar die Aussage "Mein Display zeigt nur schwarze Balken" das> Hauptproblem hier zu sein scheint,
Schien ... Lese doch einfach mal komplett, dann merkste auch, daß das
Problem schon längst vorbei ist.
mitlesa schrieb:> In diesem Buch steht sicher noch mehr Schrott drin.
Kann man höflicherweise etwas mehr Licht ins Dunkel bringen, indem man
vielleicht die ISBN-Nummer dieses "Pamphlets" dem werten mitlesenden
Publikum preisgibt?
Oder habe ich da was überlesen?
ciao
gustav
Hi,
in dem Buch unten sind auch C-Programme drin:
Seite 471, Programmname: zum Beispiel k5p4 allerdings ATMega8-er
ISBN:
9783486587906
Titel: Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
- Programmierung in Assembler und C - Schaltungen und Anwendungen
Autor: Schmitt, Günter
ciao
gustav
Jens G. schrieb:> Schien ... Lese doch einfach mal komplett, dann merkste auch, daß das> Problem schon längst vorbei ist.
Hi,
soweit ich das jetzt überblicke, hapert es schon bei der Initialisierung
des LCDs.
Das ist eben zunächst zu klären. Dann step by step...
Oder habe ich da etwas übersehen.
Der Reihe nach [Wiederkaumodus ein]:
Michael H. schrieb:> Kann das sein, dass ich> die falschen fuse bits für den externen quarz eingestellt habe?Jörg W. schrieb:> Hmm. Bei mir sieht die HD44780-Initialisierung so aus:Jörg W. schrieb:> Falls dein Controller mit 1 MHz getaktet> wird, wäre es wohl OK so. Hast du nicht geschrieben. Falls du> tatsächlich mit den 8 MHz vom Quarz fährst, ist das aber so auf jeden> Fall zu schnell.Michael H. schrieb:> Habe eine LED im Sekunden Takt blinken lassen und sie> Blinkt im Sekundentakt.Jörg W. schrieb:> Im vorliegenden Beispiel ist aber eh völlig unklar, warum ausgerechnet> die JTAG-Pins als GPIOs zur Ansteuerung des LCD genutzt werden sollen.> Es sind ja noch so viele andere Pins frei …
[Wiederkaumodus aus]
So und jetzt Feedback vom TO.....
Offtopic:
Jens G. schrieb:> Schien ... Lese doch einfach mal komplett, dann merkste auch, daß das> Problem schon längst vorbei ist.
Hi, bei einigen Progs nehme ich für die LCD-Ausgabe einen "Coprozessor".
Schiebe per UART mit Interrupt die Daten rüber und speicher zwischen und
lasse LCD sekündlich was anzeigen.
/Offtopic.
ciao
gustav
Komm Entar schrieb im Beitrag #6699422:
> Verlag des Buches: Franzis
Das reicht schon als Erklärung. Ich habe schon lange nichts gutes mehr
von diesem Verlag gesehen.
Ich habe für meinen Sohnemann zwei Bausätze und ein "Baubuch" von
Franzis gekauft. Die Experimente waren spannend und Kindgerecht
aufbereitet. Aber die Erklärungen, wie/warum es funktioniert waren
äußerst lückenhaft und in dem Baubuch waren gleich zwei ungeeignete
Bauteile drin, die blöderweise auch noch in fast jeder Schaltung
gebraucht wurden. Dazu waren 2 von 10 Fritzing Pläne fehlherhaft.
Ohne meine Hilfe hätte mein Sohn das Ding schon bei der zweiten
Schaltung frustriert in den Müll geworfen.
Ähh,
da was falsch zitiert. Ins Offtopic sollte der Beitrag von @stefanus
rein:
Stefan ⛄ F. schrieb:> Ich könnte z.B. einen Timer-Interrupt nutzen,
etc...
ciao
gustav
Michael H. schrieb:> Danke das war das Problem, das hatte oben auch schon jemand geschrieben,> aber so schnell bin ich nicht, Danke.Michael H. schrieb:> Jetzt kontrolliere ob das JTAG Enable Bit gelöscht ist, denn>> dein LCD benutzt zufällig zwei Leitungen des JTAG Ports. Das>> (JTAG Enable und Port I/O) geht leider nicht zusammen.
Und wie sieht jetzt das korrigierte Programm im Zusammenhang aus?
Kurze Kopie als Dateianhang wäre echte Erleuchtung.
Was wurde evtl. noch am Pinout geändert.
Danke.
ciao
gustav
Karl B. schrieb:> Und wie sieht jetzt das korrigierte Programm im Zusammenhang aus?
Er hat wohl nichts geändert als die JTAGEN-Fuse abzuschalten.
Klar, der Rest ist immer noch ziemlicher Pfusch, aber wenn er damit
glücklich wird, dann isses eben so.
OK.
Hoffentlich braucht er keinen HV Modus hernach noch ;-)
Jörg W. schrieb:> Klar, der Rest ist immer noch ziemlicher Pfusch, aber wenn er damit> glücklich wird, dann isses eben so.
Wie bereits mehrfach bemerkt wurde: Die LCD-Initialisierung z. B.
OT:
Das mit den Büchern ist mir auch schon übel aufgestoßen.
Da waren LED-Anzeigeeinheiten mit gemeinsamer Katode verlangt aber mit
gemeinsamer Katode gezeichnet. Das Uhren-IC konnte damals noch nicht so
leicht wie heute umgestrickt werden. Und ging kaputt. Ca. 30 Deutschmark
im Teich.
/OT
ciao
gustav
Jörg W. schrieb:> Karl B. schrieb:>> Da waren LED-Anzeigeeinheiten mit gemeinsamer Katode verlangt aber mit>> gemeinsamer Katode gezeichnet.>> kann ja mal vorkommen :-))
Anode...uuups.
ggg