mit dem problem schlag ich mich schon eine ganze weile rum
tiny26 ADC und Bascom
eine messung an ADC0 ist mir noch nie gelungen
Problem an porta bit 4-7 sind led
ADC1 porta.1 ist die zu messende Spannung AVCC ist refference
muss ich da noch einen condensator an VREF anlegen gegen masse oder geht das so mit der VCC an AVCC
gibt es in Bascom auch die möglichkeit den Wrd wert des ADc in eine byte variabel zu konvertieren
und ich hab noch nirgends eine schaltung zum testen gefunden
damit man mal aus der VCC saubere volt von 0-vcc zum messen bekommt
hat da jemand ne idee ein LM317 bringt ja minimum1.25volt
sonst sind die werte über 1,25bis vcc sauber zu messen jedenfals bei mir
ich kalibrier den µc auf dies weise
tiny26 hat ja intern 8mhz clock
das ist bei der gröse und den feathers voll klasse für die roboter technik
messen 10kanäle 10bit Steuern 2Kb flash eeprom und sram regeln
15ports
hätte da jemand mal einen funktionierenden code (GETESTET) selberschreiben kann ich auch aber funzen soll er
der den adc(0) sauber wandelt kann auch sein das nach so ca 1500 testflashen der µc was hat
danke
Code:
'/////////////////////////////////////////////////////////
'/// Bascom ISP Programmer TEST ///
'/// PORT B toggel LED SERVOan portb3 LCD
' ADC1 porta1=signal 0-5V FUNKTION TYNY26 feb 2007
'/////////////////////////////////////////////////////////
$regfile = "AT26def.dat" ' used device
$crystal = 8000000
$hwstack = 32 ' default use 32
$swstack = 10 'default use 10 for
$framesize = 40 'default use 40 for
Ddra = &B11110000
Config Adc = Free , Prescaler = 64 , Reference = Off
Start Adc
Config Pinb.3 = Output
Config Pinb.4 = Output
Config Pinb.5 = Output
Config Servos = 1 , Servo1 = Portb.3 , Reload = 10
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portb.5 , Rs = Portb.4
Config Lcd = 20 * 2
Const Teiler = 0.00488
Const Teiler2 = 1.636
Enable Interrupts
'Start Adc
Dim Wertad As Word
Dim Tmp As Word
Dim Wertse As Byte
'Dim A As Byte
'Dim Teiler As Single
Dim Volt As Single
Wertad = 500
'Teiler = 0.00488
Do
Waitms 10
Wertad = Getadc(1)
'If Wertad > 500 Then Set Porta.5
'If Wertad < 500 Then Set Porta.6
If Wertad > 1022 Then Wertad = 1022
If Wertad < 10 Then Wertad = 10
Tmp = Wertad / 4
If Tmp > 150 Then Tmp = 150
If Tmp < 40 Then Tmp = 40
Wertse = Low(tmp)
Servo(1) = Wertse
Volt = Wertad * Teiler
Cls
Lcd "Volt :" ; Volt
Locate 1 , 11 : Lcd " V " '; Fusing(volt , "# . ##")
Lowerline
Wertse = Wertse - 40
Volt = Wertse * Teiler2
Lcd "Grad :" ; Volt
Locate 2 , 13 : Lcd " " '; Fusing(volt , "# . ##")
Waitms 100
Loop
'kein speicherplatz ehr auf dem chip fusing nicht möglich
Lesezeichen