Software UART do atmega8

Mar 16, 2008 4 Replies

Witam!



Okazało mi się dzisiaj z nienacka że muszę podpiąć do ATmegi8 dodatkowy UART. Mam wolne dwa liczniki, procek nie jets obciążony, prędkość nie ma dużego znaczenia, spokojnie może być 2400 bodów. Piny nie są krytyczne, zawsze resztę logiki mogę przesunąc na inne.



Czy ma ktoś gotowca lub może mi wskazać? Wiem, że jest nota Atmela dla



90S1200, ale 1200 to był jakiś bardzo dziwny CPU i nie wiem jak z działaniem tego na Mega8...

Sebastian Bialy pisze:

Polecam software UART stąd:

formatting link
Można przy okazji usprawnić w obsłudze przerwania ICP wyliczanie kolejnego momentu przerwania właśnie na podstawie zawartości rejestru ICP (zamiast TCNT).

Zpsuło im się pobieranie chyba.

Ok, pobrałem. Dwie wady widzę:

a) GPL a nie LGPL co mi przeszkadza mocno :/

b) mocno intruzywna - np. wymaga własnego zarządzania systemem przerwań przez specjalny wektor w RAM. Zamiast składać się z luźnych klocków jest raczej monolitem.

Sebastian Bialy pisze:

Tu jest także:

formatting link

Hm? Ja wyciągnąłem z tej biblioteki wyłącznie funkcje dot. software'owego UARTu (uartsw.c - wersja korzystająca z przerwania ICP), wyciąłem wszystkie bzdety mi niepotrzebne, zmieniłem sposób wywoływania przerwań bez tej dziwacznej rejestracji programowej. A właściwie to z tego wszystkiego zostały tylko kluczowe sprawy związane z nadawaniem/odbieraniem bitów danych i wyliczaniem, kiedy to zrobić. Aha, dorzuciłem także FIFO w RAMie w obu kierunkach bo początkowa implementacja tego nie miała.

Jeżeli nie chcesz GPLa to po prostu przyjrzyj się dokładnie, jak to jest wykonane, po czym od początku napisz sam. Algorytm nie jest opatentowany ani chroniony. Jeżeli nie wykorzystasz oryginalnego kodu źródłowego to będziesz w 100% legalny.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required