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.
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.
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
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!
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?
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!
Woher soll der Compiler wissen was mit LCD_Init() gemeint ist? Die H-Datei enthält nur den Funktionsprototyp, nicht die Definition.
Nein. Eine H-Datei alleine nützt dir aber normalerweise nur was, wenn du auch die dazugehörige C-Datei oder Library hast. Warum probierst du nicht die LCD-Lib von Peter Fleury aus?
egal, ich probiers jetzt selber mal muss ich die LCD.h dann zu den anderen .h dateien kopieren oder egal?
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.