EADOGM126 initiiert nicht mit Assembler

Gast #1495846
Lesenswert?

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.
Angehängte Dateien:
Gast #1495935
Lesenswert?

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 :)
Gast #1495952
Lesenswert?

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?
Gast #1496231
Lesenswert?

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
Gast #1496253
Lesenswert?

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.
Gast #1496276
Lesenswert?

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
Gast #1496354
Lesenswert?

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
Gast #1496387
Lesenswert?

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.
Gast #1497982
Lesenswert?

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.
Gast #1498192
Lesenswert?

@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
Angehängte Dateien:
#1498234
Lesenswert?

Deine Delay-Routinen:

Wie hast du dimensioniert, bzw. welche Taktfrequenz hat eigentlich dein 
µC?

Was hast du ausgerechnet, wie lange diese Schleife
1
delay:
2

3
  ldi R25,HIGH(c1) ; Lade MSB-Register mit Schleifenwert
4
  ldi R24,LOW(c1) ; Lade LSB-Register mit Schleifenwert
5

6
Loop: ; Schleifenbeginn
7
  
8

9
  sbiw R24,1 ; Doppelregisterwert um Eins verringern
10
  brne Loop ; wenn nicht Null dann wieder Schleifenbeginn
11
  ret

mit einem Wert von 5000 für c1 benötigt?
Gast #1498251
Lesenswert?

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
#1498255
Lesenswert?

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)
Gast #1498282
Lesenswert?

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
Gast #1498291
Lesenswert?

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
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren