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

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

08 Mar 2009 23:15 1440 15
  • #1 6255973
    Konto nie istnieje
    Konto nie istnieje  
  • #2 6256014
    kapelan
    Poziom 14  
    Włącz na wejściu podciąganie, a przekaźnik ustawiaj zwierając pin z masą, zamiast z plusem.
  • #3 6256105
    dawid512
    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 :)
  • #4 6256179
    kapelan
    Poziom 14  
    A tak w ogóle to tu chyba brakuje pętli główniej programu.
  • #5 6256227
    Konto nie istnieje
    Konto nie istnieje  
  • #6 6266979
    dziczek125
    Poziom 10  
    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
  • #7 6282829
    Konto nie istnieje
    Konto nie istnieje  
  • #8 6283246
    Konto nie istnieje
    Poziom 1  
  • #9 6284520
    Konto nie istnieje
    Konto nie istnieje  
  • #10 6284605
    zumek
    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.
    
    Config Pinb.6 = Output
    ...
    Przekaznik Alias Pinb.6
    ...
    Reset Przekaznik 
    ...
    
  • #11 6284624
    Konto nie istnieje
    Konto nie istnieje  
  • #12 6284650
    zumek
    Poziom 39  
    nkManiak napisał:
    a więc czy mógłbyś mnie nakierować? :)

    Jasne ;)
    Napisz, dlaczego w kodzie jest
    
    Przekaznik Alias Pinb.6
    

    a nie np.
    
    Przekaznik Alias Portb.6
    

    czy też
    
    Przekaznik Alias Ddrb.6
    

    Jak zrozumiesz różnicę pomiędzy tym co napisałem wyżej, jesteś w domu ;)
  • #13 6284723
    Konto nie istnieje
    Konto nie istnieje  
  • #14 6285119
    Klima
    Poziom 31  
    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.
  • #15 6285186
    kaktus_c++
    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.
  • #16 6286137
    Scofield1
    Poziom 11  
    Ja zaproponowałbym Ci taki troszeczkę przerobiony Twój kod.


    
    $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
    
REKLAMA