ATNEL tech-forum https://forum.atnel.pl/ |
|
Generowanie sekwencji impulsów https://forum.atnel.pl/topic20210.html |
Strona 1 z 1 |
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: 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ć 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/ |