mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DOG-M .asm Initialisierung geht, aber wo bleibt mein Test?


Autor: Sirko Pöhlmann (poehli)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

nachdem ich mit Hilfe der Artikel aus dem Forum mein DOGM 163 
erfolgreich initialisiert habe ( in Assambler, an 5V,Hardware-SPI, 
ATMEGA16) verzweifel ich seit einem Tag an der Textausgabe, obwohl das 
doch kein Problem sein dürfte. Ich greife da ebenfalls auf Routinen hier 
aus dem Forum zurück.

Ich poste mal den Code, lass aber die Init weg weil die geht ja. ( Ich 
sehe einen blinkenden Cursor vor mir)

Obwohl ich versuche ein Zeichen zu senden sehe ich weiter hin nur den 
blinkenden Cursor. Könnte es sein das ich vergesse eine Freigabe zu 
setzen?

; bis hierher geht die funktionierende Initialisierung

Loop:
rcall  delay50ms

  ldi    r24,0b00000000    ; Adresse
  ldi    r25,0x53                ; Zeichen
  rcall  wrddram
  rjmp Loop

;--------------------------------------------------------------------------------------
;        Write DDRAM - Schreiben auf DDRAM Adresse
;        in : r25 = Datenbyte
;           r24 = Adresse (7bit)
;         changed : -
wrddram:
  ori  r24,$80    ; Bit 7 setzen ( Befehl Adresse schreiben)
  rcall  wrcmd    ; zur LCD
  mov  r24,r25    ; Daten
  rcall  wrdat    ; zur LCD
  ret
;--------------------------------------------------------------------------------------
;        Write Command - Kommandos schreiben
;        in: r24  Kommando
wrcmd:
  cbi   PortB,RS        ; RS = 0 -> Kommando/Adresse schreiben
  rcall  spi_out
  rcall  delay50us
  ret
;--------------------------------------------------------------------------------------
;        Write Data - Daten schreiben
;        in : r24 Datenbyte

wrdat:
  sbi PortB,RS            ; RS = 1 -> Daten schreiben
  rcall  spi_out
  rcall  delay50us
  ret

;--------------------------------------------------------------------------------------
;      Byte über SPI ausgeben
;       in: r24  Datenbyte
;      changed: -
spi_out:  
  push  r24
  out  SPDR,r24  ; start transmission of data
spi_out10:
  in  r24,SPSR  ; Wait for transmission complete
  sbrs  r24,SPIF
  rjmp  spi_out10
  pop  r24
  ret


Autor: shorsh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

gibts zu dem Problem "schon" eine Lösung ? Ich hänge am gleichen 
Problem...

Danke,
shorsh

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>  push  r24

Wofür soll das gut sein?

>  out  SPDR,r24  ; start transmission of data
>spi_out10:
>  in  r24,SPSR  ; Wait for transmission complete
>  sbrs  r24,SPIF
>  rjmp  spi_out10


>>  pop  r24

Und das hier?

Autor: AndreasU (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ihr es so net hinbekommt macht es doch in C! Die Files hierzu sind 
super.

Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe zwei Tipps, die mir jeweils geholfen haben die Zeichen aufs 
Display zu bringen:
1. Die Pause nach der Initialisation vergrössern, z.B. > 200ms
2. Schreibt einfach mal Zeichen ins Display, ohne die DDRAM Adresse neu 
zu schreiben. Dann sollte ja (je nach Initialisierung) der Cursor für 
jedes neue Zeichen um eine Stelle nach rechts rücken.

Also in obigem Code z.B.:

Loop:
rcall  delay50ms

  ldi    r24,0x53                ; Zeichen Buchstabe S
  rcall  wrdat
  rjmp Loop


Dies sollte das ganze Display mit dem Zeichen füllen.

Es ist eben möglich, dass nach einer nicht perfekten Initialisierung die 
Zeichenadresse 0x00 aus dem sichtbaren Bereich hinausgescrollt ist 
(siehe Datenblatt des Kontrollers Seite 19). Die DOG-M sind in Sachen 
Timing sehr empfindlich meiner Meinung nach.

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.