Hallo for_ro,
Warum mischt du eigentlich die Config Portx und die DDRx Befehle?
Das ist eine gute Frage. Anbei noch mal die beiden Programme. Ich habe beide jetzt auf nur DDRx Befehle geändert.
Daneben habe ich mal die entsprechenden Werte des Simulators für ADMUX, ADCSRA, PortA und DDRA geschrieben. Ich kann keinen Unterschied finden.
Programm welches funktioniert
Code:
$regfile = "M32def.dat"
$crystal = 7372800
$baud = 9600
$hwstack = 100
$swstack = 100
$framesize = 100
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2
Cursor Off
Cls
Config Adc = Single , Prescaler = Auto , Reference = Avcc ADMUX 40 / ADCSRA 86
Dim X As Word
Dim Y As Word
Start Adc ADCSRA 86
Do
Ddra.0 = 1 DDRA 01 bzw. 0B
Ddra.2 = 1 DDRA 05 bzw. 0F
Ddra.1 = 0 DDRA 05 bzw. 0D
Ddra.3 = 0 DDRA 05 bzw. 05
Porta.0 = 1 PORTA 01 bzw. 09
Porta.2 = 0 PORTA 01 bzw. 09
Waitms 10
Y = Getadc(3) ADMUX 43 / ADCSRA 86
Y = 1024 - Y
Locate 1 , 1
Lcd "y:" ; Y
Ddra.1 = 1 DDRA 07
Ddra.3 = 1 DDRA 0F
Ddra.0 = 0 DDRA 0E
Ddra.2 = 0 DDRA 0A
Porta.3 = 1 PORTA 09
Porta.1 = 0 PORTA 09
Waitms 10
X = Getadc(2) ADMUX 42 / ADCSRA 86
X = 1024 - X
Locate 1 , 9
Lcd "x:" ; X
Loop
End
Programm welches nicht funktioniert
Code:
$regfile = "M32def.dat"
$crystal = 7372800
$baud = 9600
$hwstack = 100
$swstack = 100
$framesize = 100
$sim
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2
Cursor Off
Cls
Dim Y As Word
Dim X As Word
Admux = Bits(refs0) ADMUX 40
Adcsra = Bits(aden , Adsc , Adps2 , Adps1) ADCSRA 86
Do
Adcsra.adsc = 1 ADCSRA 86
ddra.0 = 1 DDRA 01 bzw. 0B
ddra.2 = 1 DDRA 05 bzw. 0F
ddra.1 = 0 DDRA 05 bzw. 0D
ddra.3 = 0 DDRA 05 bzw. 05
Porta.0 = 1 PORTA 01 bzw. 09
Porta.2 = 0 PORTA 01 bzw. 09
Admux.mux0 = 1 ADMUX 41 bzw. 43
Admux.mux1 = 1 ADMUX 43
y = Adc
Waitms 10
Locate 1 , 1
Lcd "y:" ; y
Adcsra.adsc = 1 ADCSRA 86
Ddra.1 = 1 DDRA 07
Ddra.3 = 1 DDRA 0F
Ddra.0 = 0 DDRA 0E
Ddra.2 = 0 DDRA 0A
Porta.3 = 1 PORTA 09
Porta.1 = 0 PORTA 09
Admux.mux0 = 0 ADMUX 42
Admux.mux1 = 1 ADMUX 42
X = Adc
Waitms 10
Locate 2 , 1
Lcd "x:" ; X
Loop
End
Gruß, stefan8010
Lesezeichen