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

ATmega8 - Czy poprawnie rozplanowałem piny dla pilota IR z 15 przyciskami?

artur barczyk 06 Lis 2013 20:23 1200 4
REKLAMA
  • #1 12922889
    artur barczyk
    Poziom 11  
    Witam.
    Obecnie zaczynam swoją zabawę z atmegami, dlatego też chciałbym się zapytać czy dobrze rozplanowałem użycie pinów.
    Mam do zrobienia pilot który ma wysyłać sygnał o określonym przebiegu częstotliwości, za pomocą diody IR. Obecnie chciałbym to wykonać na atmedze 8, gdyż potrzebuję 15 przycisków i jednego kanału nadawczego, tak wiec muszę mieć 16 pinów do zaprogramowania, oraz 3 sygnałowe(do przesyłania programu) a w sieci znalazłem że można z niej uzyskać 23 porty we/wy

    Mógłby mi ktoś napisać czy użyte przeze mnie piny nie będą powodować jakichś błędów?
    Tutaj podsyłam część z programu bascom
    Config Pinb.0 = Input
    Config Pinb.1 = Input
    Config Pinb.2 = Input
    Config Pinc.0 = Input
    Config Pinc.1 = Input
    Config Pinc.2 = Input
    Config Pinc.3 = Input
    Config Pinc.4 = Input
    Config Pinc.5 = Input
    Config Pind.0 = Input
    Config Pind.1 = Input
    Config Pind.2 = Input
    Config Pind.3 = Input
    Config Pind.4 = Input
    Config Pind.5 = Input

    Config Pind.6 = Output

    Pin PB3/4/5 do programatora

    Ew. zapytam się jeszcze w jaki sposób będzie najlepsze uzyskanie przebiegu prostokątnego na owym mikrokontrolerze (przerywania, jakieś specjalne komendy)? Wypełnienie ma wynieść najlepiej 50%.
    Dodam ze nie zależy mi na kodzie RC5. Układem odbiorczym ma być PLC.
  • REKLAMA
  • #2 12923267
    Kuniarz
    Moderator Projektowanie
    Teoretycznie wygląda to dobrze, z tego co widzę to walczysz w Bascom, więc po co wyważać otwarte drzwi - użyj komend do obsługi RC5 i masz to w jeden wieczór oprogramowane.
    Choć trzeba przyznać, że jak na początek zabawy z Atmegami, to tak że tak powiem, woda dość głęboka ;-)
    Powodzenia życzę !
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #3 12923513
    artur barczyk
    Poziom 11  
    Tutaj nie mogę dać pod RC5 bo jak to dobrze wyczytałem z PDF-ów wysyła on sygnał bitowy.
    A PLC raczej tej opcji nie ma(jest to wiekowy PLC z rodziny FX2N), i ma jedynie port z licznikiem.

    Po wykonaniu układ "odbiorczego" z wykorzystaniem układu na ne555 PLC wykonywał zaprogramowaną komendę.

    Taki pilot jest mi potrzebny do obrony inżynierskiej, a mój promotor jest nastawiony na jak największą minimalizację kosztów. Wcześniej zrobiłem pilot na NE555, ale wykazywał pewną niestabilność przebiegu prostokątnego, przez co jestem zmuszony wykonać projekt na atmedze.
  • REKLAMA
  • #4 12924207
    Kuniarz
    Moderator Projektowanie
    Akurat minimalizacja kosztów przez zastąpienie NE555 Atmegą to jakaś bzdura ;-) Skoro masz to zrobić na mikrokontrolerze, to poczytaj o trybie CTC - tym można generować ładne i stabilne przebiegi.
    Pomogłem? Kup mi kawę.
  • #5 12925550
    artur barczyk
    Poziom 11  
    Bardzo dziękuję za tą podpowiedź. Obecnie podkształcę się o tym trybie i postaram dokończyć program.

    Jednak po tym co wyczytałem wykorzystałem generator wewnętrzny na 8MHz
    '$crystal = 8000000
    Ale tu pojawia się małe pytanie, czy lepiej dać generator wewnętrzny czy może kwarc zewnętrzny

    Wprawdzie za dużo nie udało mi się znaleźć pod BASCOM-a, a pod C, ale znalazłem kilka artykułów w których poruszyli temat CTC.
    Więc chciałbym się zapytać jak to powinno wyglądać przy programie z kilkoma przyciskami.

    Kod: text
    Zaloguj się, aby zobaczyć kod

    '$sim
    '$large
    '$regfile = "m88def.dat"
    '$crystal = 8000000



    Dim Adres As Byte , Komenda As Byte
    Dim Wolty As Word
    Dim Wo As Single


    Config Pinb.0 = Input
    ........................... reszta deklaracji klawiszy
    Config Pind.5 = Input

    Config Pind.6 = Output

    Config Timer2 = Timer , Prescale = 1 , Async = Off , Compare B = Toggle , Clear Timer = 1


    Gosub Ustaw_porty

    Adres = 15

    Start Adc

    Do
    Gosub Nap

    If Pinb.0 = 0 Then

    Config Timer2 = Timer , Prescale = 1 , Async = Off , Compare B = Toggle , Clear Timer = 1
    Compare2a = 1

    Do
    Loop

    Else
    [/syntax]

    I tu też chciałbym się zapytać czy funkcja "Config Timer1.....timer=1" ma być pod przyciskiem czy na początku składni(jeśli tu to czy dobrze go umiejscowiłem), a pod przyciskiem sama komenda "Campare2a = 1" i czy dobrze umieściłem to "a" bo w instrukcji bascomu go nie pisali a w internecie widziałem że go dopisywali.
REKLAMA