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

Attiny26 - nieprawidłowa praca ADC w BASCOM'ie

KmiecikSe 05 Gru 2009 17:19 1715 2
REKLAMA
  • #1 7348646
    KmiecikSe
    Poziom 15  
    Witam!
    Mam taki program:
    
    $regfile = "at26def.dat"
    $crystal = 1000000
    
    Config Porta = &B11111111;
    Config Portb = &B00000000;
    Porta = &B11111111;
    Portb = &B00000000;
    
    Config Adc = Single , Prescaler = Auto , Reference = Internal
    Start Adc
    
    Dim W As Word
    
    Do
    W = Getadc(8)
    Porta = W
    Loop
    End


    Na porcie diody migają jak szalone, jedynie starsze 3 bity dobrze pokazują, a na reszcie pinów to jakby była jakaś funkcja RANDOM.
    Co w programie może być źle, że taki efekt działania jest?
    Czy ktoś może mi pomóc z tym problemem?
  • REKLAMA
  • #3 7349699
    KmiecikSe
    Poziom 15  
    Hmm... tak już robiłem i to nie pomogło... ale już poradziłem sobie z problemem ;D Wina była zakłóceń, bo po dolutowaniu na wejście pomiarowe ADC8 kondensatora, diody przestały szaleć. Dodatkowo brakowało przesunięcia bitowego (bo na port podawało 8 bitów młodszych z 10).
    Miałem na celu zrealizowanie sterownie PWM za pomocą ADC (napięcie z potencjometru). Cały gotowy, dobrze działający program:


    $regfile = "attiny26.dat"
    $crystal = 1000000
    
    Config Porta = &B11111111;                                           'PORTA jako wyścia
    Config Portb = &B00000000;                                           'PORTB jako wejścia
    Porta = &B11111111;                                                     'inicjalizacja stanów PORTA
    
    Config Adc = Free , Prescaler = 64 , Reference = Avcc       'konfiguracja ADC
    Start Adc                                                                        'start przetwornik ADC
    Dim W As Long                                                               ' deklaracja zmiennej
    Tccr1a = &B01010011                                         'Ustawienia licznika TIMER1 na PWM
    Tccr1b = &B10000101
    Ocr1c = 255                                                        'wartość z którą porównywane jest próbkowane napięcie o max wartości 255
    
    Config Pinb.0 = Output                                         'nóżka OC1A (PWM) jako wyście
    
    
    Do
    W = Getadc(8)                                                     'początek nieskończonej pętli
    Rotate W , Right , 2                                              'przesuń zawartość W o 2 bity w prawo
    Porta = W                                                            'ślij na porta wartość ADC
    Ocr1a = W                                                           'ślij wartość ADC do porównania PWM
    Loop                                                                    'koniec pętli Do
    End                                                                     'koniec programu



    Dodam jeszcze, że w wersji BASCOM 1.11.7.4 nie działał mi ADC w konfiguracji FREE, Teraz w wersji 1.11.9.5 śmiga wszystko jak należy :D
    Zamykam temat ;]
REKLAMA