Hi Leute!
Bitte helft mir, ich bin am Verzweifeln. Ich habe einen eadogm162 an
einen Atmega8-16PU angeschlossen, leider ohne Hintergrundbeleuchtung, da
mir eine falsche zugschickt wurde. Deswegen habe ich eine helle LED
dafür missbraucht.
Der eadog wird an 5V und 8Bit betrieben.
D0-D7 gehen an die D-Ports ges uC
Enable geht an PC0
RS geht an PC1
Leider passiert rein garnichts, zum Test habe ich an die D0-D7 Ausgänge
parallel nich LEDs gehangen und die Pausen verlängert, damit ich alles
optisch verfolgen kann.
Mein Assemblerwissen aus der Ausbildung ist ziemlich eingeschlafen,
deswegen bitte ich euch, mir zu sagen, ob mein Quellcode Fehler hat oder
was sonst das Problem sein kann.
Ich habe gelesen das ich die JTAGFuse löschen muss damit PortD richtig
funktioniert(hatte es bei dem User dann auch), aber die LEDs die ich
parallel angeschlossen habe leuchten ja so wie sie sollen, d.h. die
Ports funktionieren richtig.
Sollt ich vielleicht eine ext. Spannungsquelle mit anschließen?
Achso benutze das MysmartUSB zum programmieren.
Danke :)
> aber die LEDs leuchten ja so wie sie sollen
Richtig, manche Megas haben JTAG, der Mega8 jedoch nicht :-/
Deshalb kanns damit am PortD auch keine Probleme geben...
Okay, also ich hoffe ich habe das Display nicht geschrottet, denn ich
hatte es spiegelverkehrt herum angeschlossen :(
Die Stromaufnahme ist genug durch den USB-Anschluss oder doch lieber
externe Quelle, falls der Strom nicht reicht?
Ist der Quellcode richtig?
Hi
Ja. Dir ist bewusst, das dein Programm zweimal 'INITIALSTART' durchläuft
und sich mit dem 'ret' ins Nirvana verabschiedet?
Nach
'rcall INITIALSTART'
sollte wenigstens eine Endlosschleife 'xyz: rjmp xyz' sein, damit das
Programm definiert anhält.
MfG Spess
Also das Programm läuft immer weiter, das stimmt.
Warum zweimal, versteh ich jetzt nicht?!
Ist die Reinfolge der Initialisierung wichtig? Auf dem "Datenblatt" des
EADOG steht eine andere als die vom ST7036.
Hi
>Warum zweimal, versteh ich jetzt nicht?!
Einmal durch 'rcall INITIALSTART'. Danach macht das Programm nach 'rcall
INITIALSTART' weiter. Und da steht dein Unterprogramm. Also mache es
damit weiter bis zu 'ret'. Da aber keine gültige Rücksprungadresse auf
dem Stack liegt (kein 'rcall'), ist die Reaktion des Programms ab der
Stelle undefiniert.
MfG Spess
Hi
>muss wohl das display im arsch sein ?!
Warum? Die Dinger sind robuster als du denkst.
>Da mir sonst keiner sagen kann das ich grundlegend was falsch mache,...
Was denkst du eigentlich, soll deiner Meinung nach, nach der
Initialisierung passieren?
MfG Spess
spess53, das man irgendwas auf dem Display erkennt, also die Felder der
Buchstaben zB, die sieht man ja bei vorhandener Hintergrundbeleuchtung
auch leicht. Wenn die Routinen von Diplaykontrast und Display Clear
durchlaufen, tut sich rein garnichts, das Display sieht genauso aus als
wenn es aus wäre und ich es in der Hand halte.
Nur so paar Gedanken von einem, der niemals ATmega benutzt...
Du ziehst hoffentlich mit den LEDs nicht zu stark an den D0-7, so dass
am LCD keine guten Pegel mehr ankommen?
Die EADOG-Teile (hab auch welche) lassen sich bis 0Hz herunter takten?
Kann es an der externen Beschaltung des Spannungsvervielfachers liegen.
Da hat man ja so viele (Fehler-)M"oglichkeiten.
@marc, was heißt zeiht? damit kann ich nichts anfangen :)
die LEDs sind parallel zum Display, und die Pegel stimmen auch.
Mit der Taktung hab ich keine Ahnung, da hab ich noch nicht geschaut.
@peter. habe 2 Bilder gemacht, wenn es dir was hilft, die Beschaltung
habe ich ja oben schon erwähnt
wegen den kontakten auf dem board oder was?
Habe mir jetzt auch schon ein neues display bestellt, da ich denke das
es defekt ist, wenn dem nicht so sei, dann muss ich kurz ausrasten :D
Berechnet habe ich die Delays erstmal nicht, da mir das erstmal nicht so
wichtig war, hauptsache etwas langsamer und ich kann schauen ob die
Bytes richtig sind.
Die Standarttaktfrequenz von 1 Mhz, soweit ich weis. also ext. takt
Sunny schrieb:
> Die Standarttaktfrequenz von 1 Mhz, soweit ich weis. also ext. takt
Siehst du.
Damit fängt es schon an.
"Soweit ich weiß" ist hier nicht gut genug.
Wenn du sicher bist, dass du über den minimalen Grenzen liegst, ist es
ok. Aber die Taktfrequenz nicht zu kennen, ist nicht gut. Da kann man so
schlecht Dinge kontrollieren und nachrechnen. Im Tut werden delay-Zeiten
von 5ms verwendet. Wie soll ich jetzt kontrollieren, wie lang deine
Zeiten sind?
ein sbiw braucht 2 Takte
ein brne ebenfalls (wenn die condition true ist)
macht 4 Takte in der Schleife.
Bei 1 Mhz macht das 1000000 / 4 = 250000 -> 5000 / 250000 = 0.02
also 20 ms.
Sollte also leicht ausreichen (bei 1 Mhz)
Du hast recht Karl, da ich keinen externen Quarz verwende wird der
interne 1Mhz Takt verwendet.
Der Corser wird schonmal angezeigt.
Danke dir bis dahin ;)
Ich habe immer wieder mit den DOGM displays zu tun. Kann hier auch noch
ein paar Tipps geben:
- Die Delays sind enorm wichtig. Lieber etwas zu lange, als zu kurz. Du
solltest unbedingt nochmal ins Datenblatt des Kontrollers sehen, dann
siehst Du z.B. >40mS vor der Initialisierung, und vorallem nach dem
Followercontrol Befehl mindestens 200mS. Evtl habe ich das jetzt in der
Eile übersehen. Aber bei Dir ist das einfach immer "delay".
- Wenn ich es richtig sehe, hast Du ein schwarzes Display mit
transparenten Zeichen? Das dürfte nur schwer ohne Beleuchtung zu
erkennen sein. Wenn Du einen etwas falschen Kontrast in der
Initialisierung wählst, sieht man nix.
- Auch schliesse ich mich den Vorrednern an bezüglich den LEDs (das
macht evtl Probleme), und vorallem gibts Du ja nach der Initialisierung
noch nichts auf dem Display aus? Meiner Meinung nach bleibt es somit
schwarz.
Wenn Du Deinen aktuellen Code nochmals posten könntest, kann ich evtl
Deinen Code auf einem meiner Displays ausprobieren am Wochenende. (Falls
es mir langweilig werden sollte :)
Gruss
Roman
Ja der Cursor, der wird angezeigt :)
Also dadurch das ich eine LED dahintergelegt habe kann man schon was
erkennen. die richtige hintergrundbeleuchtung müsste heute noch
ankommen.
Wie gesagt die initialisierung funktioniert jetzt, und bin im moment bei
200ms pro delay, d.h. bei allen. Wenn das so lange dauert ist das
eigentlich nicht schlimm, da es eh nur fürs auto gedacht ist.
Also einen blinkenden schwarzen Balken an erster stelle erscheint
schonmal, also kann ich davon ausgehen das alles funktioniert?
der aktuelle code anbei