amozi
10.01.2008, 18:07
Hallo,
ich habe ein Problem beim Auslesen der Kanäle 8-15 mit der Bascom-Funktion Getadc(). Die unteren Channels 0-7(Port F beim Atmega1280) funktioniert einwandfrei. Aber sobald ich Port K (also Channel 8-15) auslese, wird die Referenzspannung 5V ausgegeben obwohl 1,2V an dem entsprechenden Port anliegt (natürlich der Counter ausgegeben).
Hier ist mein Code, zusammengefaßt:
$regfile = "m1280def.dat"
Config Portf = &B00000000
Config Portk = &B00000000
Dim Result As Word
Dim Channel As Word
Config Adc = Single , Prescaler = Auto , Reference = Avcc 'Avcc=5V
Start Adc
'Channel 0-7 auslesen funktioniert
Result = Getadc(0) '0-7
'Channel 8-15 wird falsch ausgelesen 1023(5V) anstatt 245(1.2V)
'im ADMUX-Registor muss ADLAR gesetzt sein, deswegen entspricht
'32=Channel[8] 33=Channel[9] .... 39=Channel[15]
Channel = 32
Result = Getadc(channel)
'Bits um 6 verschieben, da bei Channel 8-15 die beiden ADC-Dataregister linksorientiert sind
Shift Result , Right , 6
Vielen Dank für die Unterstützung
ich habe ein Problem beim Auslesen der Kanäle 8-15 mit der Bascom-Funktion Getadc(). Die unteren Channels 0-7(Port F beim Atmega1280) funktioniert einwandfrei. Aber sobald ich Port K (also Channel 8-15) auslese, wird die Referenzspannung 5V ausgegeben obwohl 1,2V an dem entsprechenden Port anliegt (natürlich der Counter ausgegeben).
Hier ist mein Code, zusammengefaßt:
$regfile = "m1280def.dat"
Config Portf = &B00000000
Config Portk = &B00000000
Dim Result As Word
Dim Channel As Word
Config Adc = Single , Prescaler = Auto , Reference = Avcc 'Avcc=5V
Start Adc
'Channel 0-7 auslesen funktioniert
Result = Getadc(0) '0-7
'Channel 8-15 wird falsch ausgelesen 1023(5V) anstatt 245(1.2V)
'im ADMUX-Registor muss ADLAR gesetzt sein, deswegen entspricht
'32=Channel[8] 33=Channel[9] .... 39=Channel[15]
Channel = 32
Result = Getadc(channel)
'Bits um 6 verschieben, da bei Channel 8-15 die beiden ADC-Dataregister linksorientiert sind
Shift Result , Right , 6
Vielen Dank für die Unterstützung