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







Zitieren

Lesezeichen