Witam wszystkich jako nowy forumowicz
Przejdę od razu do rzeczy. Postanowiłem zbudować dimmer pack (na 4 kanały) na atmega8. Przyznam się szczerze, że sądziłem iż nie sprawi mi to tyle kłopotu. Napisałem jakiś program w C (zacząłem się go uczyć razem z książką, sterowanie kanałami ściagnięte z projektu regulator mocy 230V
![Bardzo szczęśliwy :D](https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif)
), ale nie mam pojęcia jak zdekodować inne ramki (nie kanałów) w standardzie DMX. Chodzi mi tu o sygnał break, mtbp, mtbf i mab. Z tego co wyczytałem na różnych stronach, USART odczyta bajt danych jeśli ramka będzie odpowiednia (w dmx bit startu, 8 bitów danych, 2 bity stopu), ale co gdy na linię zostaje wysłanych więcej bitów i są to różne kombinacje od typowej ramki danych, np. break posiada co najmniej 22 bity LOW? Jak USART to potraktuje skoro nie ma żadnych bitów startu? Jak rozwiązać ten problem? Poza tym nie wiem czy mój program nie jest zbyt lakonicznie napisany. Chodzi mi o to, czy przerwania nie pochłoną zbyt dużo mocy obliczeniowej atmegi (czy pętla główna będzie się wykonywać w całości przed przerwaniem)? Zamieszczam kod główny, plik nagłówkowy i plik .lss.
Program główny:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Plik nagłówkowy:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Plik .lss:
język asm
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.