No właśnie, znacie jakiś mikrokontroler (idealnie byłoby, gdyby był kompatybilny z '51), posiadający dwa porty szeregowe oraz (niezależnie) port ośmiobitowy? Dobrze byłoby również, gdyby miał wbudowaną pamięć flash, tak żebym mógł umieścić wszystko w jednym układzie. Pamięci nie musi być dużo, 128 bajtów ramu i 1 kB romu spokojnie wystarczy, szybki też nie musi być. Ważne natomiast żeby był w miarę tani.
Pewnego dnia Adam Wysocki przemówił ludzkim głosem:
Pewnie na priorytety przerwań, tak żeby sprzętowy uart nie przyblokował tego software'owego :-). I najlepiej linię odbiorczą umieścić na wejściu z przerwaniem (lub taktowaniem timera jak zabraknie pinów z przerwaniami).
sory, ale znalem kiedys typa co pisal hm... lubial pisac wiekszosc kodu w procedurach obslugi przerwan :). no i wlasnie przypomniales mi o tym typie :), i az mna "wzdrygnelo" (z obrzydzenia, zeby bylo jasne :)
nie wiem jaka jest Twoja filozofia pisania programow, ale moja, poza tym, ze jest prosta i sluszna :))), jest taka, ze prodcedura obslugi przerwania ma wykonac sie w jak najkrotszym czasie; wykonac _niezbedne_ rzeczy i jak najpredzej wrocic; /jak najszybciej odblokowac przerwania;
ponoc mozna odblokowac przerwania w funkcji obslugii przerwania jakas instrukcja, ale jest to hm... traktowalbym to jako "wyjscie ostateczne" :)
no, jak chcesz miec rx soft-uarta na przerwaniach, a nie poprzez "wszystko-zerny polling" to nie masz innego wyjscia :).
half duplex - 1 timer na rx i tx; full duplex - 2 timery: 1 na rx i 1 na tx;
Uważam to za rzecz tak oczywistą, że nawet nie pomyślałem, warto o tym pisać :-)
Masz oczywiście rację. Choć ja miałem na myśli wykorzystanie wejścia taktującego do wywołania przerwania w sytuacji, gdy zabraknie nóżek z przerwaniami sprzętowymi ( ustawiasz timer na 0xFFFF i......). Oczywiście ten sam timer potem można wykorzystać do zbierania przychodzących bitów.
Chyba jednak zdecyduję się na transmisję synchroniczną ;) Dotarł do mnie genialny w swej prostocie fakt, że jeśli wykorzystam dwie linie PC -> uC i jedną uC -> PC to nadal zmieszczę się w jednym MAX 232. Generalnie, musi obsługiwać:
dwukierunkową komunikację z komputerem. * dwukierunkową komunikację z urządzeniem szeregowym (async). * komunikację do urządzenia równoległego (11 bit).
Przy czym komunikację z komputerem mogę puścić przez RTS, DTR i CTS (niekoniecznie TX i RX), ale komunikacja z urządzeniem szeregowym musi iść asynchronicznie. I chyba tak właśnie zrobię.
Prędkość nie ma znaczenia, 9600 spokojnie wystarczy.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.