Mini Lampka RGB 2 na Attiny24


Witam
Chciałem zrobić ta lampkę ale na Attiny24. W związku, iż posiada on mniej wyprowadzeń użyłem tylko 1 diody RGB. Poustawiałem już odpowiednio wszystkie porty, pozostał mi tylko 1 problem. Jako iż dioda RGB i klawiatura są na tym samym porcie nie wiem jak przerobić ta linijkę w Bascomie:

Sw_port Alias Pind

W moim przypadku dioda RGB podpięta jest pod port A. 0.1.2, natomiast klawiatura pod port A. 3.4.5.6.7. W oryginalnym projekcie pod potrtD podpięta jest tylko klawiatura.

Dzieki za ewentualne sugestie.




Portret użytkownika mirley

Re: Lampka

po pierwsze musisz dać na pin a:

Sw_port Alias Pind

potem zrobić w programie dodatkową zmienna byte, np "sw"

potem napisać na początku procedury obsługi przyciskow:

sw = sw_port ' odczytasz tutaj klawiaturę i diody na trzech najmłodszych pinach, więc
sw =sw/8     

potem wszędzie tam gdzie jest w procedurze przycisków sw_port dasz sw

sprawdź czy tak zadziała

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika mkcoval

Lampka

Witam
Cos mój USBASP nie chciał dzisiaj zadziałać, wiec podłączyłem ISP Programmer autorstwa Dybkowskiego. Ladnie zaprogramował Attiny24, ale trochę miałem problemów z fusami bo sa inaczej opisane, ustawiłem je tak:

Wkleję może cały program, bo po uruchomieniu pali się tylko zielona dioda sygnalizacyjna zaś RGB nawet nie mrugnie. Moja konfiguracja to:
PortA.0 - R
PortA.1 - B
PortA.2 - G
PortA.3 - klaw.
PortA.4 - klaw.
PortA.5 - klaw.
PortA.6 - klaw.
PortA.7 - klaw.

PortB.0,1 - Xtal (20MHz)
PortB.2 - led sygn.
Dioda ze wspólną anodą.

Program:

        '************* Konfiguracja uC *****************
'***********************************************
$regfile = "attiny24.dat"
$crystal = 20000000
 
Config Porta = &B00000111 : Porta = &B11111111
 
Config Pinb.2 = Output : Portb.2 = 1                        'dioda info'
Config Timer0 = Timer , Prescale = 8
Enable Timer0 : On Timer0 Prztimer0
 
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
 
'******************  Nazwy *******************
'***********************************************
Rd Alias Porta.0
Gd Alias Porta.2
Bd Alias Porta.1
Syg_led Alias Portb.2
Sw_port Alias Pina
 
'*************  Nazwy Koniec  ****************
'******************  Zmienne *******************
'***********************************************
Dim Licznik As Byte
Dim Sw As Byte
Dim Rled As Byte , Bled As Byte , Gled As Byte
Dim Rand_r As Byte , Rand_g As Byte , Rand_b As Byte
Dim Pomoc As Byte
Dim Flaga As Bit
Dim Dzielnik As Word
Dim Dzielnik2 As Byte
Dim Dzielnik3 As Byte
Dim Szybkosc As Byte
Dim Licznik_sw As Byte
Dim Stan_portu As Byte
 
Dim Arg As Word
Dim Wartosc As Word
Dim Pozycja As Word
 
Dim Stopbit As Bit
 
Dim Animacja As Byte
 
'*************  Zmienne Koniec  ****************
 
'************ Warunki Poczatkowe ***************
'***********************************************
Pozycja = 0
Dzielnik2 = 0
Szybkosc = 10
Stopbit = 1
Animacja = 0
'*******  Warunki Poczatkowe Koniec  ***********
 
'**************  Petla glowna ******************
'***********************************************
Do
 
 If Flaga = 1 Then                                          'co 32ms
   Flaga = 0
 
   Gosub Przyciski
 
   Incr Dzielnik2
   If Dzielnik2 >= Szybkosc And Stopbit = 1 Then
     Dzielnik2 = 0
 
     Syg_led = Not Syg_led
 
     'pierwszy tryb  - przejscia plynne ustalone
     If Animacja = 0 Then
       Incr Pozycja
       If Pozycja = 900 Then Pozycja = 0
       Gosub Pozycja_do_rgb
     End If
 
     'drugi tryb - losowe przejscia
     If Animacja = 1 Then
       Incr Pozycja
       If Pozycja >= 50 Then
         Pozycja = 0
         Rand_r = Rnd(3)
         Rand_g = Rnd(3)
         Rand_b = Rnd(3)
       End If
 
       If Rand_r = 1 Then If Rled < 100 Then Incr Rled
       If Rand_r = 2 Then If Rled > 0 Then Decr Rled
 
       If Rand_g = 1 Then If Gled < 100 Then Incr Gled
       If Rand_g = 2 Then If Gled > 0 Then Decr Gled
 
       If Rand_b = 1 Then If Bled < 100 Then Incr Bled
       If Rand_b = 2 Then If Bled > 0 Then Decr Bled
     End If
 
     'trzeci tryb - losowy kolor
     If Animacja = 2 Then
       Pozycja = Rnd(900)
       Gosub Pozycja_do_rgb
     End If
 
   End If
 End If
 
Loop
End
'************ Petla glowna Koniec **************
 
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:
 
 Incr Licznik
 If Licznik = 100 Then Licznik = 0
 
 If Licznik < Rled Then
  Reset Rd
  Else
  Set Rd
  End If
 
 If Licznik < Gled Then
  Reset Gd
  Else
  Set Gd
   End If
 
 If Licznik < Bled Then
  Reset Bd
  Else
  Set Bd
  End If
 
 Incr Dzielnik
 If Dzielnik = 250 Then
   Dzielnik = 0
   Set Flaga
 End If
 
Return
'******** Przerwanie timer 0 Koniec ************
 
'************   Inne Etykiety    ***************
'***********************************************
Przelicz:                                                   'funkcja \_ _ _ _/^^^
  If Arg > 899 Then Arg = Arg - 900
 
  If Arg > 100 And Arg < 500 Then Wartosc = 0
  If Arg <= 100 Then Wartosc = 100 - Arg
  If Arg >= 500 And Arg <= 600 Then Wartosc = Arg - 500
  If Arg > 600 Then Wartosc = 100
Return
 
Pozycja_do_rgb:
  Arg = Pozycja
  Gosub Przelicz
  Rled = Wartosc
  Arg = Pozycja + 300
  Gosub Przelicz
  Gled = Wartosc
  Arg = Pozycja + 600
  Gosub Przelicz
  Bled = Wartosc
Return
Przyciski:
 
Sw = Sw_port
Sw = Sw / 8
If Sw <> 255 And Stan_portu = Sw Then
  Incr Licznik_sw
  If Licznik_sw = 10 Then
    Select Case Stan_portu
      Case 126:                                             'plus
        Licznik_sw = 5
        If Szybkosc > 1 Then Decr Szybkosc
      Case 125:                                             'minus
        Licznik_sw = 5
        If Szybkosc < 40 Then Incr Szybkosc
      Case 124:                                             'plus i minus
        Stopbit = Not Stopbit
        Syg_led = 1
      Case 111:                                             ' R
        Pozycja = 700
        Gosub Pozycja_do_rgb
      Case 119:                                             ' G
        Pozycja = 400
        Gosub Pozycja_do_rgb
      Case 123:                                             ' B
        Pozycja = 100
        Gosub Pozycja_do_rgb
      Case 110:                                             'plus R
        Licznik_sw = 8
        If Rled < 100 Then Incr Rled
      Case 109:                                             'minus R
        Licznik_sw = 8
        If Rled > 0 Then Decr Rled
      Case 118:                                             'plus G
        Licznik_sw = 8
        If Gled < 100 Then Incr Gled
      Case 117:                                             'minus G
        Licznik_sw = 8
        If Gled > 0 Then Decr Gled
      Case 122:                                             'plus B
        Licznik_sw = 8
        If Bled < 100 Then Incr Bled
      Case 121:                                             'minus B
        Licznik_sw = 8
        If Bled > 0 Then Decr Bled
      Case 103:                                             ' R G
        Rled = 100
        Gled = 100
        Bled = 0
      Case 115:                                             ' G B
        Rled = 0
        Gled = 100
        Bled = 100
      Case 107:                                             ' R B
        Rled = 100
        Gled = 0
        Bled = 100
      Case 99:                                              ' R G B
        Rled = 100
        Gled = 100
        Bled = 100
      Case 108:                                             ' plus minus R
        Animacja = 0
      Case 116:                                             ' plus minus G
        Animacja = 1
      Case 120:                                             ' plis minus B
        Animacja = 2
 
    End Select
 
  End If
Else
  Stan_portu = Sw
  Licznik_sw = 4
End If
 
Return

EDIT:

Dobra, odpaliłem USBasp, sprawdziłem poprawność fuse bitów, były OK.
Wyciąłem z programu obsługę klawiatury i lampka na Attiny24 pięknie ruszyła, diodka kontrolna sobie mruga, a RGB ładnie zmienia kolory. Będę dalej próbował rożnych kombinacji aby uruchomić jeszcze klawiaturę.

pozdrawiam

Portret użytkownika mirley

Re: Klawiatura lampki

Sprawdź jaki stan jest czytany na porcie w momencie naciskania, podając go np na te diody w momencie przycisnęcia. Czy ustawiłeś piny klawiatury jako wejścia?

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.