DaveWagner
14.02.2009, 12:37
Hallo
Ich habe folgendes Problem:
Ich möchte zwei ADCs gleichzeitig laufen lassen und zwar ist eins für die Temperaturmessung zuständig und das andere für Helligkeitsmessung.
Wenn es dunkel ist soll die Displaybeleuchtung sich einschalten.
Das Thermometer allein funktioniert einwandfrei sobald ich jedoch die Beleuchtung mit einbringe zeigt das Display gar nichts oder nur Wirrwarr an.
Ich bin mir nicht sicher ob es an der Hardware oder Software liegt , aber da beide ( Beleuchtung geht an einem anderen Atmega einzeln ohne Temperaturmessung) einzeln funktionieren dachte ich liegt es am Code
Vielleicht könnt ihr einen Fehler finden hier der Code
PinD.1 ist der Ausgang für die Beleuchtung
' *
' * Title : LCD Thermometer LM35.bas
' * Version : 1.0
' * Last Updated : 17.04.2006
' * Target : AT Mega8
' * Author : www.avrprojects.net
' * Program code : BASCOM AVR
' * Hardware req. : LM35
' * Description : read analog value from LM 35 temperature sensor, show the result on a LCD
' * display with bar-graph
' ************************************************** *************************
$regfile = "M8def.dat" ' use the Mega8
$crystal = 1000000
Deflcdchar 0 , 32 , 32 , 31 , 31 , 31 , 31 , 32 , 32 ' replace ? with number (0-7)'
Deflcdchar 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ' replace ? with number (0-7)
Deflcdchar 2 , 16 , 16 , 16 , 16 , 16 , 16 , 16 , 16 ' replace ? with number (0-7)
Deflcdchar 3 , 16 , 16 , 31 , 31 , 31 , 31 , 16 , 16 ' replace ? with number (0-7)
Deflcdchar 4 , 1 , 1 , 31 , 31 , 31 , 31 , 1 , 1 ' replace ? with number (0-7)
Deflcdchar 5 , 32 , 32 , 28 , 28 , 28 , 28 , 32 , 32 ' replace ? with number (0-7)
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
Config Lcd = 16 * 2
Config Pind.1 = Output
Config Pinb.0 = Input
Taster1 Alias Pinb.0
Led1 Alias Portd.1
Config Adc = Single , Prescaler = Auto , Reference = Avcc 'config ADC
Start Adc
Dim X As Word
Const A = 70
Dim W As Word , Perc As Word , Volt As Word , Volt_d As Byte , Channel As Byte , I As Byte , Cols As Byte , Cols_d As Byte
Cls
Cursor Off
Locate 3 , 1
Lcd "0"
Locate 3 , 4
Lcd "10"
Locate 3 , 8
Lcd "20"
Locate 3 , 12
Lcd "30"
Locate 3 , 16
Lcd Chr(223) ; "C"
Do
X = Getadc(1)
If X > A Then
Led1 = 1
Else Led1 = 0
End If
W = Getadc(0)
Volt = W * 5
Volt_d = Volt Mod 10
Volt = Volt / 10
Locate 1 , 1
Lcd Volt ; "," ; Volt_d
Cols = Volt / 2
Locate 2 , 1
For I = 1 To Cols
Select Case I
Case 1 : Lcd Chr(3)
Case 5 : Lcd Chr(4)
Case 10 : Lcd Chr(4)
Case 15 : Lcd Chr(4)
Case 20 : Lcd Chr(4)
Case Else : Lcd Chr(0)
End Select
Next I
Cols_d = Cols Mod 2
If Cols_d > 0 Then
Lcd Chr(5)
Cols = Cols + 2
Else
Cols = Cols + 1
End If
For I = Cols To 20
Select Case I
Case 1 : Lcd Chr(2)
Case 5 : Lcd Chr(1)
Case 10 : Lcd Chr(1)
Case 15 : Lcd Chr(1)
Case 20 : Lcd Chr(1)
Case Else : Lcd Chr(32)
End Select
Next I
Waitms 1000
Loop
End
Darf ich zweimal AVGND und AVCC als Stromversorgung hernehmen ?
Also für LDR und NTC.
Mfg
David
Ich habe folgendes Problem:
Ich möchte zwei ADCs gleichzeitig laufen lassen und zwar ist eins für die Temperaturmessung zuständig und das andere für Helligkeitsmessung.
Wenn es dunkel ist soll die Displaybeleuchtung sich einschalten.
Das Thermometer allein funktioniert einwandfrei sobald ich jedoch die Beleuchtung mit einbringe zeigt das Display gar nichts oder nur Wirrwarr an.
Ich bin mir nicht sicher ob es an der Hardware oder Software liegt , aber da beide ( Beleuchtung geht an einem anderen Atmega einzeln ohne Temperaturmessung) einzeln funktionieren dachte ich liegt es am Code
Vielleicht könnt ihr einen Fehler finden hier der Code
PinD.1 ist der Ausgang für die Beleuchtung
' *
' * Title : LCD Thermometer LM35.bas
' * Version : 1.0
' * Last Updated : 17.04.2006
' * Target : AT Mega8
' * Author : www.avrprojects.net
' * Program code : BASCOM AVR
' * Hardware req. : LM35
' * Description : read analog value from LM 35 temperature sensor, show the result on a LCD
' * display with bar-graph
' ************************************************** *************************
$regfile = "M8def.dat" ' use the Mega8
$crystal = 1000000
Deflcdchar 0 , 32 , 32 , 31 , 31 , 31 , 31 , 32 , 32 ' replace ? with number (0-7)'
Deflcdchar 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ' replace ? with number (0-7)
Deflcdchar 2 , 16 , 16 , 16 , 16 , 16 , 16 , 16 , 16 ' replace ? with number (0-7)
Deflcdchar 3 , 16 , 16 , 31 , 31 , 31 , 31 , 16 , 16 ' replace ? with number (0-7)
Deflcdchar 4 , 1 , 1 , 31 , 31 , 31 , 31 , 1 , 1 ' replace ? with number (0-7)
Deflcdchar 5 , 32 , 32 , 28 , 28 , 28 , 28 , 32 , 32 ' replace ? with number (0-7)
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
Config Lcd = 16 * 2
Config Pind.1 = Output
Config Pinb.0 = Input
Taster1 Alias Pinb.0
Led1 Alias Portd.1
Config Adc = Single , Prescaler = Auto , Reference = Avcc 'config ADC
Start Adc
Dim X As Word
Const A = 70
Dim W As Word , Perc As Word , Volt As Word , Volt_d As Byte , Channel As Byte , I As Byte , Cols As Byte , Cols_d As Byte
Cls
Cursor Off
Locate 3 , 1
Lcd "0"
Locate 3 , 4
Lcd "10"
Locate 3 , 8
Lcd "20"
Locate 3 , 12
Lcd "30"
Locate 3 , 16
Lcd Chr(223) ; "C"
Do
X = Getadc(1)
If X > A Then
Led1 = 1
Else Led1 = 0
End If
W = Getadc(0)
Volt = W * 5
Volt_d = Volt Mod 10
Volt = Volt / 10
Locate 1 , 1
Lcd Volt ; "," ; Volt_d
Cols = Volt / 2
Locate 2 , 1
For I = 1 To Cols
Select Case I
Case 1 : Lcd Chr(3)
Case 5 : Lcd Chr(4)
Case 10 : Lcd Chr(4)
Case 15 : Lcd Chr(4)
Case 20 : Lcd Chr(4)
Case Else : Lcd Chr(0)
End Select
Next I
Cols_d = Cols Mod 2
If Cols_d > 0 Then
Lcd Chr(5)
Cols = Cols + 2
Else
Cols = Cols + 1
End If
For I = Cols To 20
Select Case I
Case 1 : Lcd Chr(2)
Case 5 : Lcd Chr(1)
Case 10 : Lcd Chr(1)
Case 15 : Lcd Chr(1)
Case 20 : Lcd Chr(1)
Case Else : Lcd Chr(32)
End Select
Next I
Waitms 1000
Loop
End
Darf ich zweimal AVGND und AVCC als Stromversorgung hernehmen ?
Also für LDR und NTC.
Mfg
David