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

attiny2313 - Napisanie programu dla danego mikrokontrolera

Michał Em 02 Sie 2014 10:52 1620 11
REKLAMA
  • #1 13844990
    Michał Em
    Poziom 9  
    Witam,
    nie jestem elektronikiem ani programistą (dopiero staram się nauczyć).
    Interesuje mnie napisanie programu pod mikrokontroler Attiny2313 żeby działał następująco:

    zadanie sygnału będzie następowało za pomocą dwóch inputów oraz dodatkowo gdy PINB2 zostanie wciśnięty dłużej niż 3s PIND3 zmieni się na aktywny natomiast gdy później wciśniemy PINB1, PIND 3 zmieni się na nieaktywny.
    nazwijmy

    input
    PINB1- otwieranie drzwi
    PINB2-zamykanie drzwi

    Output
    PIND1
    PIND2
    PIND3

    Napisałem krótki program (dopiero się uczę) w którym nie mogę sobie poradzić z czasowym aktywowaniem input-u.



    Treść programu w BASCOM-ie
    $regfile = "attiny2313.dat" 'najpierw określamy typ proca
    $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował

    config portb=input 'port b jako wejścia
    portb=&B00000000 'wszędzie stan spoczynkowy-0
    config portd=output 'pprt d jako wyjścia
    Portd = &B0000000 'wszędzie stan spoczynkowy-0

    do 'pętla nieskończona

    if pinb.0=1 then
    portd.0=1
    End If Pinb.1 = 1
    Wait 3
    If Pinb.1 = 1
    Then
    Portd.2 = 1
    endif

    loop 'koniec pętli

    End



    Czy znajdzie się forumowicz który poświęci chwile na pomoc mi?
  • REKLAMA
  • #2 13845073
    yokoon
    Poziom 29  
    Witam.
    To co zauważyłem to w linii trzeciej powinno być tylko End if.

    Proponuję w portach jako stan spoczynkowy ustawić stan wysoki z podciągnięciem przez wewnętrzne rezystory a wybierać stanem niskim, czyli zwierając dany pin do masy.

    Pobierz sobie polski help np. ze strony MCS Electronics.

    lub www.pe.ifd.uni.wroc.pl/BascomBasicAVR3.pdf
  • #3 13845201
    Michał Em
    Poziom 9  
    a czy byłby ktoś w stanie podać komendę czasową dla przyciśniecia przycisku?
    lub komendę na podwóje przyciśnięcie w określonym czasie?
  • REKLAMA
  • #4 13846163
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #5 13849407
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #6 13941021
    Michał Em
    Poziom 9  
    Witam,
    po chwili (czyli kilku miesiącach) napisałem program a także starałem się stworzyć układ wykonawczy dla niego( układ załączony do posta). Czy ktoś mógłby mi moją pracę sprawdzić a także podopwiedzieć co jest nie tak bądź da się to zrobić lepiej. :)
    Dodatkowo może ktoś zna komendę na długość trwania impulsu?

    Program:
    $regfile = "attiny2313.dat"					deklarowanie 
    $crystal = 1000000
    
    
    Ddrb = &B11111111 : Portb = &B00000000
    Ddrd = &B1100000 : Portd = &B0011000
    
    Dim Pomoc As Byte                                  'zmienna zliczająca wciśnięcia przycisku
    
    Do
       Debounce Pind.4 , 0 , Wlacz , Sub     	             'otwarcie samochodu'
       Debounce Pind.3 , 0 , Wylacz , Sub         		 'zamknięcie samochodu'
    
       If Pomoc = 1 Then Portb.0 = 0                   'w zależności od stanu zmiennej pomoc
       If Pomoc = 2 Then Portb.1 = 1                  ' daje kolejno sygnały
       
    Loop
    End
    
    
    Wlacz:                                              'każde wciśnięcie przycisku
    If Pomoc < 3 Then Incr Pomoc            zwiększa stan zmiennej "pomoc" o jeden
    Return                                               'ale tylko do dwóch, bo mamy dwa stany
    
    Wylacz:
    Pomoc = 0
    Portb.0 = 1
    
    Portb.1 = 0
    Return
  • #7 13941037
    Konto nie istnieje
    Poziom 1  
  • #8 13943484
    Michał Em
    Poziom 9  
    Witam poprawiłem kod jest bardziej czytelny czy któs mógłby go sprawdzić razem ze schematem (dołączony do wcześniejszego posta)
    Z góry dzieki pozdrawiam
  • #9 13943554
    Konto nie istnieje
    Poziom 1  
  • #10 13944501
    Michał Em
    Poziom 9  
    Z racji tego, że nie jestem elektronikiem "ostre słowa krytyki przyjmę z dystansem" gdyż każdy musi popełnić błędy by czegoś się nauczyć. Wiem, że dla osób które od dłuższego czasu "siedzą w elektronice" jest to banał ale ja chcę czegoś się nauczyć więc jeśli byłby Pan tak miły prosiłbym o wskazanie błędów ewentualną poprawę:)

    Pozdrawiam
  • #12 13946313
    Michał Em
    Poziom 9  
    O dzięki wielkie :) jak przeanalizuje materiał to wprowadzę zmiany :) i je upublicznię, a tymczasem Dzięki "Atom" za sporą pomoc:)
REKLAMA