LCD - AVR-Tutorial

Gast #5065657
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
Gast #5065689
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 ?
Gast #5065704
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.
#5065707
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.
Gast #5065796
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.
#5065867
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
#5065914
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?
Gast #5065925
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.
#5065941
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
#5066198
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
(Firma: matzetronics) #5066229
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
(Firma: matzetronics) #5066242
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.
#5066354
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?
(Firma: matzetronics) #5066365
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.