Hallo,
ich habe versucht das von Euch beschriebene umzusetzen.
Das ist dabei rausgekommen:
läuft aber leider nicht. Ist es nicht richtig, dass ich das Bit 6 im Register Adcsra auf 0 setze, um dann bei Timerinterrup auf 1 zu gehen und damit die Einzelwandlung anstoße?
Gruß
Holger
ich habe versucht das von Euch beschriebene umzusetzen.
Das ist dabei rausgekommen:
Code:
ADC-Werte-einlesen
'Dateiname: ADC-Werte-einlesen5.bas
'-------------------------------------------------------
'Hardware: Poti1 an PC5/ADC5
' MAX232 an PD0/PD1, Nullmodemkabel zum PC
'-------------------------------------------------------
$regfile = "m8def.dat" 'ATmega8-Deklarationen
$crystal = 3686400 'Quarz: 3,6864 MHz
Dim Wert As Word
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
Ddrb = &B11111111
Ddrc = &B00000000 'PC7...PC0=0: PortC-Pins auf Eingang
On Timer1 Ontimer1 'Interrupt-Routine für Timer1-Overflow
'Bis 0..2: Timer Takt ist Quarz/64 =
Tccr1b = &B00000011 ',87 sek pro Impuls
Timsk.toie1 = 1 ' Timer1-Overflow-Interrupt ein
Sreg.7 = 1 'Globale Interrupfreigabe
Admux = &B01100000 'Bit 6und 7 =01=AVCC ist Refenzspannug
'Bit 5 =1=nur 8 Bit Genauigkeit
'Bit4 nicht belegt
'Bit 3...0 = 0000 =Pin ADC0 = PC0
Adcsra = &B10000111 'Bit 7 =1=ADC an
'Bit 6 =1=ADC gestartet
'Bit 5 =0 keine fortlaufende Wandlung
'Bit 4 =0 ADIF =ADC Interrupt Flag
'Bit 3 =0 ADIE =ADC Interrupt Enable
'Bits 2..0 = AVRClock/128
Wert = Adif
Do
If Wert = 1 Then
Locate 1 , 1
Lcd "Temperatur " ; Adch
End If
Loop
Ontimer1:
Adcsra.6 = 1 'Bit 6 =1 jede Messung wird einzeln gestartet
Return
läuft aber leider nicht. Ist es nicht richtig, dass ich das Bit 6 im Register Adcsra auf 0 setze, um dann bei Timerinterrup auf 1 zu gehen und damit die Einzelwandlung anstoße?
Gruß
Holger