Hallo, ich bin gerade dabei das AVR-Tutorial durchzu arbeiten. Jetzt bin ich an dem Punkt LCD angekommen und habe da ne Frage. Bei dem Hauptprogramm wird unten die Datei lcd-routines.asm abgefragt. Das wird das Programm vorher sein zum lcd initialieren und lcd lesen lassen und so. Jetzt kann ich das Programm ja ganz normal in Atmel Studio einhacken und unter dem namen lcd-routines.asm abspeichern. Aber wohin muss ich das speichern? Der Rechner durchsucht doch nicht den ganzen PC nach der Datei, das muss doch in einen bestimmten Ordner oder? MfG Xizeru
Dein Headline "LCD - AVR-Tutorial" hat nichts - aber auch gar nichts mit deinem Problem zu tun. Der Umgang mit solch eine Software muss man auch erlernen. Gibt's dazu nicht ein Hilfesystem auf der Festplatte oder auch beim Software Hersteller ?
Preise Avr & Pic schrieb: > Der Rechner durchsucht doch nicht den > ganzen PC nach der Datei, das muss doch in einen bestimmten Ordner oder? Der Rechner hat einen Suchpfad, in den bestimmte Ordner aufgenommen sind, die automatisch durchsucht werden. Dateien werden gefunden, wenn ihr Ordner vom Suchpfad erfasst ist oder wenn sie mit pfad & Dateiname genau spezifiziert werden.
Preise Avr & Pic schrieb: > Aber > wohin muss ich das speichern? Da wo Du es auch wiederfindest. Von dort kannst Du es in das Projekt kopieren, wo Du es gerade brauchst. Preise Avr & Pic schrieb: > Der Rechner durchsucht doch nicht den > ganzen PC nach der Datei Nein, er schaut nur im aktuellen Projekt nach, welches Du angelegt hast. Du solltest Dir also für alle Deine Projekte und Daten eine für Dich sinnvolle Ordnerstruktur überlegen, damit es auf Deiner Festplatte nicht so aussieht, wie bei Hempels unterm Sofa.
Atmel Studio 7 habe gerade rechts bei meinem Projekt folgendes gemacht: Rechtsklick, Add, New Item, Assembler File, als lcd-routines bezeichnet und den ersten code beim Tutorial reingeschrieben, funzt aber nicht.
P. W. schrieb: > funzt aber nicht. "funzt aber nicht" ist aber eine Fehlermeldung mit der hier niemand was anfangen kann. Und ich wette dass das Studio nicht diese Fehlermeldung ausgibt sondern etwas aussagekräftigeres.
Vorher hat er immer gemeldet dass er lcd_data usw. nicht kennt, wollte deshalb auch nicht in .hex umwandeln Jetzt habe ich .include "lcd-routines.asm" oben hingeschrieben anstatt unten. (Versteh ich auch nicht warum das im Tutorial unten steht, kenne sowas eig nur oben) Jetzt hat er umgewandelt, kann auch alles hochladen, meldet keinen Fehler, nur das LCD zeigt in der oberen Reihe einfach nur komplett weiße Balken an
Habe jetzt gemerkt, dass ich mich beim LCD wohl vergriffen habe. Habe folgendes LCD: qc1602a v2.0 Dazu finde ich nur ein Datenblatt und da steht was von nem Controller KAD066. Leider finde ich zu diesem Controller nichts, weiss da jemand was?
P. W. schrieb: > Habe jetzt gemerkt, dass ich mich beim LCD wohl vergriffen habe. Habe > folgendes LCD: qc1602a v2.0 Das ist ein stinknormales LCD kompatibel zu allen was so kreucht und fleucht. Jedenfalls brauchst du deswegen nicht nochmal ein neues Tutorial "durcharbeiten". Aber an den Grundlagen hapert es noch erheblich. Was z.B. daraus ersichtlich ist dass du glaubst dein Studio "wandelt" den Text in ein Hexfile um.
Mitlesa schrieb: > P. W. schrieb: >> Habe jetzt gemerkt, dass ich mich beim LCD wohl vergriffen habe. Habe >> folgendes LCD: qc1602a v2.0 > > Das ist ein stinknormales LCD kompatibel zu allen was so > kreucht und fleucht. > > Jedenfalls brauchst du deswegen nicht nochmal ein neues > Tutorial "durcharbeiten". > > Aber an den Grundlagen hapert es noch erheblich. Was z.B. > daraus ersichtlich ist dass du glaubst dein Studio > "wandelt" den Text in ein Hexfile um. Dann halt Assemblieren bzw übersetzen...du weisst was gemeint ist :D
:
Bearbeitet durch User
P. W. schrieb: > du weisst was gemeint ist :D Ich weiss was gemeint ist aber du schaffst es nicht einmal eine einfache Fehlermeldung wie sie das Studio ausspuckt zu zitieren. Auch nicht auf Anforderung.
Mitlesa schrieb: > P. W. schrieb: >> du weisst was gemeint ist :D > > Ich weiss was gemeint ist aber du schaffst es nicht einmal > eine einfache Fehlermeldung wie sie das Studio ausspuckt zu > zitieren. Auch nicht auf Anforderung. Wozu denn noch, ich bekomme doch keine mehr :D
P. W. schrieb: > Mitlesa schrieb: >> P. W. schrieb: >>> du weisst was gemeint ist :D >> >> Ich weiss was gemeint ist aber du schaffst es nicht einmal >> eine einfache Fehlermeldung wie sie das Studio ausspuckt zu >> zitieren. Auch nicht auf Anforderung. > > Wozu denn noch, ich bekomme doch keine mehr :D Wie finde ich den Fehler den ich gemacht habe denn am besten? Fehlercode zeigt er leider keinen an, wie schaue überprüfe ich das am besten? Schaltplan und Programm hab ich schon 2 Mal durch gesehen, genauso wie das Original....bis auf das das .include "lcd-routines.asm" oben steht, aber das muss es ja auch
:
Bearbeitet durch User
P. W. schrieb: > nur das LCD zeigt in der oberen Reihe einfach nur komplett weiße > Balken an Gehe nochmal genau die Anschlussbelegung durch - der Tutorial Code funktioniert nur, wenn du dich genau nach der Tabelle richtest. Der Balken in der ersten Zeile ist schon mal ein Zeichen dafür, das der Kontrast einigermassen stimmt und die Betriebsspannung auch. Nun Pin für Pin überprüfen (mit dem Datenblatt deines speziellen LCD) das alles so angeschlossen ist, wie es soll. Ausserdem muss dein MC mit 4Mhz laufen, so hat Andreas das jedenfalls codiert. Langsamerer Takt schadet nicht, schnellerer aber schon. Huetzutage ist das etwas fremd, weil die meisten AVR heute mit 1Mhz ausgeliefert werden und auf 8Mhz am einfachsten zum Laufen zu bringen sind. Der Mega8 ist da etwas altbacken. Übrigens darf das .include "lcd-routinen.asm" wirklich nicht direkt am Anfang stehen, da der MC sonst als erstes darein springt. Das wird aber schiefgehen, denn das Hauptprogramm beginnt bei
1 | ldi temp1, LOW(RAMEND) ; LOW-Byte der obersten RAM-Adresse |
2 | out SPL, temp1 |
3 | ldi temp1, HIGH(RAMEND) ; HIGH-Byte der obersten RAM-Adresse |
4 | out SPH, temp1 |
:
Bearbeitet durch User
Bin ich schon durchgegangen, alles okay, ich selber hab einen atmega8A und habe dementsprechend oben die include auf "m8adef.inc" abgeändert
Matthias S. schrieb: > Übrigens darf das .include "lcd-routinen.asm" wirklich nicht direkt am > Anfang stehen, da der MC sonst als erstes darein springt. Das wird aber > schiefgehen, denn das Hauptprogramm Üblich ist es deswegen, am Anfang eines ASM Programmes den Einsprungvektor zu belegen. Ganz am Anfang eines Programmes steht dann:
1 | .include "m8adef.inc" |
2 | .CSEG |
3 | .ORG 0x0 |
4 | rjmp RESET ; Reset Handler |
5 | ; nun kannst du z.B. das include machen |
6 | .include "lcd-routines.asm" |
7 | ; und nun beginnt das Hauptprogramm |
8 | |
9 | RESET: ldi temp1, LOW(RAMEND) ; LOW-Byte der obersten RAM-Adresse |
10 | out SPL, temp1 |
11 | ldi temp1, HIGH(RAMEND) ; HIGH-Byte der obersten RAM-Adresse |
12 | out SPH, temp1 |
13 | ; und so weiter |
Das hat Andreas nicht deutlich gemacht. Die Sprungtabelle für den AVR steht ganz am Anfang (0x0) und kann auch noch andere Vektoren enthalten, RESET ist aber für dich erstmal ausreichend.
:
Bearbeitet durch User
Perfekt, jetzt läuft alles..hätte ich auch drauf kommen können, wird das include zu früh aufgerufen dann springt er direkt uns ohne einen rjmp Befehl ausm hauptprogramm da rein....steht es zu spät kann der Code nicht übersetzt werden weil die variablen teilweise unbekannt sind oder?
P. W. schrieb: > steht es zu spät kann der Code > nicht übersetzt werden weil die variablen teilweise unbekannt sind oder? Naja, eigentlich hat Andreas den Code schon so gemacht, das er übersetzbar wäre. Aber so genau habe ich mir das jetzt nicht angesehen. P. W. schrieb: > dann springt er direkt uns ohne einen rjmp > Befehl ausm hauptprogramm da rein So isses. Er springt einfach in die erste Routine im include und stösst dann irgendwann auf ein RET - und da es gar nicht als Unterprogramm angesprungen wurde, hat der MC keine Ahnung, wohin er da zurückkehren sollte -> schmiert ab, bzw. macht irgendwas ungewolltes, wie z.B. auf die Adresse springen, die sich aus zufälligen Werten im Stack zusammensetzt.
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.