Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

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

Ture11 16 Jul 2008 20:30 3157 11
  • #1
    Ture11
    Level 38  
    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.
  • Helpful post
    #2
    wojnar
    Level 16  
    No to popróbuj jeszcze :-)
    Ja tylko tak, aby sprawdzić, napisałem coś takiego:
    
    '---------------------------------------------------------------------------------------------------
    '
    '  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:
    
    '---------------------------------------------------------------------------------------------------
    '
    '  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:
    
    '---------------------------------------------------------------------------------------------------
    '
    '  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.
  • #3
    dawid512
    Level 32  
    Już pierwsze zdanie cię dyskwalifikuje:
    Quote:
    Czy ktoś mógłby mi napisać program do Atmega8


    A to:
    Quote:
    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.
  • #7
    dawid512
    Level 32  
    Ludzie opanujcie się! Same gotowce....
  • #8
    MARIUSZ R
    Level 28  
    Balu wrote:
    Screen? A txtu się wkleić nie da?:>

    A co screen nie czytelny?
  • #10
    MARIUSZ R
    Level 28  
    Balu wrote:
    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.
  • #11
    dawid512
    Level 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...
  • #12
    Ture11
    Level 38  
    Witam.
    Oczywiście wszystkim bardzo dziękuję, w końcu znalazłem błąd....
    Szczególnie dziękuje WOJNAR owi.