RTV forum PL | NewsGroups PL

Jak zaimplementować drugi programowy port szeregowy w 89C52 w C lub assemblerze?

89C52 i programowy port szeregowy.

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zaimplementować drugi programowy port szeregowy w 89C52 w C lub assemblerze?

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. Smile
Ale skoro mamy wbudowany UART i z niego nie korzystamy to czemu mielibysmy
korzystac z przerwan Smile
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 Smile
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 Smile

--
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

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zaimplementować drugi programowy port szeregowy w 89C52 w C lub assemblerze?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map