Problem mit LCD

Gast #74987
Lesenswert?
• ▲
▼
Hi,
ich komme seit Stunden nicht mehr weiter!

Also ich habe jetzt das LCD so an den 4433 angeschlossen, wie es im
tutorial steht.

Ich habe den µC vor gut zwei Wochen bekommen und bin gerade dabei mich
etwas in Assembler einzuarbeiten. Den I/O - Teil habe ich noch
wunderbar verstanden, naja, es funktionierte jedenfalls.

Ich benutze TAVRASM, aber ich bekomme bei dem im Tutorial vorgestellten
Testprogramm immer einen Fehler!

#####################################
### aus lcd-test.asm - fürn 4433 ####
#####################################
.include "4433def.inc"   <---------- anstatt des M8 hab ich meinen
                                     reingeschrieben, wie im I/O-Teil
#####################################
#### die folgende Zeile mag TAVRASM nicht!!!
#### bekomme immer einen Fehler
#### Error: undefined variable referenced in I/O port address
####        out SPH, temp1
#####################################
ldi temp1, HIGH(RAMEND)     ; HIGH-Byte der obersten RAM-Adresse
           out SPH, temp1
#####################################

was ist falsch?
ach ja, die datei lcd-routine.asm ist im gleichen Ordner vorhanden.


Kann mir jemand ein noch einfaches Testprogramm für den 4433 hier
posten - für die LCD-Initialisierung und mit einer einfachen Ausgabe,
als *.asm-Datei.
Die Pinbelegung hab ich wie im Tutorial.
Gast #74988
Lesenswert?
• ▲
▼
So, jetzt habe ich mir avr-gcc geholt. Wie man eine *.c-Datei in *.hex
compiliert weiss ich jetzt. Assembler mochte ich noch nie und meine
ANSI-C Kenntnisse (lang ists zwar her) sollen auch nicht umsonst
gewesen sein.

Nur ist es ziemlich blöd für einen Anfänger, wenn man kein
funktionierendes Programm nachvollziehen kann. Kann mir hier jemand
weiterhelfen?

Habe einen at90s4433 und möchte wie im Tutorial einen Text ins Eeprom
schreiben und am 2x16 Display in der oberen Zeile als Laufschrift
ausgeben.

Vielleicht hat jemand gerade sowas - oder gern auch was ähnliches,
hauptsache es funktioniert mal mit dem 4433 - jemand schon mal
programmiert. Damit wäre mir echt geholfen.
Gast #74989
Lesenswert?
• ▲
▼
Für Deine 1. Frage:
Der 4433 hat gar keinen 16 bit Stackpointer, statt SPH und SPL gibt es
also nur das SP-Register. Die 4 Zeilen betreffend SPH/SPL also
rausnehmen und durch
           ldi temp1, RAMEND     ; oberste RAM-Adresse
           out SP, temp1
ersetzen.
Ich denke das Tutorial ist für einen AVR mit mehr als 256 Byte RAM?

Für die 2. Frage hab ich leider auch nichts

/Berndt
Gast #74990
Lesenswert?
• ▲
▼
Das Assemblerprogramm läuft - aber das war es für mich auch schon mit
Assembler!

Schlechter scherz?

Links zu ähnlichen Projekten
LCDproc - zeigt Systeminformationen an
http://lcdproc.omnipotent.net/

This page is temporarily closed in protest against software patents.
Websites may soon be closed down regularly due to software patents.
Software patents can get you prosecuted for publishing texts you wrote
yourself!
Gast #74991
Lesenswert?
• ▲
▼
Wollte mal ein c-Programm schreiben, das einfach das LCD initialisiert:


#include <io.h>
#include <LCD.h>

void main (void) {
    LCD_Init();
}


bekomme aber einen Fehler. er kennt LCD_Init() nicht. Steht doch in der
LCD.h drinnen - was ist da falsch?
Angehängte Dateien:
Gast #74992
Lesenswert?
• ▲
▼
avr-gcc -g -Os -mmcu=at90s4433 -c LCD.c
->Meldung:Achtung!Keine neue Zeile am Ende der Datei

Die LCD.o erhalte ich trotzdem

avr-gcc -g -mmcu=at90s4433 -o LCD.elf LCD.o
->Meldung: LCD_Init() undefiniert

Hab gestern erst mit avr-gcc angefangen.....

LCD.c und LCD.h liegen bei mir auf C:\Ordner - ist dass der Fehler?
Aber in welches Verzeichnis muss ich LCD.h kopieren? Habs ausserdem
noch in das Verzeichnis kopiert wo io.h io4433.h liegen

mit
#include <avr/io.h> bzw. <avr/io4433.h>
funktioniert es auch nicht

Bin echt ratlos, sonst würde ich nicht eure zeit zum lesen in anspruch
nehmen!
Admin Persönliche Seite #75000
Lesenswert?
• ▲
▼
Nochmal: mit einer Header-Datei alleine kannst du nichts anfangen, du
brauchst die dazugehörige(n) C-Datei(en). Die H-Datei musst du nicht zu
den anderen kopieren, mach lieber in deinem Projekt ein
Unterverzeichnis "lcd" in das du die C- und H-Dateien aus der
LCD-Lib. reinkopierst. Dann bindest du die lcd.h mit #include
"lcd/lcd.h" in dein Hauptprogramm ein, kompilierst die lcd/lcd.c, und
linkst sie zu deinem Hauptprogramm. Also im einfachsten Fall

avr-gcc -Os -mmcu=at90s4433 -Wall -o meinprogramm.elf main.c lcd/lcd.c

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.