Witam
Potrzebuje rozwiązać problem sterowania osmioma niezależnymi kanałami PWM.
Interesuje mnie podanie na piny wyjściowe stałej częstotliwości i zmiennym wypełnieniu.
Nie bardzo wiem jak ten temat podejść?.
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięBascom osiem kanałów PWM
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Witam, bawilem sie kiedys w cos takiego, ponizej zamieszczam listing:
$regfile = "m16def.dat"
'$regfile = "8535def.dat"
$crystal = 7372800
'***************** Konfiguracja timerow ****************************************
' do generowania PWM na "piechote"
Config Timer0 = Timer , Prescale = 1
On Timer0 Zaswiec
Enable Timer0
Enable Interrupts
Start Timer0
Config Porta = Output ' port do ktorego sa podpiete np. ledy
Dim Pwm As Byte ' wartosc z ktora porownywane jest wypelnienie kazdego kanalu
Dim Led(8) As Byte ' zmienne w ktorych jest przechowywana wartosc wypelnienia
do
' jakies instrukcje
loop
Zaswiec: ' podprogram wywolywany po przepelnieniu timera
Stop Timer0
Incr Pwm
' If Pwm = 101 Then Pwm = 0
If Pwm < Led(1) Then
Porta.0 = 1
Else
Porta.0 = 0
End If
If Pwm < Led(2) Then
Porta.1 = 1
Else
Porta.1 = 0
End If
If Pwm < Led(3) Then
Porta.2 = 1
Else
Porta.2 = 0
End If
If Pwm < Led(4) Then
Porta.3 = 1
Else
Porta.3 = 0
End If
If Pwm < Led(5) Then
Porta.4 = 1
Else
Porta.4 = 0
End If
If Pwm < Led(6) Then
Porta.5 = 1
Else
Porta.5 = 0
End If
If Pwm < Led(7) Then
Porta.6 = 1
Else
Porta.6 = 0
End If
If Pwm < Led(8) Then
Porta.7 = 1
Else
Porta.7 = 0
End If
start timer0
Return
Mam nadzieje, ze bedzie dzialac wg oczekiwan autora tego postu, zycze udanych ekspyrementow.
[ Dodano: 22-08-2005, 16:35 ]
Zamiast led(8) ma byc led( 8 ) oczywiscie
$regfile = "m16def.dat"
'$regfile = "8535def.dat"
$crystal = 7372800
'***************** Konfiguracja timerow ****************************************
' do generowania PWM na "piechote"
Config Timer0 = Timer , Prescale = 1
On Timer0 Zaswiec
Enable Timer0
Enable Interrupts
Start Timer0
Config Porta = Output ' port do ktorego sa podpiete np. ledy
Dim Pwm As Byte ' wartosc z ktora porownywane jest wypelnienie kazdego kanalu
Dim Led(8) As Byte ' zmienne w ktorych jest przechowywana wartosc wypelnienia
do
' jakies instrukcje
loop
Zaswiec: ' podprogram wywolywany po przepelnieniu timera
Stop Timer0
Incr Pwm
' If Pwm = 101 Then Pwm = 0
If Pwm < Led(1) Then
Porta.0 = 1
Else
Porta.0 = 0
End If
If Pwm < Led(2) Then
Porta.1 = 1
Else
Porta.1 = 0
End If
If Pwm < Led(3) Then
Porta.2 = 1
Else
Porta.2 = 0
End If
If Pwm < Led(4) Then
Porta.3 = 1
Else
Porta.3 = 0
End If
If Pwm < Led(5) Then
Porta.4 = 1
Else
Porta.4 = 0
End If
If Pwm < Led(6) Then
Porta.5 = 1
Else
Porta.5 = 0
End If
If Pwm < Led(7) Then
Porta.6 = 1
Else
Porta.6 = 0
End If
If Pwm < Led(8) Then
Porta.7 = 1
Else
Porta.7 = 0
End If
start timer0
Return
Mam nadzieje, ze bedzie dzialac wg oczekiwan autora tego postu, zycze udanych ekspyrementow.
[ Dodano: 22-08-2005, 16:35 ]
Zamiast led(8) ma byc led( 8 ) oczywiscie
Witam.
program powinien działać poprawnie ale nie za bardzo nadaje się do urządzeń które wymagają dużej częstotliwosci.
Jeśli masz w procku program który powinien się szybko wykonywać np mierzysz jakieś zmienne i odpowiadasz na nie za pomocą PWM to musisz ustawić przerwania tak aby było więcej czasu na wykonywanie programu, jezełi ustawisz przerwanie timera tak że będzie ono z częstotliowscią 1000 Hz a PWM będzie o rozdzielczości 100 to na wyjściu dostaniesz żenującą częstotliwość.
Spróbowałbym poszukać jakiegośc układu pwm sterowanego przez spi np. lub coś o czym ostatnio myślałem wykorzystać procki np m 32 a w nich masz trzy PWM sprzętowe.
PozdrawiamAS
program powinien działać poprawnie ale nie za bardzo nadaje się do urządzeń które wymagają dużej częstotliwosci.
Jeśli masz w procku program który powinien się szybko wykonywać np mierzysz jakieś zmienne i odpowiadasz na nie za pomocą PWM to musisz ustawić przerwania tak aby było więcej czasu na wykonywanie programu, jezełi ustawisz przerwanie timera tak że będzie ono z częstotliowscią 1000 Hz a PWM będzie o rozdzielczości 100 to na wyjściu dostaniesz żenującą częstotliwość.
Spróbowałbym poszukać jakiegośc układu pwm sterowanego przez spi np. lub coś o czym ostatnio myślałem wykorzystać procki np m 32 a w nich masz trzy PWM sprzętowe.
PozdrawiamAS
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 23 gości