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][bascom] obsługa 3 pwm

zuraf 28 Sty 2009 19:47 2404 7
REKLAMA
  • #1 6067907
    zuraf
    Poziom 14  
    witam. W jaki sposób można wysterować trzema kanałami pwn w atmega 8? Mam kilka koncepcji, ale albo są zbyt skomplikowane programowo, sprzętowo, albo po prostu mają wady...
  • REKLAMA
  • #2 6067929
    dawid512
    Poziom 32  
    Skonfigurować Timer1 oraz 2 w tryb PWM. Pokaż co tam wymyśliłeś i podaj dokładnie w czym tkwi problem.
  • REKLAMA
  • #3 6068077
    zuraf
    Poziom 14  
    Bo fizycznie są 2, tak? na pinie b.1 i b.2, tak?

    Jak narazie to są idee tylko, ale najbardziej przystępną wydaje mi się ta, aby z jednego kanału poprzez 2 tranzystory sterować przebiegiem, i w zależności od np wartości zmiennej-licznika, przełączać te tranzystory z jednoczesną zmianą rejestru wypełnienia, problem jest w tym że na jednym odbiorniku napięcie będzie 2x mniejsze. myślałem jeszcze żeby przed tranzystorami dać jakiś układ całkujący i tymi tranzystorami sterować mosfetami, który, jak wywioskowałem na podstawie swych obserwacji, pozostanie załączony, nawet po zaniku napięcia na bramce, wystarczy tylko, by był na niej zgromadzony ładunek elektrostatyczny.

    Te moje pomysły nie są jak przypuszczam zbyt profesjonalne, ale na podstawie wiedzy jaką obecnie posiadam, próbuję wykombinowac...

    Yyy... pytanie z serii głupich... atmega8 ma timer2?
  • REKLAMA
  • #5 6068209
    zuraf
    Poziom 14  
    Jak więc go skonfigurować i na którym pinie jest "wyjście"? Konfiguruje się normalnie jak timer1?
  • #6 6068413
    gregoorr
    Poziom 17  
    Mały przykład:

    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portd.0 , E = Portc.2 , Rs = Portc.1
    Config Pinb.1 = Output
    Config Pinb.2 = Output
    Config Pinb.3 = Output
    
    
    Cursor Off
    Cls
    
    Rem konfiguracja portów
    
    Dim R As Byte
    Dim G As Byte
    Dim B As Byte
    Dim Pr As Bit
    Dim Pg As Bit
    Dim Pb As Bit
    
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
    Config Timer2 = Pwm , Async = Off , Pwm = On , Compare Pwm = Clear Up , Prescale = 1
    
    Enable Interrupts
    Enable Timer2
    Enable Timer1
    
    
    Pwm1a = 0
    Pwm1b = 0
    Ocr2 = 0
    
    
    
    
    
    
    Do
    If R <= 1 Then
    Pr = 1
    End If
    If R >= 180 Then
    Pr = 0
    End If
    
    If G <= 1 Then
    Pg = 1
    End If
    If G >= 252 Then
    Pg = 0
    End If
    
    If B <= 1 Then
    Pb = 1
    End If
    If B >= 240 Then
    Pb = 0
    End If
    
    
    
    
    
    
    If Pr = 1 Then
    Incr R
    End If
    If Pr = 0 Then
    Decr R
    End If
    
    If Pg = 1 Then
    Incr G
    Incr G
    End If
    If Pg = 0 Then
    Decr G
    End If
    
    If Pb = 1 Then
    Incr B
    End If
    If Pb = 0 Then
    Decr B
    Decr B
    End If
    
    
    
    
    
    Pwm1a = R
    Pwm1b = G
    Ocr2 = B
    
    Locate 1 , 1
    Lcd R ; "  " ; G ; "  " ; B ; "   "
    Waitms 250
    Loop



    Chyba wszystko widać.
  • REKLAMA
  • #7 6069263
    zuraf
    Poziom 14  
    dzięki:) A tak przy okazji... w jaki sposób można losowac liczbę z przedziału np 5-15?
REKLAMA