Lcd-Ansteuerung aus Tutorial funktioniert nicht!

Gast #657842
Hallo allerseits,

habe endlichmal angefangen mich in die Welt der Mikros hervor zu wagen.
Nun hänge ich an der Stelle des Tutorials fest wo ein Text auf dem 
Display ausgegeben werden soll.

Bei mir kommen immer wieder die errors call k: Unsupported instruction 
on ATmega8 bei laden der lcd routines.

Bin sehr dankbar über jede Hilfe !!!

Gruß
Den Befehl call gibt es auf dem ATMega nicht. Nimm rcall. Das selbe gilt 
übrigens, falls irgendwo ein jmp steht, das muss entsprechend durch rjmp 
ersetzt werden.

Im Datenblatt steht übrigens ein Instruction Set Summary. Da steht drin, 
welche Befehle es für den jeweiligen AVR überhaupt gibt.
Gast
Danke für die schnelle Antwort.
Da ich aber die codes aus dem tutorial 1:1 übernommen und auch noch mal 
nachgeprüft habe kann ich das ausschliessen.

Hier nochmal der ganze error beim Build:

....\lcd-routines.asm(163)bzw.(243): error: call k: Unsupported 
instruction set on ATmega8
Nein, da ist anscheinend tatsächlich ein Fehler im Code zum Tutorial! An 
einer Stelle steht "call lcd_data". Also wie oben schon gesagt: ersetze 
call durch rcall und es sollte laufen, falls nicht noch mehr Fehler drin 
sind.

EDIT:
Korrigiere: Es steht an ZWEI Stellen call statt rcall.

Übrigens: Es macht i.d.R. kaum Sinn, eine Fehlermeldung ohne den 
dazugehörigen Code zu posten...
Gast
Sorry das mir jetzt peinlich,habe den Atmega8 16PU drin. Habe oben in 
der include aus 8 ne 16 gemacht und nun funktioniert es.

Trotzdem danke für die Hilfe.
Klar, wenn Du das Ding für einen ATMega16 assemblierst, dann geht das 
Assemblieren, weil der Mega16 den call-Befehl hat. Aber der Code läuft 
nicht auf dem Mega8!!!

Der Mega8-16PU ist ein Mega8 und der Mega8 hat (wie oben erwähnt) keinen 
call-Befehl! Code, der für einen Mega16 assembliert wurde, läuft unter 
Garantie nicht auf dem Mega8!

Du musst die calls ersetzen, sonst gar nichts. Ich hoffe, das ist jetzt 
klar...
B.K. wrote:
> Trotzdem versteh ich es nicht da es sich ja um einen ATmega8 handelt.
EBEN! Der Mega8 hat keinen call-Befehl, sondern nur einen rcall. Deshalb 
musst Du, um den Code auf einem Mega8 zum laufen zu bringen, die beiden 
vergessenen "r"s im Code hinzufügen! Ein Mega16 ist was völlig anderes!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 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.