Programowy PWM


10
Ocena: None Średnia: 10 (2 głosujących)

PWM (Pulse - Width Modulation) modulacja szerokości impulsu jest powszechnie stosowana do regulacji mocy odbiorników prądu stałego (i nie tylko). Polega ona na sterowaniu wypełnieniem przebiegu prostokątnego o stałej amplitudzie. Mimo że większość mikrokontrolerów posiada własne, przeważnie wielokanałowe, układy PWM, czasem zachodzi potrzeba wekonania czegoś podobnego programowo. W przedstawionym dalej przykładzie pokazana jest zasada sterowania diodami trójkolorowymi (RGB), poprzez zmianę wypełnienia przebiegu prostokątnego sterującego każdy z kolorów.

Język BASCOM AVR:

Przykładowy program do sterowania diodą RGB przedstawiony jest poniżej:

'************* Konfiguracja uC *****************
'***********************************************
$regfile = "attiny2313.dat"
$crystal = 16000000
 
Config Portb = &B11111111 : Portb = &B11111111
Config Portd = &B11111111 : Portd = &B11111111
 
Config Timer0 = Timer , Prescale = 8
Enable Timer0 : On Timer0 Prztimer0
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
 
'******************  Nazwy *******************
'***********************************************
Rd Alias Portb.0
Gd Alias Portb.1
Bd Alias Portb.2
'*************  Nazwy Koniec  ****************
 
'******************  Zmienne *******************
'***********************************************
Dim Licznik As Byte
Dim Rled As Byte , Bled As Byte , Gled As Byte
'*************  Zmienne Koniec  ****************
 
'************ Warunki Poczatkowe ***************
'***********************************************
Rled = 80
Gled = 0
Bled = 90
'*******  Warunki Poczatkowe Koniec  ***********
 
'**************  Petla glowna ******************
'***********************************************
Do
 
Loop
End
'************ Petla glowna Koniec **************
 
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:
 Incr Licznik
 If Licznik = 100 Then Licznik = 0
 
 If Licznik < Rled Then Set Rd Else Reset Rd
 If Licznik < Gled Then Set Gd Else Reset Gd
 If Licznik < Bled Then Set Bd Else Reset Bd
Return
'******** Przerwanie timer 0 Koniec ************

Program był testowany na mikrokontrolerze ATTiny2313 o czym świadczy pierwsza linijka w konfiguracji. Timer został ustawiony na podział częstotliwości przez 8. Ponieważ jest on ośmiobitowy (liczy do 256) to przerwanie będzie występowało z częstotliwością ok. 7,8kHz.

W przerwaniu Timera (Prztimer0) zostaje zwiększany cyklicznie Licznik od wartosci 0 do 99, co odpowiada regulacji wypełnienia co 1%. Działanie PWM jest zrealizowane w banalny sposób za pomocą instrukcji warunkowej if Licznik.... Porównuje ona aktualną wartość Licznika ze zmienną określającą natężenie (Rled, Gled lub Bled, 3 kanały) i wystawia stan wysoki na pinie wyjściowym jeśli Licznik ma mniejszą wartość od zmiennej, a stan niski jeśli warunek ten nie jest spełniony. W efekcie dla zmiennej (Rled, Gled lub Bled) równej 100 Licznik jest mniejszy od niej cały czas (liczy od 0 do 99) i na wyjściu jest cały czas stan wysoki (wypełnienie 100%). Jeśli natomiast zmienna jest równa 0 to licznik nigdy nie jest od niej mniejszy i wypełnienie będzie równe 0%.




Portret użytkownika matrix

Re:Witam Próbuję zastosować

Świeci się cały czas tak samo bo niby jak ma się zmieniać?
Pokaż mi w poniższym kodzie gdzie zmieniasz wartość zmiennej Gled?

Dim Licznik As Byte
Dim  Gled As Byte
 
 
Gled = 10
 
Do
 
Loop
End
 
Prztimer0:
 Incr Licznik
 
 If Licznik = 100 Then Licznik = 0
 
 If Licznik < Gled Then Set Gd Else Reset Gd
 
Return

Portret użytkownika tevo

Dzięki Działa tak jak

Dzięki

Działa tak jak należy. Przeoczyłem taką pierdołkę lecz istotną :D

Portret użytkownika matrix

Re:Witam Próbuję zastosować

Od tego jesteśmy by sobie pomagać.

Portret użytkownika tevo

Mam jeszcze taki problem po

Mam jeszcze taki problem po wgraniu do proca poniższego programu działa wyśmienicie tylko jest jeden mankament otóż diody świecą z różną jasnością tak jak trzeba, ale towarzyszy temu nieprzyjemne migotanie domyślam się, że pwm ma za małą częstotliwość i dlatego widoczny jest taki efekt. Jak temu zaradzić ?

$regfile = "attiny26.dat"
$crystal = 1000000
 
Config Portb = &B11111111 : Portb = &B01000000
 
Ddra = &B01111111
Porta = &B00000000
 
 
Config Timer0 = 100 , Prescale = 1
Enable Timer0 : On Timer0 Prztimer0
Enable Interrupts
 
Config Adc = Single , Prescaler = 8 , Reference = Avcc
Dim Wart_ac As Word
 
Start Adc
 
Gd Alias Porta.0
 
Set Pinb.6
S_1 Alias Pinb.6
 
Dim Dzielnik(4) As Byte
Dim Flaga_4ms As Bit
Dim Licznik(2) As Byte
Dim Gled As Word
Dim Z As Bit
 
Gled = 0
 
 
Do
 
Loop
End
 
Prztimer0:
 
   Incr Licznik(1)
   Incr Licznik(2)
 
   If Licznik(2) = 255 Then
      Wart_ac = Getadc(6)
      Wart_ac = Wart_ac / 10
      End If
 
If Licznik(1) = 100 Then
   Licznik(1) = 0
 
 
   If Wart_ac >= 100 Then
      Wart_ac = 100
   Elseif 1 > Wart_ac Then
      Wart_ac = 0
      End If
      Gled = Wart_ac
   End If
 
If Wart_ac > 2 Then
   If Licznik(1) < Gled Then
      Set Gd
      Else
      Reset Gd
      End If
 
Else
   Pina.0 = 0
   End If
Return

procek z wewnętrznym zegarem 1MHz

Portret użytkownika matrix

Re: Mam jeszcze taki problem...

Prawdopodobnie fusy masz ustawione na 1MHz.

Portret użytkownika tevo

A czy tak ustawionym zegarze

A czy tak ustawionym zegarze tzn. fabrycznie na 1MHz da się coś więcej wycisnąć z tego programu żeby zniknął ten efekt mrugania? Albo jeszcze inaczej jak policzyć z jaką częstotliwością zmienia się teraz sygnał PWM. Aby dobrać odpowiednią częstotliwość procesora zmieniając fusy.

Portret użytkownika matrix

Re: Mam jeszcze taki problem...

Ja zwykle taktuję procka 8MHz, ale przy jednym MHz na myśl przychodzi mi tylko zwiększenie częstotliwości przerwań.

Portret użytkownika tevo

Witam Mam problem z tym

Witam

Mam problem z tym migotaniem ledów problem ten ustał gdy na attiny 26 zwiększyłem wewnętrzne taktowanie na 8MHz. Ale problem ten powrócił gdy przesiadłem się na attiny 45 ustawiłem fusy zgodnie z tym link i pomimo że zgodnie z tym jest niby te 8MHz występuje to migotanie. Poniżej program na którym to testuję:

$regfile = "attiny45.dat"
$crystal = 8000000
 
Ddrb = &B110011                                             'konfiguracja portu 1-wyjscie, 0-wejscie
Portb = &B000000                                            '1-rezystor podciagajacy
 
Config Timer0 = 255 , Prescale = 1                          'konfiguracja timer0
Enable Timer0 : On Timer0 Prztimer0
Enable Interrupts
 
Gd Alias Portb.4
Ir Alias Portb.0
'Set Pinb.6
'S1 Alias Pinb.6
 
Dim Flaga_1 As Bit
Dim Licznik(6) As Integer
Dim Gled As Word , Irled As Word
 
Gled = 5
Irled = 80
 
Do
 
Loop
End
 
Prztimer0:
 
   Incr Licznik(1)
 
If Licznik(1) = 100 Then
   Licznik(1) = 0
 
   End If
 
If Licznik(1) < Gled Then
   Set Gd
   Else
   Reset Gd
   End If
 
If Licznik(1) < Irled Then
   Set Ir
   Else
   Reset Ir
   End If
 
Return

Portret użytkownika mirley

Re: PWM

Napewno coś jest z fusami bo teraz teoretycznie gdzies 300Hz masz odświerzanie diod, nie ma szans żeby migały. Jak by było 8MHz..... Sprawdź jeszcze raz czy CKDIV jest odznaczony

-

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 demsy1

PWM

Witam serdecznie
Chciałbym się dowiedzieć jak dokończyć kod tak żeby włączając przycisk bistabilny rozjaśniały się diody, a po jego wyłączeniu gasły przyciemniając się, z tym że kolejno od 1 diody do 5 diody

To jest timer:

Prztimer0:
 
Incr Licznik
If Licznik = 100 Then Licznik = 0
 
 
If Licznik < Wyp(1) Then Set Led1 Else Reset Led1
  If Licznik < Wyp(2) Then Set Led2 Else Reset Led2
   If Licznik < Wyp(3) Then Set Led3 Else Reset Led3
    If Licznik < Wyp(4) Then Set Led4 Else Reset Led4
     If Licznik < Wyp(5) Then Set Led5 Else Reset Led5
     Return

Co wstawić w pętli głównej
napewno bedzie

If pinx.x = 0 then 
....... i coś tam 

wiem że muszę zmieniać zmienną wyp(x)
ale nie wiem jak to dokładnie napisać

Portret użytkownika matrix

Re: PWM

Sprecyzuj. Opisz dokładniej.

Portret użytkownika maro

PWM

W pętli wstaw coś takiego:

If Wlacznik = 0 Then
 
Incr Wyp(1)
If Wyp(1) = 255 Then
Zezwol = 1
End If
     If Zezwol = 1 Then
     Incr Wyp(2)
     If Wyp(2) = 255 Then
        Zezwol = 0
        Zezwol1 = 1
     End If
     End If
           If Zezwol1 = 1 Then
           Incr Wyp(3)
           If Wyp(3) = 255 Then
               Zezwol1 = 0
               Zezwol2 = 1
            End If
            End If
                   If Zezwol2 = 1 Then
                   Incr Wyp(4)
                   If Wyp(4) = 255 Then
                       Zezwol2 = 0
                       Zezwol3 = 1
                   End If
                   End If
                          If Zezwol3 = 1 Then
                          Incr Wyp(5)
                          If Wyp(5) = 255 Then
                              Zezwol3 = 0
                              Zezwol4 = 1
                          End If
                          End If

teraz się rozjaśnia, wstaw jeszcze tak żeby się przyciemniało

if wlacznik = 1 then
decr wyp(5)
if wyp(5) = 0 then
   zezwol4=1
end if
....... itd aż do wyp(1)

Portret użytkownika matrix

Re: PWM

Nie potrzeba pisać czegoś takiego jaik kolega wyżej, bo trzeba zadeklarować dodatkowe zmienne z ilością uzależnioną od ilości kanałów. wystarczy skorzystać z jednej zmiennej ale sprawdzać warunki czy poprzedni kanał osiągnął wartość max ściemnienia (rozjaśnienia).

Portret użytkownika demsy1

Pwm

podpowie mi ktoś?

Portret użytkownika matrix

Re: PWM

Możesz to napisać na dwa sposoby tylko przerób sobie pod siebie, zmniejsz prędkość czy coś tam:
Załóżmy że zwiększanie zmiennej powoduje ściemnianie diod (bo z tego co pamiętam to tak jest)

procedura_sciemniania:
 if Wyp(1) < 255 then    'tu sprawdzisz czy dioda 1 nie jest jeszcze zgaszona
    incr Wyp(1)          'jeśli nie jest to zaczniesz ją gasić
  else
    Wyp(1) = 255         'tego w sumie mógłbyś nie stosować. zależy jak sterujesz jasnością w programie
 end if
 if Wyp(1) = 255 then    'tu sprawdzasz czy dioda 1 już jest wygaszona
  if Wyp(2) < 255 then   'jeśli jest to sprawdzasz czy dioda 2 jeszcze świeci
     incr Wyp(2)         'jeśli jeszcze świeci to zaczniesz ją gasić
   else
     Wyp(2) = 255        'tego w sumie mógłbyś nie stosować. zależy jak sterujesz jasnością w programie
  end if
 end if
 if Wyp(2) = 255 then    'tu sprawdzasz czy dioda 2 już jest wygaszona
  if Wyp(3) < 255 then   'jeśli jest to sprawdzasz czy dioda 3 jeszcze świeci
    incr Wyp(3)          'jeśli jeszcze świeci to zaczniesz ją gasić
  else
    Wyp(3) = 255        'tego w sumie mógłbyś nie stosować. zależy jak sterujesz jasnością w programie
  end if
 end if
return

i tak dalej i tak dalej. Zasada polega na sprawdzeniu czy poprzednia dioda już została wygaszona.
W tym rozwiązaniu może ukazać się jeden kłopot, mianowicie, jeśli dioda 1 świeci, 2 świeci a 3 jest wygaszona to ten podprogram zacznie wygaszanie od diod 1 ale też od diody 4 ponieważ sprawdzi że dioda 3 jest wygaszona.

Możesz się przed tym zabezpieczyć wprowadzając warunek and w każdej następnej po sobie diodzie.

Portret użytkownika mirley

Re: PWM

Spróbuj coś takiego napisać:

Zmienne:

Dim Licznik as byte
Dim Led as byte     'wartości które trzeba potem wpisać na port
Dim Stan(5) as byte   'tablica stan określa jak mają być zapalone diody 

Prztimer0:
 
  Incr Licznik
  If Licznik = 100 Then Licznik = 0
 
  If Licznik < Stan(1) Then Set Led.0 Else Reset Led.0
  If Licznik < Stan(2) Then Set Led.1 Else Reset Led.1
  If Licznik < Stan(3) Then Set Led.2 Else Reset Led.2
  If Licznik < Stan(4) Then Set Led.3 Else Reset Led.3
  If Licznik < Stan(5) Then Set Led.4 Else Reset Led.4
 
  portx = Led
Return

W pętli głównej np co 100ms: ' w przerwaniu jeszcze trzeba dorzucić dzielnik i ustawiać flagę co 100ms

if Przycisk = 0 Then
  if Stan(1) < 100 Then incr Stan(1)
  if Stan(1) >= 100 Then if Stan(2) < 100 Then incr Stan(2)
  if Stan(2) >= 100 Then if Stan(3) < 100 Then incr Stan(3)
  if Stan(3) >= 100 Then if Stan(4) < 100 Then incr Stan(4)
  if Stan(4) >= 100 Then if Stan(5) < 100 Then incr Stan(5)
Else
  if Stan(5) > 0 Then decr Stan(5)
  if Stan(5) <= 0 Then if Stan(4) > 0 Then decr Stan(4)
  if Stan(4) <= 0 Then if Stan(3) > 0 Then decr Stan(3)
  if Stan(3) <= 0 Then if Stan(2) > 0 Then decr Stan(2)
  if Stan(2) <= 0 Then if Stan(1) > 0 Then decr Stan(1) 
End if

-

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 demsy1

W przerwaniu ustawiam

W przerwaniu ustawiam dzielnik

Incr Dzielnik
 If Dzielnik = 100 Then 
   Dzielnik = 0
   Flaga_100ms = 1

Portret użytkownika mirley

Re: Dzielnik

Jeśli przerwanie masz co 1ms to tak, Taki dzielnik masz dać aby odliczył 100ms. Musisz zliczyć odpowiednią ilość przerwań. Do pracy programowego PWM musisz mieć napewno szybsze przerwanie nic co 1ms bo dzielisz to przez 100 i dostajesz częstotliwość sygnału z PWM, która powinna być napewno ponad 60-80Hz

-

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 demsy1

PWM

nie portafie sobie poradzić z obliczeniami
zegar mam 12MHz i prescale np: 256
12000000/256=46875
1/46875= 0,21us

teraz liczę czas na przyjście 256 (timer0) impulsów bo wtedy się przepełni
czy 256 * 0,21us = 0,06ms
dobrze to liczę?

Portret użytkownika mirley

Re: Timer

Nie do końca dobrze... pierwsza część ok ale potem 46875 dzielisz jeszcze przez 256 i potem odwracasz.... wychodzi coś około 5.46ms ale nie jest to dokładna wartość.

-

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 Chester

PWM

Witam Wszystkich :)

Wziąłem sobie Attiny2313 zaprogramowałem programem, który jest na pierwszej stronie nie zmieniając nic. Do portów b 0,1,2 podłączyłem zwykłe diody (nie jedną RGB). Włączyłem zasilanie i wszystkie diody świecą jednakowo. Czy nie powinny zapalać się i gasnąć w kolejności?

Z góry dzięki za odpowiedź:)

Portret użytkownika kaktus

(-;

Nie wiem co masz na myśli dokładnie, ale jeśli spodziewasz się rozjaśniania i przyciemniania to musisz je sobie dopiero zrobić ...

W takim wypadku odpowiedź na zadane pytanie brzmi NIE.
Gdy będziesz zmieniał wartości XLED osiągniesz zamierzony efekt.

Podobne pytanie ktoś już zadał powyżej i uzyskał odpowiedź.

-

"Cierpliwym być musisz, by wiedzę zgłębiać tajemną, gdyż ciemna strona mocy niszczącą i silną jest.".

Portret użytkownika Chester

PWM

Powiem Wam zaszalałem z tym kodem :)

'************* Konfiguracja uC *****************
'***********************************************
$regfile = "attiny2313.dat"
$crystal = 8000000
 
Config Portb.0 = Output
Config Portb.1 = Output
Config Portd.4 = Input
Portd.4 = 1
 
 
Config Timer0 = Timer , Prescale = 8
Enable Timer0 : On Timer0 Prztimer0
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
 
'******************  Nazwy *******************
'***********************************************
Rd Alias Portb.0
Gd Alias Portb.1
 
 
'*************  Nazwy Koniec  ****************
 
'******************  Zmienne *******************
'***********************************************
Dim Licznik As Byte
Dim Rled As Byte , Gled As Byte
Dim X As Word
 
'*************  Zmienne Koniec  ****************
 
'************ Warunki Poczatkowe ***************
'***********************************************
 
 
'*******  Warunki Poczatkowe Koniec  ***********
 
'**************  Petla glowna ******************
'***********************************************
Do
 
If Pind.4 = 0 Then
   Rled = 250
   Gled = 0
End If
 
If Pind.4 = 1 Then
For X = 0 To 250
Rled = X
Gled = X
Waitms 50
 
Next X
 
For X = 250 To 0 Step -1
Rled = X
Gled = X
Waitms 50
 
Next X
 
 
End If
 
Loop
End
'************ Petla glowna Koniec **************
 
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:
 Timer0 = 120
 Incr Licznik
 If Licznik = 100 Then Licznik = 0
 
 If Licznik < Rled Then Set Rd Else Reset Rd
 If Licznik < Gled Then Set Gd Else Reset Gd
 
Return
'******** Przerwanie timer 0 Koniec ************

Chciałem zrobić program że jak jest na nóżce PIND.4 stan niski to zawsze ma się świecić jedna dioda natomiast jak wystąpi stan wysoki to ma zgasną ta dioda a zaświecić się druga dioda z płynnym wykorzystaniem PWM. Po tym zadaniu procesor ma oczekiwać na pojawienie się znowu stanu niskiego na Pind.4 aby zapalić diodę.
Jak narazie początek mam ale później nie wiem jak zatrzymać tą pętle FOR aby diody nie zapalały się kilkukrotnie na zmianę tylko raz. No i wykonują to równocześnie :(
Proszę o pomoc w rozwiązaniu problemu :)

Portret użytkownika Elektro

Witam, mam niby prostą sprawę

Witam, mam niby prostą sprawę ale jak się okazuje nie taką prostą. Otóż taki kod daje mi 1Mhz, 0,5Mhz bo toggle dzieli na pół(czy dzieli?), czy jaką w końcu?

$Crystal = 8000000
Config Timer1 = Timer , Prescale = 8 , Compare A = Toggle , Clear Timer = 1
 Enable Timer1
 
 Compare = 0

Kod działa widzę ładny kwadrat("oscyloskop" z xmega nie skalibrowany nijak), ale nie mam właściwie pojęcia jaka częstotliwość. A potrzeba mi do kalibracji oscyla.
I jak wygląda wzór na uzyskanie tego PWM bez regulacji wypełnienia??
Jaką F będę miał jak dam Compare = 1? Podzieli na pół?
Pozdrawiam.

Portret użytkownika EDC

Odp. Wyjście zegarowe

Nie napisałeś ile potrzebujesz na wyjściu. Zawsze jest tak z Atmegami, że masz do dyspozycji tylko połowę prędkości bo w jednym cyklu zegara można tylko raz odwrócić stan pinu.
W Attiny2313 na przykład masz tez możliwość włączenia wyjścia zegara bezpośrednio na pin. Nazywa się to CKOUT i stosuje się by w całym systemie był jeden wspólny sygnał.

-

BARTek
Moja strona

Portret użytkownika Elektro

Dzięki za odpowiedź. Otóż za

Dzięki za odpowiedź. Otóż za pomocą np tej zmiennej chciałbym móc regulować F, powiedzmy 50Khz, najlepiej do miliona Hz. I tak to właściwie działa, nie wiem jednak czy właśnie jest podzielona na pół, czy może w ogóle źle liczę. Podzieliłem tak: 8M/8 presc daje 1 Mhz, a toggle jeszcze dzieli jak mówisz na pół bo pełny okres zajmuje 2 cykle, czy dobrze myślę?

Portret użytkownika EDC

Odp.Wyjście zegarowe

Żeby sobie ułatwić i się głupio nie pomylić stworzono kalkulatory. Trochę przez lenistwo ale też kalkulator działa powtarzalnie bez błędów a człowiek potrafi się gdzieś głupio machnąć i traci czas.
W programie MkAVRcalculator jest darmowa zakładka Narzędzia i w niej kalkulator do Timerów.
Fajny z tego względu że możesz przeliczać bezpośrednio z czasu jaki Ci potrzebny na wyjściu albo F potrzebne na wyjściu. Sam zobacz. Jeśli używasz CTC to interesują Cię tabelki z CTC. Jeśli okienko jest puste to znaczy że z tym preskalerem nie da się tego osiagnąć.

Możesz sobie tez zbudowac nawet na byle czym z podstawką 20PIN i LCD taki miernik. Sam go mam zaimplementowany gdzieniegdzie :P
http://mdiy.pl/miernik-czestotliwosci-na-avr-od-1hz-do-10mhz/
W kodzie wpisujesz tylko jaki masz kwarc żeby dobrze liczył i będzie liczył do połowy predkości kwarca bo tez potrafi rozpoznać zmieniony stan pinu tylko raz na jeden cykl zegara ;) Mierzy za to bardzo dokladnie.

-

BARTek
Moja strona

Portret użytkownika Elektro

Ok, dzięki :D

Ok, dzięki :D

Portret użytkownika Elektro

Mam Atmega jakiś lcd coś z

Mam Atmega jakiś lcd coś z tego będzie :D

Portret użytkownika EDC

Odp.Wyjście zegarowe

Musisz mieć ATtiny2313 20PIN z tego co pamiętam bo ten kod nie będzie pasował do Mega. Tam jest jedna zmienna zadeklarowana pod konkretnym adresem w pamieci który jest przesunięty w Mega ;)
Dlatego trzeba otworzyć notę aplikacyjną obu mikrokontrolerów i porównać po czym zmienić kod ;)
Wiem bo sam zmieniałem na 328P tylko musiałbym teraz poszukac gotowca.

-

BARTek
Moja strona

Portret użytkownika Elektro

Zrozumiałem po 2h że to nie

Zrozumiałem po 2h że to nie zadziała, zresztą podejrzewałem ze te rejestry nie będą wcale takie same.
Ale uruchomiłem inny kod herc miarki, do tego dałem jeszcze Timer2 toggle, i mam działający miernik i generatorek kwadratu w jednym, niestety nie umiem regulować F tego timera2 więc mam stałą F na wyjściu D7 w Mega32 8M/32 = 250K, ale toggle widze dzieli na pół, tak jak myślałem. Ale ważne że w końcu działa. Mam jakiś punkt odniesienia, bo to do kalibracji niby oscyloskopu na Xmega. Pozdro i dzięki.