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

[avr] [bascom] [noob] pwm, sterowanie oswietleniem

Gibol 13 Gru 2008 20:14 2321 5
REKLAMA
  • #1 5855129
    Gibol
    Poziom 17  
    Tworze sterownik oświetlenia choinki, jestem początkujący jezeli chodzi o programowanie, chce zawszeć w programie kilka wariantów oświetlenia, na razie napisałem jeden i zajmuje 50% Flasha, cały dzień próbuję to skrócić jakoś, ale nie wychodzi mi za bardzo, proszę o jakąś propozycję na skrócenie programu, ale z zachowaniem funkcjonalności tak jak jest teraz bo o to mi dokładnie chodziło.
  • REKLAMA
  • #2 5855222
    Freddy
    Poziom 43  
    Wykorzystaj podprogramy i tablice wartości.
    Np. :
    
    wer1:
    data 1,3,12,128 ......
    wer2:
    data 124,223,208.....
    
  • REKLAMA
  • #3 5855259
    Gibol
    Poziom 17  
    jakis przyklad jak to zrobic nie tacąc tej regulacji jaka daje mi T1?

    Edit:

    Lol - po 3 piwach dostalem przeblysku...

    $regfile = Mega32.def
    $crystal = 20000000                                         '20MHz
    
    Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
    Dim T1 As Integer
    Dim Licznik As Integer
    
    Config Portd = Output
    
    T1 = 1
    
    Do
     
    Pwm1a = 1
    Pwm1b = 255
    Waitms T1
    Pwm1a = 16
    Pwm1b = 240
    Waitms T1
    Pwm1a = 32
    Pwm1b = 224
    Waitms T1
    Pwm1a = 48
    Pwm1b = 208
    Waitms T1
    Pwm1a = 64
    Pwm1b = 192
    Waitms T1
    Pwm1a = 72
    Pwm1b = 176
    Waitms T1
    Pwm1a = 88
    Pwm1b = 160
    Waitms T1
    Pwm1a = 112
    Pwm1b = 144
    Waitms T1
    Pwm1a = 128
    Pwm1b = 128
    Waitms T1
    Pwm1a = 144
    Pwm1b = 112
    Waitms T1
    Pwm1a = 160
    Pwm1b = 96
    Waitms T1
    Pwm1a = 176
    Pwm1b = 80
    Waitms T1
    Pwm1a = 192
    Pwm1b = 64
    Waitms T1
    Pwm1a = 208
    Pwm1b = 48
    Waitms T1
    Pwm1a = 224
    Pwm1b = 32
    Waitms T1
    Pwm1a = 240
    Pwm1b = 16
    Waitms T1
    Pwm1a = 255
    Pwm1b = 1
    Waitms T1
    Pwm1a = 240
    Pwm1b = 16
    Waitms T1
    Pwm1a = 224
    Pwm1b = 32
    Waitms T1
    Pwm1a = 208
    Pwm1b = 48
    Waitms T1
    Pwm1a = 192
    Pwm1b = 64
    Waitms T1
    Pwm1a = 176
    Pwm1b = 80
    Waitms T1
    Pwm1a = 160
    Pwm1b = 96
    Waitms T1
    Pwm1a = 144
    Pwm1b = 112
    Waitms T1
    Pwm1a = 128
    Pwm1b = 128
    Waitms T1
    Pwm1a = 112
    Pwm1b = 144
    Waitms T1
    Pwm1a = 96
    Pwm1b = 160
    Waitms T1
    Pwm1a = 80
    Pwm1b = 176
    Waitms T1
    Pwm1a = 64
    Pwm1b = 192
    Waitms T1
    Pwm1a = 48
    Pwm1b = 208
    Waitms T1
    Pwm1a = 32
    Pwm1b = 224
    Waitms T1
    Pwm1a = 16
    Pwm1b = 240
    Waitms T1
    Incr Licznik
    
    
    
    If Licznik < 8 Then
    Incr T1
    Else
    Decr T1
    
    If Licznik = 16 Then Set Porta.0
    End If
    
    
    Loop                                                       
    


    Tam gdzie set portA BEDZIE prog dalej :)

    Moderowany przez zumek:

    Proszę poprawić tytuł wiadomości - regulamin p.11
    Kod z pierwszego postu, dodać jako załącznik, a nie wklejać na forum > 1400 linii kodu - prosze poprawić.

  • REKLAMA
  • #4 5857551
    Freddy
    Poziom 43  
    A nie prościej w taki sposób ?

    
    .........
    Read Tablica
    Do
    .........
    For I = 1 To Ileśtam
         Robota(tablica(el1) , Tablica(el2) , Czas)
    Nexti
    .........
    Incr Licznik
    If Licznik < 8 Then
    Incr T1
    Else
    Decr T1
    
    If Licznik = 16 Then Set Porta.0
    End If
    
    
    Loop
    
    Sub Robota(w1 As Byte , W2 As Byte , T1 As Byte)
       Pwm1a = W1
       Pwm1b = W2
       Waitms T1
    End Sub
    
    Tablica1
    Data 1 , 255 , 16 , 240 , 32 , 224 , 48 , 208 , 64 , 192
    
  • REKLAMA
  • #5 5858541
    Gibol
    Poziom 17  
    do czego sluzy "Read Porta.0 Tablica " ?
  • #6 5859004
    Freddy
    Poziom 43  
    Już poprawiłem
REKLAMA