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

at2313 + przekaźnik, Jak wyeliminować rozłączanie?

08 Mar 2009 23:15 1323 15
  • Użytkownik usunął konto  
  • Relpol przekaźniki
  • Poziom 13  
    Włącz na wejściu podciąganie, a przekaźnik ustawiaj zwierając pin z masą, zamiast z plusem.
  • Relpol przekaźniki
  • Poziom 32  
    kapelan napisał:
    Włącz na wejściu podciąganie, a przekaźnik ustawiaj zwierając pin z masą, zamiast z plusem.


    Swego rodzaju podciąganie ma bo ustawia stan niski na poącztku a potem podaje wysoki. Po za tym co to za różnica czy zwiera do masy czy do plusa?
    Proponuję dodać opóźnienie w warunku lub lepiej, skorzystać z debounce :)
  • Poziom 13  
    A tak w ogóle to tu chyba brakuje pętli główniej programu.
  • Użytkownik usunął konto  
  • Poziom 9  
    Witam
    Polecenie debounce np. może wyglądać tak:
    debounce pinb.2, 1, wlacz, sub
    (debounce port, stan na jaki ma reagować, etykieta, sub)
    normalny czas opóźnienia debounce to 25ms ale można go zmienić :
    config debounce=tu wpisujemy liczbę opóźnienia w milisekundach. :D
  • Użytkownik usunął konto  
  • Poziom 36  
    nkManiak napisał:
    kombinowałem i za cholerę nic. Zauważyłem jednak pewną prawidłowość:
    jeżeli przełączyłem się na rezonator wewnętrzny to częstotliwość "trzaskania" przekaźnika również zmalała. Więc może bym wstawił jakiś lepszy kwarc np 12MHz? może to by pomogło?


    Nie, taka alternatywa nie rokuje rozwiazania problemu. Wybor zegara na zewnetrzny kwarc rozni sie tylko dokladnoscia odmierzanego czasu w odniesieniu do wew. RC, a w twoim przypadku nie wystepuje potrzeba pomiaru czasu ani tez nie masz zadnej komunikacji ze 'swiatem zewnetrznym', wiec wew. osc. RC jest w zupelnosci wystarczajacy.

    Problem jest w konfiguracji portu wejscowego.
    Masz wejscie jako "plywajace" (!)

    e marcus
  • Użytkownik usunął konto  
  • Poziom 39  
    emarcus napisał:
    ...Problem jest w konfiguracji portu wejscowego.
    Masz wejscie jako "plywajace" (!)

    A główny problem autora, to nierozróżnianie pojęć PINx i PORTx.
    Code:

    Config Pinb.6 = Output
    ...
    Przekaznik Alias Pinb.6
    ...
    Reset Przekaznik
    ...
  • Użytkownik usunął konto  
  • Poziom 39  
    nkManiak napisał:
    a więc czy mógłbyś mnie nakierować? :)

    Jasne ;)
    Napisz, dlaczego w kodzie jest
    Code:

    Przekaznik Alias Pinb.6

    a nie np.
    Code:

    Przekaznik Alias Portb.6

    czy też
    Code:

    Przekaznik Alias Ddrb.6

    Jak zrozumiesz różnicę pomiędzy tym co napisałem wyżej, jesteś w domu ;)
  • Użytkownik usunął konto  
  • Poziom 30  
    Nie o instrukcję bascoma chodzi, lecz o dataszit do attiny2313. W AVR stan pinów odczytuje się czytając rejestr PINx, ustawia pisząc do rejestru PORTx, a kierunek (wej/wyj) ustawia pisząc do rejestru DDRx. Możliwe są też różne kombinacje, włączające lub wyłączające pullup. Poczytaj dokumentację ATTiny2313. Wejście z przyciskiem powinno mieć pullup.
  • Poziom 18  
    dobrze by było też abyś zamieścił schemat tego urządzenia, jeśli przekaźnik jest zasilany z tego samego źródła co mikrokontroler to może on powodować reset układu w niektórych przypadkach.
  • Poziom 10  
    Ja zaproponowałbym Ci taki troszeczkę przerobiony Twój kod.


    Code:

    $regfile = "attiny2313.dat"
    $crystal = 4000000
    Config Pinb.7 = Input
    Config Pinb.6 = Output

    Set Pinb.7

    Klawisz Alias Pinb.7
    Przekaznik Alias Pinb.6

    Do

    If Klawisz = 0 Then
    Waitms 25
      If Klawisz = 0 Then
      Reset Przekaznik
      End If
    End If

    If Klawisz = 1 Then
    Waitms 25
       If Klawisz = 1 Then
       Set Przekaznik
       End If
    Wait 20 'Tutaj czas może być różny, ponieważ do prawidłowych odcinków czasu stosuje się Timery.
    End If

    Loop
    End