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.

[atmega8][bascom]Układ załączający na RC5.

Ture11 16 Lip 2008 20:30 2899 11
  • #1 16 Lip 2008 20:30
    Ture11
    Poziom 34  

    Witam.
    Czy ktoś mógłby mi napisać program do Atmega8, powodujący, że po naciśnięciu przycisku na pilocie zapali się dioda.
    Ja próbowałem przerobić sampla z bascoma, ale nic mi z tego nie wychodziło.
    Sensor jest raczej sprawny, gdy podłączyłem diodę do wyjścia i "+" odbiornik działał (po naciśnięciu przycisku na pilocie dioda miga), natomiast Uc tego nie wykrywa, więc sądzę, że to kwestia programu..
    Próbowałem dodawać oporniki, kondensatory, siedziałem cały dzień i nadal nic z tego nie wyszło.
    Nie wiem jak poradzić sobie z Config PXXXX.X = output/input, nie wiem kiedy można używać PORT a kiedy PIN, kiedy należy wpisać INPUT, a kiedy nie.
    Będę baaaardzo wdzięczny za pomoc, jestem praktycznie zielony w BASCOMIE, szczególnie w AVR....
    P.s
    czy sensor podczerwieni musi być podpięty do jakiegoś konkretnego portu (np. portd.2 - INT0)czy wszystko jedno.
    Diodę chciałem podłączy do PORTB.0.
    Dziękuje za wszelkie uwagi.

    Dodano po 1 [minuty]:

    A i kiedyś używałem tego odbiornika w bascom 8051 i działało bez problemu.

    0 11
  • Pomocny post
    #2 16 Lip 2008 21:19
    wojnar
    Poziom 16  

    No to popróbuj jeszcze :-)
    Ja tylko tak, aby sprawdzić, napisałem coś takiego:

    Code:

    '---------------------------------------------------------------------------------------------------
    '
    '  RC5.bas
    '
    '---------------------------------------------------------------------------------------------------
    '$sim                                                       'jen pro simulaci
    $regfile = "Attiny2313.dat"                                 'Soubor s deklaracemi
    $crystal = 10000000                                         'Kmitočet krystalu v Hz

    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
    Cursor Off                                                  'vypni kurzor


    Dim Address As Byte , Command As Byte

    Config Pind.2 = Input
    Config Rc5 = Pind.2




    Enable Interrupts                                           'povol všechna přerušení



    '''''''''''''''''''''''''''' HLAVNI PROGRAM '''''''''''''''''''''''''''''''''''



    Do                                                          'hlavní smyčka

       Getrc5(address , Command)



          If Address < 255 Then
          Cls
          Lcd "adress  command"
          Locate 2 , 1
          Lcd Address
          Locate 2 , 9
          Lcd Command

      End If

    Loop                                                        'konec hlavní smyčky

    '''''''''''''''''''''''''''' KONEC HLAVNIHO PROGRAMU ''''''''''''''''''''''''''
    End

    Jest napisany dla Attiny2313 a tylko tak wyświetla na LCD 16*2 przyjęty adres i komendę.
    Drugi:
    Code:





    '---------------------------------------------------------------------------------------------------
    '
    '  RC5_PWM.bas
    '
    '  Zkoušky programování příjmu RC5 a využití PWM
    '  Tlačítky na DO ovládáme intenzitu podsvícení. Můžeme je vypnout/zapnout.
    '
    '---------------------------------------------------------------------------------------------------
    '$sim                                                       'jen pro simulaci
    $regfile = "attiny2313.dat"                                 'Soubor s deklaracemi
    $crystal = 10000000                                         'Kmitočet krystalu v Hz

    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.0
    Cursor Off                                                  'vypni kurzor

    'Nastavení čítače:
    Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up
    'Config Timer0 = Timer , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up


    Dim Address As Byte , Command As Byte
    Dim Podsviceni As Byte
    Dim Procents As Word
    Dim Dels As Word
    Dim Kontrast As Byte
    Dim Procentk As Word
    Dim Delk As Word

    Config Portb.2 = Output
    Config Portd.5 = Output
    Config Portb.4 = Output                                     'kontrast
    Config Portb.3 = Output                                     'podsvícení
    Config Pind.2 = Input                                       'RC5
    Config Rc5 = Pind.2

    Enable Interrupts                                           'povol všechna přerušení

    '''''''''''''''''''''''''''' HLAVNI PROGRAM '''''''''''''''''''''''''''''''''''

    Podsviceni = 150                                            'Počáteční nastavení
    Pwm1a = Podsviceni
    Kontrast = 200
    Pwm1b = Kontrast

    Uvod:
          Cls
          Lcd "Zkouska rizeni"
          Lowerline
          Lcd "podsv. a kontr."

    Do                                                          'hlavní smyčka

       Getrc5(address , Command)

          If Address < 255 Then                                 'Dokud nestisknu tlacitko na DO
          Cls
          Lcd "psvic kontr  RC5"
             If Procents < 100 Then
             Lowerline
             Lcd " " ; Procents ; " %"
             Else
             Locate 2 , 1
             Lcd Procents ; " %"
             End If
             If Procentk < 100 Then
             Locate 2 , 7
             Lcd " " ; Procentk ; " %"
             Else
             Locate 2 , 7
             Lcd Procentk ; " %"

             End If
          Locate 2 , 14
          Lcd Command

             If Command = 17 Or Command = 145 Then              '17 a 145 jsou kódy RC5 pro "volume-"
             Podsviceni = Podsviceni - 5                        'Podsvícení se snižuje
                If Podsviceni < 5 Then Podsviceni = 5
             Pwm1a = Podsviceni
    '         Pwm0a = Podsviceni
             End If

             If Command = 16 Or Command = 144 Then              '16 a 144 jsou kódy RC5 pro "volume+"
             Podsviceni = Podsviceni + 5                        'Podsvícení se zvyšuje
                If Podsviceni > 250 Then Podsviceni = 250
             Pwm1a = Podsviceni
             End If

             If Command = 33 Or Command = 161 Then              '33 a 161 jsou kódy RC5 pro "P-"
             Kontrast = Kontrast - 5                            'Kontrast se snižuje
                If Kontrast < 120 Then Kontrast = 120
             Pwm1b = Kontrast
             End If

             If Command = 32 Or Command = 160 Then              '32 a 160 jsou kódy RC5 pro "P+"
             Kontrast = Kontrast + 5                            'Kontrast se zvyšuje
                If Kontrast > 250 Then Kontrast = 250
             Pwm1b = Kontrast
             End If

             If Command = 12 Or Command = 140 Then Pwm1a = 0    '12 a 140 jsou kódy RC5 pro "ON/OFF"

    '               If Pwm1a = Podsviceni Then                   'Podle toho jestli podsvícení je/není zapnuto
    '               Pwm1a = 0                                    'podsvícení vypne
    '               Else                                         'nebo
    '               Pwm1a = Podsviceni                           'zapne
    '               End If

    '         End If

             If Command = 38 Or Command = 166 Then Pwm1a = Podsviceni       '38 a 166 jsou kódy RC5 pro "časovač"

             If Command = 15 Or Command = 143 Then Goto Uvod    '15 a 143 jsou kódy RC pro zobracení čísla kanálu
                                                                'zobrazí úvodní nápis na displeji

          Dels = Podsviceni * 100                               'malý výpočet pro zobrazování % Podsvícení
          Procents = Dels / 250

          Delk = Kontrast * 100                                 'a pro zobrazování % Kontrast
          Procentk = Delk / 250

          End If

    Loop                                                        'konec hlavní smyčky

    '''''''''''''''''''''''''''' KONEC HLAVNIHO PROGRAMU ''''''''''''''''''''''''''
    End

    już w reakcji na konkretne przyciski pilota reguluje jas i kontrast dołączonego do uC LCD wyświetlacza.
    a trzeci:
    Code:

    '---------------------------------------------------------------------------------------------------
    '
    '  RC5_PWM0.bas
    '
    '  Zkoušky programování příjmu RC5 a využití PWM
    '  Tlačítky na DO ovládáme intenzitu podsvícení. Můžeme je vypnout/zapnout.
    '
    '---------------------------------------------------------------------------------------------------
    '$sim                                                       'jen pro simulaci
    $regfile = "attiny2313.dat"                                 'Soubor s deklaracemi
    $crystal = 10000000                                         'Kmitočet krystalu v Hz

    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.0
    Cursor Off                                                  'vypni kurzor

    'Nastavení čítače:
    'Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up
    Config Timer0 = Timer , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up


    Dim Address As Byte , Command As Byte
    Dim Podsviceni As Byte
    Dim Kontrast As Byte

    Config Portb.2 = Output
    Config Portd.5 = Output
    Config Pind.2 = Input                                       'RC5
    Config Rc5 = Pind.2

    Enable Interrupts                                           'povol všechna přerušení

    '''''''''''''''''''''''''''' HLAVNI PROGRAM '''''''''''''''''''''''''''''''''''

    Podsviceni = 125                                            'Počáteční nastavení
    Pwm0a = Podsviceni
    Kontrast = 125
    Pwm0b = Kontrast

    Uvod:
          Cls
          Lcd "Zkouska rizeni"
          Lowerline
          Lcd "podsv. a kontr."

    Do                                                          'hlavní smyčka

       Getrc5(address , Command)

          If Address < 255 Then                                 'Dokud nestisknu tlacitko na DO
          Cls
          Lcd "psvic kontr  RC5"
             If Podsviceni < 100 Then
             Lowerline
             Lcd " " ; Podsviceni
             Else
             Locate 2 , 1
             Lcd Podsviceni ;
             End If
             If Kontrast < 100 Then
             Locate 2 , 7
             Lcd " " ; Kontrast ;
             Else
             Locate 2 , 7
             Lcd Kontrast ;

             End If
          Locate 2 , 14
          Lcd Command

             If Command = 17 Or Command = 145 Then              '17 a 145 jsou kódy RC5 pro "volume-"
             Podsviceni = Podsviceni - 5                        'Podsvícení se snižuje
                If Podsviceni < 5 Then Podsviceni = 5
             Pwm0a = Podsviceni
             End If

             If Command = 16 Or Command = 144 Then              '16 a 144 jsou kódy RC5 pro "volume+"
             Podsviceni = Podsviceni + 5                        'Podsvícení se zvyšuje
                If Podsviceni > 250 Then Podsviceni = 250
             Pwm0a = Podsviceni
             End If

             If Command = 33 Or Command = 161 Then              '33 a 161 jsou kódy RC5 pro "P-"
             Kontrast = Kontrast - 5                            'Kontrast se snižuje
                If Kontrast < 5 Then Kontrast = 5
             Pwm0b = Kontrast
             End If

             If Command = 32 Or Command = 160 Then              '32 a 160 jsou kódy RC5 pro "P+"
             Kontrast = Kontrast + 5                            'Kontrast se zvyšuje
                If Kontrast > 250 Then Kontrast = 250
             Pwm0b = Kontrast
             End If

             If Command = 12 Or Command = 140 Then Pwm0a = 0    '12 a 140 jsou kódy RC5 pro "ON/OFF"
                                                                'Podsvícení vypne

             If Command = 38 Or Command = 166 Then Pwm0a = Podsviceni       '38 a 166 jsou kódy RC5 pro "časovač"
                                                                            'Podsvícení zapne

             If Command = 15 Or Command = 143 Then Goto Uvod    '15 a 143 jsou kódy RC pro zobracení čísla kanálu
                                                                'zobrazí úvodní nápis na displeji

          End If

    Loop                                                        'konec hlavní smyčky

    '''''''''''''''''''''''''''' KONEC HLAVNIHO PROGRAMU ''''''''''''''''''''''''''
    End

    Prawie to samo, ale PWM0.

    Ani jeden program nie ma żadnego praktycznego użycia. Powstały bym sprawdził czy potrafię :D
    Komentarze są po czesku, nie chce mi się je tłumaczyć :cry:

    Może Ci to pomoże.

    0
  • #3 16 Lip 2008 21:27
    dawid512
    Poziom 32  

    Już pierwsze zdanie cię dyskwalifikuje:

    Cytat:
    Czy ktoś mógłby mi napisać program do Atmega8


    A to:
    Cytat:
    Nie wiem jak poradzić sobie z Config PXXXX.X = output/input, nie wiem kiedy można używać PORT a kiedy PIN, kiedy należy wpisać INPUT, a kiedy nie.


    Tylko jedna odpowiedź: RTFM!

    Zaopatrz się w polski help do bascoma i poczytaj o funkcjach: GETRC5, CONFIG PORT itd.

    0
  • #4 16 Lip 2008 21:31
    Balu
    Poziom 38  

    Oczywiście link do polskiego manula (by ZbeeGin) w przyklejonym temacie...ale po co je czytać...

    0
  • #6 16 Lip 2008 21:37
    Balu
    Poziom 38  

    Screen? A txtu się wkleić nie da?:>

    0
  • #7 16 Lip 2008 21:37
    dawid512
    Poziom 32  

    Ludzie opanujcie się! Same gotowce....

    0
  • #8 16 Lip 2008 22:04
    MARIUSZ R
    Poziom 28  

    Balu napisał:
    Screen? A txtu się wkleić nie da?:>

    A co screen nie czytelny?

    0
  • #9 16 Lip 2008 22:12
    Balu
    Poziom 38  

    Nie tylko się może ciężko kopiować do kompilatora, wiesz?

    <ściana>

    0
  • #10 16 Lip 2008 22:19
    MARIUSZ R
    Poziom 28  

    Balu napisał:
    Nie tylko się może ciężko kopiować do kompilatora, wiesz?

    <ściana>

    Zgoda ,ale trochę wysiłku z przepisaniem i to bardzo krótkiego programu nikomu nie zaszkodzi.A niektórzy maja za złe że zamieszcza się gotowce.Bez urazy kolego dawid512.

    0
  • #11 16 Lip 2008 22:27
    dawid512
    Poziom 32  

    Jakby autor tematu poczytal helpa to by wyklepał taki kod w paręnaście minut i coś by z tego wiedział a tal to tylko Ctrl+C i Ctrl+V. Lenistwo...
    Tak po za tym ten gotowiec nie robi tego co chce autor tematu...

    0
  • #12 18 Lip 2008 21:06
    Ture11
    Poziom 34  

    Witam.
    Oczywiście wszystkim bardzo dziękuję, w końcu znalazłem błąd....
    Szczególnie dziękuje WOJNAR owi.

    0