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

Odmierzanie czasu atmega16 bascom

mateusz1313 21 Gru 2009 12:32 2906 6
REKLAMA
  • #1 7417525
    mateusz1313
    Poziom 10  
    Witam dopiero zaczynam przygodę z programowaniem mikrokontrolerów i mam pytanie odnośnie odmierzania czasu na uc atmega 16. Odmierzam czas przy pomocy timera1 kwarc 16MHz. Z obliczeń wynika, że przy preskalerze 1024 muszę odliczyć 15625 impulsów więc ładuję do timera wartość 49911 i wtedy uc odmierza mi około 4 sekund zamiast 1, natomiast gdy prescaler ustawię na 256 i załaduję 3036 do timera to odmierzana jest sekunda. I tutaj moje pytanie skąd pojawia się ta różnica? Przecież chyba powinien być odmierzany taki sam czas.
  • REKLAMA
  • #2 7417556
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • REKLAMA
  • #4 7417595
    mateusz1313
    Poziom 10  
    $regfile = "m16def.dat"
    $crystal = 16000000
    
    Config Portd = Output
    Portd = &B01111111
    
    Config Timer1 = Timer , Prescale = 1024
    On Timer1 Sekunda
    Enable Interrupts
    Enable Timer1
    Load Timer1 = 15625
    
    Do
    Loop
    End
    
    Sekunda:
    Load Timer1 = 15625
    Rotate Portd , Left
    Return
    


    i drugi

    
    $regfile = "m16def.dat"
    $crystal = 16000000
    
    Config Portd = Output
    Portd = &B01111111
    
    Config Timer1 = Timer , Prescale = 256
    On Timer1 Sekunda
    Enable Interrupts
    Enable Timer1
    Load Timer1 = 62500
    
    Do
    Loop
    End
    
    Sekunda:
    Load Timer1 = 62500
    Rotate Portd , Left
    Return


    Dodano po 3 [minuty]:

    Fuse bity ustawiałem kalkulatorem
    lfuse: 11111111
    hfuse: 11001001
  • Pomocny post
    #5 7417659
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #7 7420991
    Konto nie istnieje
    Poziom 1  
REKLAMA