Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 mar 2024, o 11:46


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 13 lut 2018, o 14:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lis 2012
Posty: 35
Lokalizacja: Jaworzno
Pomógł: 0

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ę.

_________________
Trochę tu, trochę tam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lut 2018, o 14:36 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

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

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lut 2018, o 15:15 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

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

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lut 2018, o 16:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lis 2012
Posty: 35
Lokalizacja: Jaworzno
Pomógł: 0

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 ?

_________________
Trochę tu, trochę tam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lut 2018, o 21:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

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 postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lut 2018, o 10:31 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

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.

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO