Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Bascom]Timer1 - załączanie przekaźnika na czas.

pief 16 Lut 2010 20:17 1670 3
  • #1 16 Lut 2010 20:17
    pief
    Poziom 16  

    Witam

    Piszę program (bascom) i nadziałem się na problem z którym nie mogę sobie
    poradzić.

    Timer 1 pracuje jako zegar i po spełnieniu warunku , ma załączyć przekaźnik
    który ma być załączony na czas_pracy i po odliczeniu czasu pracy ma
    wyłączyć się na czas przerwy i zablokować włączenia przekaźnika na ten czas.

    Tak w skrócie:
    kod :

    Code:
    $regfile = "m8def.DAT"                                      'deklaracja procesora, w tym wypadku Atmega8
    
    $crystal = 8000000                                          'deklaracja czestotliwości pracy
     '$sim
    Config Lcd = 20 * 4

    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5

    Config 1wire = Portb.1                                      'deklaracja portu na którym będą podpięte DS18b20

    '--------------------------------------TIMER1-------------------------------------------------
    Enable Interrupts

    Config Timer1 = Timer , Prescale = 256

    Counter1 = 34286

    On Timer1 Odmierz_1s

    Enable Timer1





    Code:
    DO
    


    WYŚWIETLANIE CZASU

    WARUNEK ZAŁĄCZENIA PRZEKAŻNIKA
    PRZEKAŻNIK ZAŁĄCZONY

    ODLICZ CZAS_PRACY

    GDY MINĄŁ CZAS_PRACY - WYŁĄCZ PRZEKAŻNIK

    ZACZNIJ ODLICZAĆ  CZAS_PRZERWY I ZABLOKUJ

    WŁĄCZENIE PRZEKAŹNIKA NA CZAS_PRZERWY

     LOOP
    przerwanie od timera

    CZAS_PRACY -USTAWIANY RĘCZNIE ZAKRES  0 - 5 MIN
    CZAS_PRZERWY ------//-------//------  0 - 40 MIN


    Problemem jest jak przy pracującym zegarze ( Timer1)
    przechwycić godzinę i dodać zadane czasy -czas pracy i czas przerwy
    np . jest godzina 17-58-40 wystąpił warunek załączenia przekaźnika na
    czas pracy 3 min - jak dodać ten czas by o godzinie 18-01-40 nastąpiło
    wyłączenie przekaźnika ,czas przerwy będzie pewnie odbywał się na tej
    samej zasadzie co wyżej.

    Wiem że najlepiej byłoby włączyć timer0 i odliczać , ale w programie jest
    jeszcze pomiar temperatury(1wire ), timer1 i jeszcze timer0 i w sumie
    próbowałem ale gryzło się to ze sobą .
    Jak to zrobić za wszelkie pomysły i sugestie z góry dziękuje i pozdrawiam

    Poprawiłem tytuł.
    [zumek]

    0 3
  • #2 16 Lut 2010 23:09
    leon1313
    Poziom 14  

    Możesz skonwertować godzinę na sekundowy format ( typ long, 4 bajty)

    Code:

    ss=24*60*H +60*M+S

    Reszta to Twoja inwencja :-)

    0
  • #3 16 Lut 2010 23:15
    HIOB
    Poziom 17  

    Witam,

    Proponuję w projekcie wykorzystać tani i prosty w obsłudze RTC - zegar czasu rzeczywistego - PCF8583.
    O ile dobrze pamiętam Bascom ma zaimplementowaną jego obsługę.

    Pozdrawiam,
    Piotr.

    0
  • #4 16 Lut 2010 23:28
    pief
    Poziom 16  

    Kolego leon1313 - mógłbyś rozwinąć swoją podpowiedź ,
    jak to skonwertować , może jakiś przykład , nie wiem od czego zacząć
    jak to ugryźć .

    układ rtc raczej odpada musiałbym przerabiać cały program .

    0