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

[Bascom][atmega32] Timer1, programowa zmiana prescale

Alucardrol 24 Maj 2009 17:34 1680 3
REKLAMA
  • #1 6569404
    Alucardrol
    Poziom 10  
    Witam.
    mam problem z programem gdyż korzystając z Timera1 chciałbym w programie zmieniać prescale po wciśnięciu np. s1 na 8 a po wciśnięciu s2 na 1024, problem w tym że w najprostrzej wersji programu :

    
    If Pinb.0 = 0 Then
       Config Timer1 = Timer , Prescale = 1024
    End If
    
    If Pinb.1 = 0 Then
       Config Timer1 = Timer , Prescale = 8
    End If
    


    pinb.0 i pinb.1 ustawione jako wejście, stan normalny 1, są one zwierane do masy, ale mimo wszystko po wciśnięciu: s1 lub s2, wszystkich na raz lub żadnego to timer1 ma prescale ustawiony na tą wartość drugą, nawet w wypadku

    
    If Pinb.0 = 0 Then
       Config Timer1 = Timer , Prescale = 1024
    Else
       Config Timer1 = Timer , Prescale = 8
    End If
    


    gdy pinb.0 jest przyłączony do GND to timer1 nadal posiada prescale = 8
    odziwo po załadowania kodu :

    
    
    If Pinb.0 = 0 Then
       Config Timer1 = Timer , Prescale = 1024
       Portd.0 = 1
       portd.1 = 0
    End If
    
    If Pinb.1 = 0 Then
       Config Timer1 = Timer , Prescale = 8
       Portd.0 = 0
       Portd.1 = 1
    End If
    


    na wyjściach mam stany Portd.0 = 1 Portd.1 = 0 a program działa z prescale = 8

    Więc moje pytanie brzmi czy jest możliwość programowej zmiany prescale podczas działania programu ? A jeśli da się to w czym może być problem ?

    Z góry dziękuje za pomoc
  • REKLAMA
  • #2 6569473
    Dawid_20
    Poziom 17  
    A dałeś PORTB na włączone rezystory podciągające?
  • REKLAMA
  • #3 6569500
    Alucardrol
    Poziom 10  
    tak. poza tym w przypadku z diodami jest widoczny skok do odpowiedniego bloku kodu (zapalenie, zgaszenie leda)
  • #4 6569591
    Konto nie istnieje
    Poziom 1  
REKLAMA