ATNEL tech-forum
https://forum.atnel.pl/

Generowanie sekwencji impulsów
https://forum.atnel.pl/topic20210.html
Strona 1 z 1

Autor:  niemy [ 13 lut 2018, o 14:28 ]
Tytuł:  Generowanie sekwencji impulsów

Witam szanowne grono.

Generalnie mam taki problem i trochę się już zamotałem dlatego piszę.
Na obrazku przedstawiam interpretację tego co mam uzyskać postaram się w skrócie opisać.
Chodzi o to aby procesor dokładnie Attiny 13A generował sekwencje impulsów składającą się z:
Cztery impulsy gdzie impuls długości 30 ms a przerwa długości 60 ms po czterech takich impulsach 2,5 sekundy przerwy i znowu cztery impulsy i przerwa i tak w kółko.
Ale tutaj jest dla mnie gwóźdź do trumny impulsy to tak na prawdę nie ma być ciągły sygnał a ma się składać z PWM'a 100 lub 200 Hz o regulowanym wypełnieniu od 1 do 100 %.

Jak pogodzić to wszystko razem ? Bo z jednej strony mam PWM'a czyli bardzo krótkie czasy a z drugiej muszę czekać aż 2,5 sekundy i w dodatku żaden czas się nie powtarza i to wszystko zmieścić w attiny ?

Mam odpalić PWM'a hardwarowego czy próbować sobie radzić timerami programowymi ?

Obrazek

Pozdrawiam i z góry dziękuję za sugestię.

Autor:  MirkoT [ 13 lut 2018, o 14:36 ]
Tytuł:  Re: Generowanie sekwencji impulsów

Masz tylko jeden sprzętowy timer 8 bitowy.
No to chyba ;) bez timerów programowych się nie obejdzie.

Autor:  JarekB [ 13 lut 2018, o 15:15 ]
Tytuł:  Re: Generowanie sekwencji impulsów

Hmmm
Może tak:
200 Hz to daje 5 ms na jeden cykl PWM-a. Przy szerokości impulsu 30 ms będziesz miał raptem 6 zmian zbocza.
(6 w górę albo 6 w dół)
No to może potraktować zmianę zbocza przerwaniem zliczającym 6 zmian.
Ustawić flagę, a następnie przełączyć na licznik który zliczy odliczy 60 milisekund
Powtórzyć to samo 4 razy
Przełączyć się znowu na licznik i odliczyć 2,5 s.


Zobacz gdyby dało się okocić OC0B z przerwaniem INT0
To w obsłudze przerwania mógłbyś sobie zrobić cały mechanizm ustawiania flag.
A w pętli głównej ustawianie trybów pracy
Masz to wszystko na jednym pinie
MISO/AIN1/OC0B/INT0/PCINT1

Autor:  niemy [ 13 lut 2018, o 16:24 ]
Tytuł:  Re: Generowanie sekwencji impulsów

Zerknę na to jak coś powstanie to podeślę.

Kilka pytań do doprecyzowania. Czyli mam przełączać pomiędzy generacją PWM'a jak ma być impuls (i w tedy zliczam zbocza) a timerem jak ma być stan niski ?
Dobrze zrozumiałem ?

Autor:  xentis [ 13 lut 2018, o 21:25 ]
Tytuł:  Re: Generowanie sekwencji impulsów

Tu masz taki naskrobany na szybko przykładzik:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Procek attiny13, taktowanie 9600000 z wewnętrznego oscylatora.
PWM programowy - na sprzętowym można to też zrobić ale nie da się wyliczyć częstotliwości PWM dokładnie na 100 lub 200 Hz

------------------------ [ Dodano po: 14 minutach ]

Działanie:
Timer sprzętowy napędza przerwanie z częstotliwością ok 26kHz co przy PWM-ie 8 bitowym daje częstotliwość 100Hz z niewielką odchyłką. Owe 100Hz (czyli podstawa czasowa 10ms) stanowi również siłę napędową dla licznika programowego odmierzającego stałe czasowe sygnału zapisanego w tablicy "czasy" w pamięci flash. Z kolei zmienna "czas" stanowi licznik wskazujący kolejne stałe czasowe z tablicy.
Program zajmuje ok 25% pamięci więc można jeszcze poszaleć 8-)
Oczywiście można to zrobić jeszcze prościej - na żywca w pętli głównej wrzucając delaye formujące przebieg sygnału, a w przerwaniu generowanie samego PWM...

Autor:  JarekB [ 14 lut 2018, o 10:31 ]
Tytuł:  Re: Generowanie sekwencji impulsów

niemy napisał(a):
Zerknę na to jak coś powstanie to podeślę.

Kilka pytań do doprecyzowania. Czyli mam przełączać pomiędzy generacją PWM'a jak ma być impuls (i w tedy zliczam zbocza) a timerem jak ma być stan niski ?
Dobrze zrozumiałem ?


Tak mniej więcej to na poczekaniu wymyśliłem.

Natomiast gdy popatrzyłem na ATTINY13A to przyszła mi inna myśl.
Pytanie jest czy nie można by było tego projektu zrealizować na ATTINY24A
(trochę trudno operować tym jednym 8 bit timerem)

Patrząc na cenę w TME obydwa kosztują tyle samo 2,48 zł netto
Dostajesz za to dwa timery 8 bit i jeden 16 bit. plus więcej ram-u
Problemem może być większa liczba odnóży procka.
Wszystko zależy czy to ma być jednorazowy projekt czy produkcja.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/