Mega8 assembler LCD ADC beendet nicht

Gast #3431108
Lesenswert?

Moin,
Bin gerade dabei eine ECU für meine modellturbine zu bauen, 16x2 lcd, 
Mega8, lcd routine aus dem tut leicht verändert so, dass E und RS an 
PORTB hängen, obwohl die daten durch PORTC laufen. Das funnktioniert 
soweit alles einwandfrei und sollte mit dem Problem (eigentlich) nichts 
zu tuhen haben.

Die Sache ist, dass ich zwecks Abgastemperatur ein thermoelement mit Op 
am ADC4 (PC4) hängen habe. Wenn ich jetzt den ADC arbeiten lasse mit:


;ADC initialisierung
ldi temp, 0b01000100
sts ADMUX, temp    ; 2.56V Referenz, Left Adjust, PC4

...

ldi temp, 0b11000100
sts ADCSRA, temp   ;Start ADC conversion

readADCvalue:
lds temp, ADCSRA
sbrc temp, 6 ; 0 wenn fertig
rjmp readADCvalue

lds temperaturL, ADCL
lds temperaturH, ADCH


Bleibt das rogramm in der schleife hängen. ADSC wird also nie 0. Wenn 
ich die schleife weg lasse und auf free running stelle, bzw es mit 
interupt versuche bleibt nichts mehr hängen, aber aus ADCH und ADCL 
kommt immer die gleiche Zahl. Wenn ich innerhalb vom hängenden loop den 
Wert von temp aufs Display ausgebe bekomme ich erwartungsgemäß 11000100, 
also das gleiche, was ich oben in ADCSRA geladen habe.

Könnte es sein, dass das an der PORTC verwendung vom LCD lieg? Aber dan 
sollte das ding ja zumindest die konvertierung abschließen können oder?
Kann mir da jemand helfen? Bin am ende meines wissens was das angeht. 
Der volle (wohl etwas unübersichtliche) code steht im Anhang.

Danke schon mal
Amper
Angehängte Dateien:
Gast #3431178
Lesenswert?

Leider nicht, dass ist beim mega außerhalb des bereiches, lässt sich nur 
mit sts und lds erreichen. die inits etc habe ich von einem vorherigen 
test 1:1 übernommen, sollte eigentlich soweit alles passen.
#3431555
Lesenswert?

Amper schrieb:
> seltsam, da is wohl irgendwas mit meinem compiler krumm, include passt,
> einstellungen passen... hm

Welches AVR-Studio?

Die neueren haben da auch so eine besch... Sache, dass sie auch bei 
Assembler den µC Typ voreingestellt haben wollen und die Angabe im 
Assembler Code übergehen.


PS: Es heisst Assembler und nicht Compiler.

Compiler  ... Hochsprache
Assembler ... einfache Umwandlung von Memnonics in die Befehls-Opcodes.

Siehe PeDa. Wenn du das Ding Compiler nennst, kommt es zu 
Verwechslungen.
Gast #3431559
Lesenswert?

Hat sich erledigt, hatte es in geistiger abwesendheit mit MOV versucht 
klar, dass das nicht geht.... Danke an alle beteiligten, hätte  wohl 
noch ne weile gedauert, bis ich durch das brett geschaut hätte.... :D :D

mfg Amper

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren