Schaltplan werde ich mal vorbereiten. Ist aber Nur Atmega8 in der Standartbeschaltung mit 3,6MHz Quarz. AVCC =5V direkt, AREF = 5V über 100nF angeschlossen, GND Masse.
Der Sensor liegt an ADC0 (pinc0) über einen 100nF angeschlossen.
Das Programm soll mir nur auf einem Display den digitalenwert anzegen. Zusätzlich noch den Wert vom high und low Byte.
Code:
$regfile = "m8def.dat" 'AtmelMega8 Deklaration
$crystal = 3686400 'Gibt Taktgeschwindigkeit des Quarzes an
$baud = 14400 'Festlegung der Übertragungsgeschwindigleit UART
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcdbus = 4
Cursor Off
Config Timer0 = Timer , Prescale = 1024
Enable Timer0
Timer0 = 0
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Ddrb = &B00110000
Ddrc = &B00011100
Ddrd = &B11111110
Portb = &B00001111
Declare Sub Warten()
Declare Sub Wertholen()
Dim Entfernungswertesumme As Word
Dim Messungen As Byte
Dim Entfernungswertdigi As Word At $160
Dim Entfernungswertdigi1 As Byte At $160 Overlay
Dim Entfernungswertdigi2 As Byte At $161 Overlay
Gosub Wertholen
Cls
Locate 1 , 1
Lcd "D: D1: "
Locate 2 , 1
Lcd "D2:"
Do
Entfernungswertdigi = 0
Entfernungswertdigi1 = 0
Entfernungswertdigi2 = 0
Gosub Wertholen
Locate 1 , 4
Lcd Entfernungswertdigi
Locate 1 , 13
Lcd Entfernungswertdigi1
Locate 2 , 5
Lcd Entfernungswertdigi2
Waitms 400
Loop
End
Sub Wertholen()
Entfernungswertdigi = 0
Entfernungswertdigi = Getadc(0)
End Sub
Sub Warten()
Do
Start Timer0
Loop Until Tcnt0 >= 169
Stop Timer0
Timer0 = 0
End Sub
Das Poti liefert das gleich Ergebnis. Mit einem Multimeter und Oszilloscope kann ich erkennen, das die Spannung auch bei 0,1V Ausgabe vom Sensor noch stabiel ist.
Ist der ADC pin offen , zeigt er gleiches Verhalten wie bei den kleinen Spannungen...
Lesezeichen