logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega8][Bascom] Problem z ADC

rafcio363 31 Paź 2008 10:25 2859 4
REKLAMA
  • #1 5686107
    rafcio363
    Poziom 30  
    Witam.
    Mam dwa woltomierze ,jeden na atmega32 i mierzy dokładnie.
    Złożyłem drugi układ na atmedze8 i mam ciągle 1,8V na wyświetlaczu bez podłaczonego napięcia do portu ADC.
    Dziwne bo mam ten sam kod/schemat co z atmega32.

    [Atmega8][Bascom] Problem z ADC
    $regfile = "m8def.dat"
    
    $crystal = 8000000
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0 ,
    Deflcdchar 0 , 21 , 14 , 14 , 31 , 31 , 14 , 14 , 21        ' replace ? with number (0-7)
    
    
    Config Pind.0 = Output                                      'dioda
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    
    
    
    Dioda Alias Portd.0
    
    Dim I As Byte
    
    Dim Wart_ac As Word
    Dim Wart_acpomoc As Word
    Dim V As Single
    Dim Wart_nap As String * 3
    
    
    Dim Wart_ac1 As Word
    Dim Wart_acpomoc1 As Word
    Dim V1 As Single
    Dim Wart_nap1 As String * 3
    
    
    Start Adc
    
    
    Cursor Off Noblink
    
    Do
    Cls
    
    Toggle Dioda
    
    
    Wart_acpomoc = 0
    Wart_acpomoc1 = 0
    Wart_ac = 0
    Wart_ac1 = 0
    
     For I = 1 To 100
    
      Wart_acpomoc = Getadc(2)
      Wart_ac = Wart_ac + Wart_acpomoc
    
      Wart_acpomoc1 = Getadc(3)
      Wart_ac1 = Wart_ac1 + Wart_acpomoc1
    
    
     Next
    
    
    Wart_ac = Wart_ac / 100
    V = Wart_ac * 0.0049
    V = V * 5.86                      'dla dzielnika
    Wart_nap = Fusing(v , "#.&&")
    Locate 1 , 1
    Lcd "Akus " ; Wart_nap
    
    
    Wart_ac1 = Wart_ac1 / 100
    V1 = Wart_ac1 * 0.0049
    Wart_nap1 = Fusing(v , "#.&&")
    Locate 2 , 1
    Lcd "Sonda " ; Wart_nap1
    
    
    
    
    Waitms 100
    
    Loop
    End
    
  • REKLAMA
  • #2 5689679
    dawid512
    Poziom 32  
    Podłącz napięcie do ADC i zobacz czy wtedy też pokarze ci 1.8V.
  • REKLAMA
  • #3 5690540
    Matkas
    Poziom 15  
    Witam,
    dopiero ucze się programowac w Bascomie i mam pare pytań.
    Ponumeruje je żeby łatwiej było odpowiedzieć:

    1.Która częśc kodu odpowiada za pobranie napięcia
    2.Która częśc kodu wyświetla napięcie na Wyświetlaczu.

    Pozdrawiam
  • REKLAMA
  • #4 5690955
    J_Bravo
    Poziom 27  
    Matkas napisał:
    Witam,
    dopiero ucze się programowac w Bascomie i mam pare pytań.
    Ponumeruje je żeby łatwiej było odpowiedzieć:

    1.Która częśc kodu odpowiada za pobranie napięcia

    Wart_acpomoc = Getadc(2) 


    2.Która częśc kodu wyświetla napięcie na Wyświetlaczu.

    Lcd "Akus " ; Wart_nap 




    Polecam Helpa.
  • #5 5694560
    rafcio363
    Poziom 30  
    Problem był z deklaracją zmiennej :) Takie małe przeoczenie :idea:

    $regfile = "m8def.dat"
    
    $crystal = 8000000
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0 ,
    Deflcdchar 0 , 21 , 14 , 14 , 31 , 31 , 14 , 14 , 21        ' replace ? with number (0-7)
    
    
    Config Pind.0 = Output                                      'dioda
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    
    
    
    Dioda Alias Portd.0
    
    Dim I As Byte
    
    Dim Wart_ac As Single
    Dim Wart_acpomoc As Integer
    Dim V As Single
    Dim Wart_nap As String * 3
    
    
    Dim Wart_ac1 As Single
    Dim Wart_acpomoc1 As Integer
    Dim V1 As Single
    Dim Wart_nap1 As String * 3
    
    Dim Pom As Word
    Dim Pom1 As Word
    
    Start Adc
    
    
    Cursor Off Noblink
    
    
    Do
    Cls
    
    Toggle Dioda
    
    
    Wart_acpomoc = 0
    Wart_acpomoc1 = 0
    Wart_ac = 0
    Wart_ac1 = 0
    
     For I = 1 To 10
    
       Wart_acpomoc = Getadc(2)
       Wart_ac = Wart_ac + Wart_acpomoc
    
       Wart_acpomoc1 = Getadc(3)
       Wart_ac1 = Wart_ac1 + Wart_acpomoc1
    
      Next
    
    
     Pom = Getadc(2)
     Pom1 = Getadc(3)
    
    
    
    Wart_ac = Wart_ac / 10
    'Wart_ac = Pom1
    V = Wart_ac * 0.0047
    'V = V * 5.86
    Wart_nap = Fusing(v , "#.&&")
    Locate 1 , 1
    Lcd "Ak2 " ; Wart_nap
    Locate 1 , 11
    Lcd Pom1
    
    
    Wart_ac1 = Wart_ac1 / 10
    'Wart_ac1 = Pom
    V1 = Wart_ac1 * 0.0047
    Wart_nap1 = Fusing(v1 , "#.&&")
    Locate 2 , 1
    Lcd "Son " ; Wart_nap1
    Locate 2 , 11
    Lcd Pom1
    
    
    
    Waitms 100
    
    Loop
    End
REKLAMA