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.

Przełącznik wejść audio na Attiny13

spirol 28 Lut 2012 17:43 1490 10
  • #1 28 Lut 2012 17:43
    spirol
    Poziom 11  

    Jestem zielony jeżeli chodzi o programowanie mikrokontrolerów, próbuję zrobić przełącznik, jednym przyciskiem przełączanie trzech wejść. Napisałem program w bascomie ale nie działa, proszę o pomoc w poprawieniu błędów.
    $regfile = "attiny13.dat"
    $crystal = 9600000
    Config Portb.0 = Output
    Config Portb.1 = Output
    Config Portb.2 = Output
    Config Portb.3 = Input
    Portb.0 = 1
    Portb.1 = 0
    Portb.2 = 0
    Set Portb.3
    If Portb.3 = 0 Then Waitms 25
    If Portb.3 = 0 Then
    Portb.0 = 0
    Portb.1 = 1
    Portb.2 = 0
    End If
    Waitms 500
    If Portb.3 = 0 Then Waitms 25
    If Portb.3 = 0 Then
    Portb.0 = 0
    Portb.1 = 0
    Portb.2 = 1
    End If
    Waitms 500
    If Portb.3 = 0 Then Waitms 25
    If Portb.3 = 0 Then
    Portb.0 = 1
    Portb.1 = 0
    Portb.2 = 0
    End If
    Waitms 500
    Return

    0 10
  • #3 29 Lut 2012 19:08
    spirol
    Poziom 11  

    Niestety dalej nie działa.

    0
  • #4 29 Lut 2012 19:22
    sp3ots
    Poziom 35  

    Witam !
    Opisz dokładnie jak ma działać program.
    Jeśli możesz zapraszam do pisania na GG6203398
    Pozdrawiam. Stefan

    0
  • #5 29 Lut 2012 19:38
    spirol
    Poziom 11  

    Jest to przełącznik pierścieniowy, jest jeden przycisk (portb.3) i zwierając go pojawiają się stany wysokie kolejno na wyjściach, po włączeniu zasilania pojawia się stan wysoki na portb.0, po wciśnięciu przycisku, stan wysoki na portb.1 po kolejnym wciśnięciu, stan wysoki na portb.2 i tak w kółko

    0
  • #6 29 Lut 2012 19:57
    Wojtek75
    Poziom 23  

    Gdzie masz pętle główną? W jakim celu ten return na końcu?

    0
  • #7 29 Lut 2012 20:13
    spirol
    Poziom 11  

    Myślisz że bez instrukcji "return" ruszy?

    0
  • #8 29 Lut 2012 20:17
    Wojtek75
    Poziom 23  

    Myślę że ruszy jak się to co trzeba umieści w pętli głównej. A o tym gdzie należy używać instrukcji return to sobie w helpie doczytaj.

    0
  • #9 29 Lut 2012 20:40
    jacekk232
    Poziom 16  

    Witam.

    Przecież ten program nie będzie działał wg założeń. Nawet jak umieścisz to w pętli.

    Zrób tak: do obsługi przycisku użyj polecenia Debounce

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    W podprogramie obsługi przycisku zwiększaj wartość jakiejś zmiennej
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    A w pętli głównej sprawdzaj wartość tej zmiennej i w zależności od jej wartości ustawiaj lub zeruj odpowiednie piny wyjściowe
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Masz cały program. Poskładaj go tylko w całość.


    A i jeszcze jedno. Kierunek pojedynczych pinów konfiguruje się tak:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Polecam doczytać to w helpie Bascoma.

    Pozdrawiam

    0
  • #10 29 Lut 2012 22:20
    Wojtek75
    Poziom 23  

    jacekk232 napisał:
    Witam.

    Przecież ten program nie będzie działał wg założeń. Nawet jak umieścisz to w pętli.

    Po takim stwierdzeniu początkujący dojdzie do wniosku, że faktycznie pętla mu nie potrzebna.


    jacekk232 napisał:
    A i jeszcze jedno. Kierunek pojedynczych pinów konfiguruje się tak:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Polecam doczytać to w helpie Bascoma.


    Przy określaniu kierunku działania pojedynczych pinów nie ma znaczenia czy napisze się:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    w obu przypadkach kierunki zostaną ustawione prawidłowo.

    0
  • #11 01 Mar 2012 20:48
    jacekk232
    Poziom 16  

    Cytat:

    Po takim stwierdzeniu początkujący dojdzie do wniosku, że faktycznie pętla mu nie potrzebna.


    Ależ moim zamiarem nie było kogokolwiek utwierdzać w przekonaniu że pętla główna nie jest potrzebna. Chodziło mi o to, że ten program mimo umieszczenia w pętli Do...Loop nie będzie działał tak jak chciał autor. Bo po wciśnięciu przycisku wyjścia będą się załączać całkowicie przypadkowo zależnie od tego na który warunek akurat trafi program kręcąc się w pętli głównej.

    Poza tym przy dłuższym przytrzymaniu przycisku "kręcący się" program będzie kolejno sprawdzał warunki (które będą spełnione) i kolejno załączał kolejne wyjścia. Dopiero po puszczeniu przycisku zatrzyma się na którymś z nich.

    Cytat:
    Przy określaniu kierunku działania pojedynczych pinów nie ma znaczenia czy napisze się:

    Config PinX.X = I/O
    ' czy
    Config PortX.X = I/O


    w obu przypadkach kierunki zostaną ustawione prawidłowo.


    Napisałem tak bo tak oficjalnie podaje help do Bascoma. W sumie to nigdy nie sprawdzałem czy działa Config Portx.y bo kierunki portów i pojedyńczych końcówek zawsze ustawiałem używając rejestru DDR np.
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Ten sposób zawsze wydawał mi się bardziej przejrzysty.

    Pozdrawiam

    0