www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik EADOGM126 initiiert nicht mit Assembler


Autor: Sunny (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Sunny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist der EADOGM162 sorry verschrieben ^^

Autor: Burkhard H. (kormorix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sunny,
schau Dir mal im Handbuch des ATMega8 an, was an Adresse 0 ff. (org 0!) 
stehen muß. Stichwort Interrupttabelle.

Viel Erfolg
kormorix

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>  Stichwort Interrupttabelle.
Uninteressant, wenn keine Interrupts verwendet werden...

Aber vielleicht hilft eine Suche im Forum:
http://www.mikrocontroller.net/search?query=%2Bpor...

Autor: Sunny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss ich diese JTAGFuse deaktivieren?

Autor: Sunny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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...

Autor: Sunny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Sunny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keiner weiter noch Tips für mich ?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sunny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sunny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
alles klar, werde es korrigieren.

Da mir sonst keiner sagen kann das ich grundlegend was falsch mache, 
muss wohl das display im arsch sein ?!

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sunny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marc Prager (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieser Thread ist voellig sinnlos ohne ordentliche Bilder.

Autor: Sunny (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
O.k., die Bilder sind gut - aber ein bisschen viele Draehte drauf ;-) 
Bei mir funktioniert auf dem Breadboard nix, was mehr als 10 Draehte 
hat...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne jetzt weiter geschaut zu haben:

Du solltest am PortC deine Steuerleitungen ebenfalls auf Ausgang 
konfigurieren.

Autor: Sunny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine Delay-Routinen:

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

Was hast du ausgerechnet, wie lange diese Schleife
delay:

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

Loop: ; Schleifenbeginn
  

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

mit einem Wert von 5000 für c1 benötigt?

Autor: Sunny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach du schande is mir jetzt peinlich^^ , ich hatte das eigentlich schon 
geschrieben gehabt, aber anscheind nicht gespeichert!

danke karl!

Autor: Sunny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Sunny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ;)

Autor: Sunny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
leider finde ich nicht den editierbutton.

der schleifenwert beträgt 50.000, also kommen wir auf 0.2 sekunden.

nur nebenbei

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Corser
Meinst du den Cursor?? ;-)

Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah mein Post ist ja nun überflüssig, wenn der Cursor angezeigt wird...

Autor: Sunny (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Sunny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen dank euch allen! war eine schwere Geburt, aber jetzt klappt alles 
soweit habe meine ersten Zeichen auf dem Display ausgegeben :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.