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

[attiny2313][bascom]Sterowanie fazowe + RC5 , program się zawiesza

05 Sie 2011 23:58 2404 2
  • Poziom 8  
    Witam.
    Jest to mój pierwszy post na forum elektrody więc witam serdecznie wszystkich forumowiczów i proszę o wyrozumiałość :D .

    Mam problem z swoim projektem, a mianowicie ze ściemniaczem światła sterowanego pilotem, który nadaje w RC5.
    Problem polega na tym ze program działa ale tylko przez chwilkę a później działa tylko jego część.
    Wygląda to tak, że gdy włączam układ to wszystko działa ale tylko przez około 20 sekund. W tym czasie mogę rozjaśniać i ściemniać jeden kanał i włączać i wyłączać drugi ( co jest ideą tego układu ). Później program się zawiesza i mogę tylko włączać i wyłączać drugi kanał a kanał pierwszy jest rozjaśniony na maxsa i nie reaguje na przyciski ( choć raz zdarzyło się ze się odwiesił na następną chwile ).
    Dodam ze sama regulacja fazowa działa wyśmienicie, jednak gdy dodam w programie komendę "GetRC5" dzieją się właśnie takie rzeczy:cry:

    Załączam schemat układu
    [attiny2313][bascom]Sterowanie fazowe + RC5 , program się zawiesza

    Orłem w bascomie nie jestem ale udało mi się napisać takie coś
    Code:

    $regfile = "attiny2313.dat".dat
    $crystal = 8000000
    $baud = 19200

    Config Pind.6 = Output                                      'triak ON / OFF

    Config Pinb.0 = Output                                      'triak płynnej regulacji

    Config Rc5 = Pind.5

    Config Int0 = Rising
    On Int0 Przejscie

    Set Portd.2

    Config Timer1 = Timer , Prescale = 64
    On Timer1 Triakon

    Dim Adres As Byte , Komenda As Byte , Togglebit As Bit

    Dim Poziom As Byte

    Dim Q As Word

    Triak Alias Portb.0

    Enable Interrupts

    Reset Portd.6

    Poziom = 0

    Enable Int0

    Wait 1

    Do

       Getrc5(adres , Komenda)
       Togglebit = Komenda.7
       Komenda = Komenda And &B01111111

          If Komenda = 1 And Poziom <> 63 Then
          Incr Poziom
          End If

          If Komenda = 2 And Poziom <> 0 Then
          Decr Poziom
          End If

          If Komenda = 4 Then
          Poziom = 63
          End If

          If Komenda = 5 Then
          Poziom = 0
          End If

          If Komenda = 7 Then
          Set Portd.6
          End If

          If Komenda = 8 Then
          Reset Portd.6
          End If

    Loop
    End

    Triakon:

       Set Triak
       Disable Timer1

    Return

    Przejscie:

       Reset Triak
       Q = Lookup(poziom , Tablica)
       Load Timer1 , Q
       Enable Timer1

    Return

    Tablica:
    Data 1150% , 1109% , 1076% , 1049% , 1025% , 1002% , 982% , 962% , 944% , 927% , 910% , 894% , 878% , 863%
    Data 848% , 833% , 819% , 805% , 791% , 778% , 765% , 751% , 738% , 726% , 713% , 700% , 687% , 675%
    Data 662% , 650% , 637% , 625% , 613% , 600% , 588% , 575% , 563% , 550% , 537% , 524% , 512% , 499%
    Data 485% , 472% , 459% , 445% , 431% , 417% , 402% , 387% , 372% , 356% , 340% , 232% , 306% , 288%
    Data 268% , 248% , 225% , 201% , 174% , 141% , 100% , 1%


    W kodzie przed instrukcją "Do" znajduje się opóźnienie 1 sek gdyż bez tego opóźnienia program startuje od razu zawieszony:cry:

    Co może być przyczyną takiego działania:?:
    Może przepełniający się stos ?

    Proszę o pomoc , bardzo mi zależy na tym ściemniaczu.
  • Moderator na urlopie...
    Code:
    $regfile = "attiny2313.dat".dat
    ? tu coś nie tak ;-) Ale to chyba nie powód błędów...
    Hmm, jak tak patrzę to trochę zastanawiają mnie komendy:
    Code:

    Disable Timer1
    Enable Timer1

    w przerwaniach...
    Nie analizuję tu całej zasady działania, ale czy nie powinieneś tu używać raczej komend start i stop Timer1 ? Bo wiem na pewno, że tego typu kontrola systemu przerwań w samym przerwaniu często powoduje problemy i zawieszenie się układów przy drobnych błędach logicznych...
  • Poziom 8  
    Strzał w dziesiątkę :D
    Wszystko hula bez problemów .

    Dzięki za szybką odpowiedź ;)
    Zamykam temat.