Bartosz Waleska
Guest
Fri Mar 26, 2004 6:22 am
Czesc,
Wlasnie napotkalem na problem jak w temacie. Potrzebuje wykonac drugi port
szeregowy (programowo) wlasnie w 89C52(89S52), moze ktos ma gotowca?
Interesowalby mnie kod w assemblerze lub C. Predkosc 9600/19200. Oczywiscie
moze byc inna... to sobie to jakos przerobie...
dzieki, pozdrawiam
bartek.
BLE_Maciek
Guest
Fri Mar 26, 2004 8:57 pm
Thu, 25 Mar 2004 23:22:52 +0100 jednostka biologiczna o nazwie
"Bartosz Waleska" <combosoft@poczta.onet.pl> wyslala do portu 119
jednego z serwerow news nastepujace dane:
Quote:
Interesowalby mnie kod w assemblerze lub C.
Predkosc 9600/19200. Oczywiscie
Nie wyrobi. Zobacz w symulatorze jak szybko przepelnia sie licznik T1
taktujacy wbudowanego UARTa przy predkosci 9600. Co mozsz przez ten
czas zrobic ? Wykonac jedynie kilka instrukcji. Jezeli chcesz
obustronny port szeregowy to bedzie baaardzo ciezko/nie da sie. Chyba
ze na czas kiedy bedziesz cos dzialal na takim porcie absolutnie cala
reszta programu bedzie czekala. O 19200 na softwareowym UART'cie na
'51 nawet nie masz co marzyc.
Piotr Nabielec
Guest
Fri Mar 26, 2004 11:09 pm
Hej,
Quote:
Interesowalby mnie kod w assemblerze lub C.
Predkosc 9600/19200. Oczywiscie
Nie wyrobi. Zobacz w symulatorze jak szybko przepelnia sie licznik T1
taktujacy wbudowanego UARTa przy predkosci 9600.
Tu akurat bym sie spieral - szeregowka jest taktowana licznikiem, ale te
takty wchodza na dzielnik przez 16. Tak wiec kolejne bity sa wysylane przy
predkosci 9600 co 6 * 16 = 96 cykli [dla 11.0592MHz] . W tym czasie to juz
sie da cos zrobic.
Quote:
Co mozsz przez ten czas zrobic ? Wykonac jedynie kilka instrukcji.
W 96 cykli calkiem sporo.
Sprzetowy UART w '51 jest troszku zabezpieczony przed bledami np. w
specyfikacji pisze, ze w ciagu tych 16 impulsow zegarowych odbierany bit
jest testowany przy stanie licznikow 7,8 i 9 i brana jest wartosc ktora
wystapila wiecej razy.
Jesli ograniczyc takie mechanizmy, to mysle spokojnie 9600 sie wyrobi.
Zdanie kolegi podzielam : jesli chcesz to zrobic programowo to raczej
zapomnij o programie wykonywanym w tle - glownie ze wzgledu na to, ze jesli
chcesz przyzwoicie odbierac dane to musisz dosc dokladnie trafic w zbocze
sygnalu startu - trzeba to testowac wielokrotnie czesciej niz wynika to z
samej predkosci transmisji.
Malo widzialem, ale takowego gotowego programu nie - moze dlatego, ze C52
posiada juz jeden wbudowany UART sprzetowy :)
Pozdrawiam
Piotrek
T.M.F.
Guest
Fri Mar 26, 2004 11:31 pm
Quote:
Zdanie kolegi podzielam : jesli chcesz to zrobic programowo to raczej
zapomnij o programie wykonywanym w tle - glownie ze wzgledu na to, ze jesli
chcesz przyzwoicie odbierac dane to musisz dosc dokladnie trafic w zbocze
sygnalu startu - trzeba to testowac wielokrotnie czesciej niz wynika to z
samej predkosci transmisji.
A w tym procu nie da sie wyzwolic przerwania zboczem ?
W AVR Studio jest fajny przyklad jak zrobic programowego UARTA na
ATiny12 - tylko, ze ten procesor ma przerwanie zewnetrzne wyzwalane
poziomem lub narastajacym lub opadajacym zboczem sygnalu.
--
Inteligentny dom -
http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.
Bartosz Waleska
Guest
Fri Mar 26, 2004 11:59 pm
Quote:
Interesowalby mnie kod w assemblerze lub C.
Predkosc 9600/19200. Oczywiscie
Nie wyrobi. Zobacz w symulatorze jak szybko przepelnia sie licznik T1
taktujacy wbudowanego UARTa przy predkosci 9600. Co mozsz przez ten
czas zrobic ? Wykonac jedynie kilka instrukcji. Jezeli chcesz
obustronny port szeregowy to bedzie baaardzo ciezko/nie da sie. Chyba
ze na czas kiedy bedziesz cos dzialal na takim porcie absolutnie cala
reszta programu bedzie czekala. O 19200 na softwareowym UART'cie na
'51 nawet nie masz co marzyc.
Hm... moglo by tak byc.... tzn. moge zawiesic wykonywanie programu i
tylko odebrac dane....
A gdyby nie? to macie jakies propozycje? Generalnie do tej pory
pracowalem na 51 (52), wlasnie od Atmel'a. A moze czas najwyzszy
przejsc na jakas wydajniejsza platforme? Moze avr? jak wyglada
sprawa kompilatorow? I ceny kostek? a ogolnie odczucia?
pozdrawiam
bartek.
Piotr Nabielec
Guest
Sat Mar 27, 2004 1:24 am
Hej,
Quote:
A w tym procu nie da sie wyzwolic przerwania zboczem ?
Oczywiscie da sie.
Ale skoro mamy wbudowany UART i z niego nie korzystamy to czemu mielibysmy
korzystac z przerwan
Zakladam wersje absolutnie minimalistyczna, ze wzgledu na 'dziwnosc'
zagadnienia :)
Quote:
W AVR Studio jest fajny przyklad jak zrobic programowego UARTA na
ATiny12 - tylko, ze ten procesor ma przerwanie zewnetrzne wyzwalane
poziomem lub narastajacym lub opadajacym zboczem sygnalu.
w '51 mozna wyzwalac poziomem lub zboczem. Sygnaly przerwan sa zanegowane.
Pozdrawiam
Piotrek
neuron
Guest
Sat Mar 27, 2004 2:37 am
programowy uart dla 89c52 jest na stronach atmela - ogladalem ale nie
testowalem
pzdr wojtek
--
----------------------------------------------------------------------------
-------
GolemSLR - system licząco rejestrujący.
Nowy wymiar systemów SCADA
www.neuron.com.pl
BLE_Maciek
Guest
Sat Mar 27, 2004 3:41 am
Fri, 26 Mar 2004 16:09:18 +0100 jednostka biologiczna o nazwie "Piotr
Nabielec" <eloy@tlen.pl> wyslala do portu 119
jednego z serwerow news nastepujace dane:
Quote:
Tu akurat bym sie spieral - szeregowka jest taktowana licznikiem, ale te
takty wchodza na dzielnik przez 16. Tak wiec kolejne bity sa wysylane przy
predkosci 9600 co 6 * 16 = 96 cykli [dla 11.0592MHz] . W tym czasie to juz
sie da cos zrobic.
No faktycznie.
Quote:
W 96 cykli calkiem sporo.
Tez sie zgodze, ale C odpada, jedynie ASM.
Quote:
Malo widzialem, ale takowego gotowego programu nie - moze dlatego, ze C52
posiada juz jeden wbudowany UART sprzetowy
No i wogole jezeli potrzeba wiecej niz jeden to lepiej zastosowac uC
ktory ma dwa UARTy, albo dolozyc zewnetrznie Atmelka 89C2051 (przeciez
tylko 5zl kosztuje !).
BLE_Maciek
Guest
Sat Mar 27, 2004 3:45 am
Fri, 26 Mar 2004 18:24:25 +0100 jednostka biologiczna o nazwie "Piotr
Nabielec" <eloy@tlen.pl> wyslala do portu 119
jednego z serwerow news nastepujace dane:
Quote:
W AVR Studio jest fajny przyklad jak zrobic programowego UARTA na
ATiny12 - tylko, ze ten procesor ma przerwanie zewnetrzne wyzwalane
poziomem lub narastajacym lub opadajacym zboczem sygnalu.
w '51 mozna wyzwalac poziomem lub zboczem. Sygnaly przerwan sa zanegowane.
Ano wlasnie i jakby ktos sie juz koniecznie uparl robic programowy
port szeregowy to mozna ktoras z nozek ktorymi mozna wyzwalac
przerwania wykorzystac jako RXD tego softwarowego UARTa. Normalnie
ustawiamy flage zezwolenia na przerwanie z tej nozki, a po zgloszeniu
kasujemy ja i wczytujemy bajt. Pozniej flaga spowrotem na 1 i koniec
przerwania.
BLE_Maciek
Guest
Sat Mar 27, 2004 3:51 am
Fri, 26 Mar 2004 16:59:15 +0100 jednostka biologiczna o nazwie
"Bartosz Waleska" <combosoft@poczta.onet.pl> wyslala do portu 119
jednego z serwerow news nastepujace dane:
Quote:
A gdyby nie? to macie jakies propozycje? Generalnie do tej pory
pracowalem na 51 (52), wlasnie od Atmel'a. A moze czas najwyzszy
przejsc na jakas wydajniejsza platforme? Moze avr? jak wyglada
sprawa kompilatorow? I ceny kostek? a ogolnie odczucia?
Kompilatory sa za darmo (avrgcc, zawiera tez assembler oczywiscie).
Kostki niestety drozsiejsze od 51. No i assembler nie taki sympatyczny
jak w 51, praktycznie jezeli nie ma przeciwwskazan to nalezy pisac w
C.
Ceny kostek zobacz sobie na
www.semiconductors.com.pl
90S1200, pinologicznie zgodny z 89Cx051 kosztuje ok 9 zl, ale to
straaasznie ubogi procek.
ziel
Guest
Sat Mar 27, 2004 4:29 am
On Behalf Of Bartosz Waleska
Quote:
Wlasnie napotkalem na problem jak w temacie. Potrzebuje wykonac drugi port
szeregowy (programowo) wlasnie w 89C52(89S52), moze ktos ma gotow
Soft'ów jest masa. nawet na stronie Atmela.
Pytanie - jak często i jak duże paczki?
Jeśli to procek z softUART decyduje, to nie ma problemu.
W innych wypadkach radzę użyć procka z dwoma hardUART.
pzdr
Artur
--
Archiwum grupy:
http://niusy.onet.pl/pl.misc.elektronika
Jurek Szczesiul
Guest
Sat Mar 27, 2004 5:38 am
Fri, 26 Mar 2004 16:59:15 +0100, na pl.misc.elektronika, Bartosz Waleska
napisał(a):
Quote:
Interesowalby mnie kod w assemblerze lub C.
Predkosc 9600/19200. Oczywiscie
A gdyby nie? to macie jakies propozycje? Generalnie do tej pory
pracowalem na 51 (52), wlasnie od Atmel'a. A moze czas najwyzszy
przejsc na jakas wydajniejsza platforme? Moze avr? jak wyglada
sprawa kompilatorow? I ceny kostek? a ogolnie odczucia?
Weź sobie Atmega 162 - w wersji dip40 zgodny pinowo z typowym '51 i ma dwa
sprzętowe ( dużo lepsze niż dotychczas ) usarty. Kompilator - bezpłatny
avrgcc, odczucia pozytywne
--
Pozdrowienia
Jurek Szczesiul
MK
Guest
Sat Mar 27, 2004 8:37 pm
Quote:
programowy uart dla 89c52 jest na stronach atmela - ogladalem ale nie
testowalem
Używałem, testowałem, działa!
Pozdrowienia,
MK