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] Instrukcja watchdog

szeri88 16 Maj 2009 01:08 5455 1
REKLAMA
  • #1 6535562
    szeri88
    Poziom 14  
    Witam,

    Bardzo proszę o sprawdzenie czy program jest poprawnie napisany. Nie korzystałem do tej pory z instrukcji Watchdog, więc nie mam pewności czy jest ona poprawnie umieszczona. Zadaniem programu jest stały pomiar napięcia i w razie wystąpienia spadku załączany jest przekaźnik na czas 2 minut. Jeżeli spadek będzie występował czały czas to przelaźnik cały czas będzie zwarty i rozłączy się dopiero 2 minuty po przywróceniu prawidłowego napięcia. Dziękuję i Pozdrawiam

    $regfile = "m8def.dat"
    $crystal = 8000000
    
    Config Watchdog = 1024
    
    Config Timer0 = Timer , Prescale = 1024
    On Timer0 Pelny_timer0
    Enable Timer0
    Enable Interrupts
    Stop Timer0
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Set Portc.3
    
    Config Portd.3 = Output
    
    Dim Wart_ac As Word
    Dim Srednia_ac As Word
    Dim Petla_ac As Byte
    Dim Licznik As Word
    
    
    Do
       Reset Watchdog
       Start Watchdog
       Start Adc
       Srednia_ac = 0
          For Petla_ac = 1 To 50
              Wart_ac = Getadc(3)
              Srednia_ac = Wart_ac + Srednia_ac
          Next Petla_ac
       Wart_ac = Srednia_ac / 50
          If Wart_ac < 300 Then
             Set Portd.3
             Licznik = 0
             Tcnt0 = 0
             Start Timer0
          End If
       Stop Adc
       Waitms 250
    Loop
    
    Pelny_timer0:
          Incr Licznik
             If Licznik = 3600 Then
                Reset Portd.3
                Stop Timer0
             End If
       Return
  • REKLAMA
  • Pomocny post
    #2 6539350
    Menuet
    Poziom 19  
    Witam,
    Program w zasadzie jest ok, jedyne do czego bym się doczepił to umieszczenie polecenia "Start Watchdog" w głównej pętli programu, zamiast przed, a w pętli tylko polecenie "Reset Watchdog". Po drugie widać, ze za bardzo nie zależy Ci na oszczędności prądu (zegar 8MHz) to ja bym nie wyłączał przetwornika adc, bo po włączeniu pierwszy pomiar jest zazwyczaj błędny...
    Pozdrawiam, Menuet.
REKLAMA