also ich habe alle nach dem Tutorial der hier auf der seite ist gemacht
das anschliessen. hab einen 2x16 LCD und ein AT90S231. Wenn ich es
anmache geht das LCD auch und der AVR auch habe die software genauso
wie die ist Assembliert und in Hex umwandelt dann mit PonyProg2000
Write Device das programm draufgeschrieben. Geht aber nix :-( Die
balken auf dem Display bleiben.
Dann habe ich gedacht muss die "2313def.inc" reintun und nicht
"m8def.inc" doch bei Assemblieren krieg ich jetzt den Fehler:
lcd.asm(11) : error : Undefined variable referenced
Der Code ist genau so geblieben nur die include datei nicht:
include ""2313def.inc"
.def temp1 = r16
.def temp2 = r17
.def temp3 = r18
ldi temp1, LOW(RAMEND) ; LOW-Byte der obersten
RAM-Adresse
out SPL, temp1
ldi temp1, HIGH(RAMEND) ; HIGH-Byte der obersten
RAM-Adresse
out SPH, temp1
ldi temp1, 0xFF ;Port D = Ausgang
out DDRD, temp1
rcall lcd_init ;Display initialisieren
rcall lcd_clear ;Display löschen
ldi temp1, 'T' ;Zeichen anzeigen
rcall lcd_data
ldi temp1, 'e' ;Zeichen anzeigen
rcall lcd_data
ldi temp1, 's' ;Zeichen anzeigen
rcall lcd_data
ldi temp1, 't' ;Zeichen anzeigen
rcall lcd_data
loop:
rjmp loop
.include "lcd-routines.asm" ;LCD-Routinen werden hier
eingefügt
Bitte helft mir ich komme nicht weiter. danke im voraus
soweit ich das als PIC-User sehe, hat der 2313 nur 128 Bytes SRAM.
D.h. ein Byte reicht aus, um den SRAM richtig einzustellen.
Mit AVRs bis 255 Byte SRAM musst du wohl nur den Lowramend laden.
...
.def temp3 = r18
ldi temp1, LOW(RAMEND)
out SPL, temp1
ldi temp1, 0xFF ;Port D = Ausgang
...
Genau dies meckert des AVR-Studio ja auch an. Das SPH-Register
existiert im 2313 nicht, da dies nicht benötigt wird.
@DeltaEX
Fast alle älteren AVR's brauchen nur Low(RAMEND)
also alle AT90S.... aber wie schon gesagt es gibt
unter den AT90S.... Typen auch ausnahmen.
Bei den neuen AVR's--> ATmega.... muss High(RAMEND)
immer dazugeschrieben werden.
Ich hoffe meine kleine
Aufklärung hat dir n
Bisschen geholgen
Mfg. Merle
Ja danke schön es ging jetzt zu Assemblieren, doch am LCD tut sich nix
:-( Der Schwarze balken bleibt. Wie kann ich jetzt vorgehen um den
Fehler rauszufinden?
@DeltaEX
Hast schon nachgeprüft ob alle
Verbindungen zum LCD richtig
angeschlossen sind ??
Poste mal den codewie du ihn
jetzt im AVR Studio stehen hast.
Mfg. Merle
@DeltaEx
Entferne folgende zeilen aus deinem code:
-------------------------------------------------------------------
.include "lcd-routines.asm" ;LCD-Routinen werden hier
eingefügt.
-------------------------------------------------------------------
Vileicht sind die schuld daran
das es nicht funzt.
Mfg. Merle
@DeltaEx
Doch bei mir funzt es ohne .include "lcd-routines.asm"
Lass doch mal folgendes weg in deinem code:
-------------------------------------------------------------------
.include "lcd-routines.asm" ;LCD-Routinen werden hier
eingefügt
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; LCD-Routinen ;;
;; ============ ;;
;; (c)andreas-s@web.de ;;
;; ;;
;; 4bit-Interface ;;
;; DB4-DB7: PD0-PD3 ;;
;; RS: PD4 ;;
;; E: PD5 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-------------------------------------------------------------------
Vileicht geht es dann.
Und überprüfe nochmal ob die Verbindungen
zwischen AVR und LCD an der richtigen stelle
sind und nicht unterbrochen sind.
Mfg. Merle
Ich habe eben in BASCOM reingeguckt und da sieht es viel einfacher aus.
Kann hier einer BASIC?? Weil bei Assembler kann ich nicht alles
nachvollziehen deshalb fählt mir die Fehlersuche schwer
Merle kann du mir vieleicht einen Code geben der nur einen Clear macht
damit die Balken verschwinden. Dann kann ich sicher sein das alles
eichtig funktioniert
Hallo
Dieser Beitrag scheint etwas wirr und unkoordieniert.
1. Musst du die richtige Software haben. Ich habe den Tutorialteil und
den angepassten Teil für den 2313 angehängt. Das ist bis auf ein paar
minimale Änderungen der, den du schon gepostet hast.
Assembliere diesen z.B mit AvrStudio. Brenne den resultieren Hex-File
dann in deinen Controller.
Frage: Hast du schon mal einen Code in deinen AVR gebrannt, oder ist
dies dein erster Versuch? Evtl. brennst du den hex-File nicht richtig
in den µC?
Ich würde nicht an Assembler zweifeln, und direkt auf Basic wechseln,
nur wenn es mal Problem gibt.
es gibt folgende prinzipielle Fehlerquellen:
-Überprüfe, ob alle Verbindungen vom Display zum Controller so sind,
wie im Tutorial angegeben.
-Liegt ein Pullup-Widerstand am Reset-in des µC?
-( Drehe während des Betriebs des Displays mal am Poti für den
Kontrast. Obwohl dann auch die Balken nicht zu sehen sein sollten.)
- Ist der µC mit weniger als 4Mhz getaktet?
- Sind die Kondensatoren richtig mit dem Quarz verschaltet? Oder
Quarzoszillator?
- Hast du beim brennen die Fuse-Bits o.ä. beachtet?
- Hast du beim Brennen spezeill auf Watchdog, Oszillatortyp etc.
geachtet?
Diese ganzen Möglickeiten sollen sich nicht abschrecken, sondern nur
mögliche Fehlerquellen aufzeigen.
Wichtig zu wissen ist, ob du AVRs schon gebrannt hast. Wenn nicht,
liegt es sehr nahe, dass du den Code nicht richtig zum AVR überträgst.
Der Code im Anhang sollte meiner Meinung nach so funktionieren.