Re: Przerwania w 8051
Masz problem? Zapytaj na forum elektroda.pl
From: this_address_is_invalid_see_signature_at_nospam_adresniewazny.com (Jaroslaw Cichorski Jr.)
Subject: Re: Przerwania w 8051
Date: Wed, 24 May 2000 18:37:07 GMT
Romuald Bialy <romekb_at_nospam_polbox.com> wrote:
Wojtek Sujkowski napisał(a):
[ciap]
Dzieki wszystkim ! Teraz mam pelna jasnosc... SETB TI i po krzyku.
Konkretnie chodzi tu o spowodowanie wyslania paczki danych przez uart
(kolejne dane wysylane w przerwaniu, paczka 256 Bajtow). Ale
najlatwiej jest mi to zainicjowac z petli glownej poprzez SETB TI,
reszte zrobi przerwanie uart'a.
A to nie lepiej po prostu wypelnic bufor nadawczy bez pierwszego bytu
(lub przestawic znacznik na drugi byte do wyslania) i zainicjowac
transmisje z petli glownej poprzez wpis do SBUF pierwszego bytu ?
I w jednym i w drugim przypadku musisz jednak uwazac,zeby nadajnik nie
byl w trakcie nadawania bytu, bo wpis do SBUF lub rozpoczecie obslugi
przerwania w wyniku ktorej wpiszesz cos do SBUF spowoduje, ze wystapi
przeklamanie w wysylanym bycie.
Pamietaj,ze normalnie TI jest ustawiane,gdy SBUF jest juz gotowy do
przyjecia nastepnego bytu. Gdy sam piszesz do SBUF w nieokreslonych
momentach, musisz sprawdzac,czy nie jestes w trakcie nadawania.
HTH
Pozdrawiam
-----
Jaroslaw Cichorski Jr <cichy_at_nospam_amart.JUNK_MAIL_PROTECTION.com.pl>
UWAGA Adres email niewazny!
Prosze usunac JUNK MAIL PROTECTION zeby otrzymac prawidlowy adres.
WWW http://www.amart.com.pl
From: Romuald Bialy <romekb_at_nospam_polbox.com>
Subject: Re: Przerwania w 8051
Date: Fri, 26 May 2000 20:14:01 GMT
"Jaroslaw Cichorski Jr." napisał(a):
A to nie lepiej po prostu wypelnic bufor nadawczy bez pierwszego bytu
(lub przestawic znacznik na drugi byte do wyslania) i zainicjowac
transmisje z petli glownej poprzez wpis do SBUF pierwszego bytu ?
Nie, bo nie ma bufora jako takiego - przerwanie pobiera bajt z
EEPROM'a na I2C i wysyla RS'em. W petli glownej jest zaadresowanie
eeproma do odczytu i uruchomienie transmisji paczki (poprzez SETB TI).
Juz dziala OK.
I w jednym i w drugim przypadku musisz jednak uwazac,zeby nadajnik nie
byl w trakcie nadawania bytu, bo wpis do SBUF lub rozpoczecie obslugi
przerwania w wyniku ktorej wpiszesz cos do SBUF spowoduje, ze wystapi
przeklamanie w wysylanym bycie.
RS485 w tyrbie Komenda-Odpowiedz, tak ze nie ma problemu.
Pamietaj,ze normalnie TI jest ustawiane,gdy SBUF jest juz gotowy do
przyjecia nastepnego bytu. Gdy sam piszesz do SBUF w nieokreslonych
momentach, musisz sprawdzac,czy nie jestes w trakcie nadawania.
HTH
Pozdrawiam
--
Pozdrawiam.... Romuald Bialy
E'mail: romekb_at_nospam_polbox.com
WWW: http://www.polbox.com/r/romekb
From: this_address_is_invalid_see_signature_at_nospam_adresniewazny.com (Jaroslaw Cichorski Jr.)
Subject: Re: Przerwania w 8051
Date: Tue, 30 May 2000 19:07:40 GMT
Romuald Bialy <romekb_at_nospam_polbox.com> wrote:
"Jaroslaw Cichorski Jr." napisał(a):
A to nie lepiej po prostu wypelnic bufor nadawczy bez pierwszego bytu
(lub przestawic znacznik na drugi byte do wyslania) i zainicjowac
transmisje z petli glownej poprzez wpis do SBUF pierwszego bytu ?
Nie, bo nie ma bufora jako takiego - przerwanie pobiera bajt z
EEPROM'a na I2C i wysyla RS'em. W petli glownej jest zaadresowanie
eeproma do odczytu i uruchomienie transmisji paczki (poprzez SETB TI).
Juz dziala OK.
O J..... to znaczy, ze w procedurze obslugi przerwania odczytujesz
EEPROM ? Nie wiem, co masz za aplikacje, ale blokujesz procesor (i
obsluge przerwan o tym samym priorytecie) na strasznie dlugi czas. Nie
boisz sie tego ? Juz nie wspomne o tym, ze musisz uwazac, gdy inne
procedury chca czytac/pisac EEPROM, bo jak wejda sobie w droge to
d.... Nie znam calego programu, ale unikalbym takich rozwiazan.
Moze chociaz przygotowuj sobie ten byte do wyslania w programie
glownym, a w obsludze przerwania tylko pobierz go z jednobytowego
bufora i wysylaj. Bedziesz mial mniejsze odstepy miedzy bytami i
zuzyjesz tylko 1 byte i 1 bit na bufor i flage.
HTH
Pozdrawiam
-----
Jaroslaw Cichorski Jr <cichy_at_nospam_amart.JUNK_MAIL_PROTECTION.com.pl>
UWAGA Adres email niewazny!
Prosze usunac JUNK MAIL PROTECTION zeby otrzymac prawidlowy adres.
WWW http://www.amart.com.pl
From: Romuald Bialy <romekb_at_nospam_polbox.com>
Subject: Re: Przerwania w 8051
Date: Tue, 30 May 2000 23:59:53 GMT
"Jaroslaw Cichorski Jr." napisał(a):
O J..... to znaczy, ze w procedurze obslugi przerwania odczytujesz
EEPROM ?
A no tak.... Ale tylko 1 bajt, bez adresowania, startu ect.
Procedura obslogi przerwania trwa ok. 250us wiec nie tak az duzo. Przy
RS na 9600 bodow to oznacza jakies 60-70% czasu proca zuzyte na
przerwanie.
Nie wiem, co masz za aplikacje, ale blokujesz procesor (i
obsluge przerwan o tym samym priorytecie) na strasznie dlugi czas. Nie
boisz sie tego ?
W tym przypadku zupelnie nie przeszkadza.
Juz nie wspomne o tym, ze musisz uwazac, gdy inne
procedury chca czytac/pisac EEPROM, bo jak wejda sobie w droge to
d.... Nie znam calego programu, ale unikalbym takich rozwiazan.
Od tego sa flagi.
Moze chociaz przygotowuj sobie ten byte do wyslania w programie
glownym, a w obsludze przerwania tylko pobierz go z jednobytowego
bufora i wysylaj. Bedziesz mial mniejsze odstepy miedzy bytami i
zuzyjesz tylko 1 byte i 1 bit na bufor i flage.
HTH
Pozdrawiam
Wiem ze wyglada to strasznie, ale nie jest tak zle, zapis do eeprom'u
co 1 minute z petli glownej (rejestracja parametrow procesu), a odczyt
poprzez RS485 na zadanie komputera nadzorujacego (srednio raz
dziennie), przy czym podczas odczytu paczki blokowana jest mozliwosc
zapisu do eeprom'a w tym czasie.
Ilosc zapisow eeproma jest wystarczajaca (nawet 100.000 spokoooojnie
wystarczy) bo jest duzy (24c256) i ta sama komorka jest zapisywana
srednio co 34 godziny.
Calosc chodzi bez problemow wiec wnioskuje ze powinno byc OK.
--
Pozdrawiam.... Romuald Bialy
E'mail: romekb_at_nospam_polbox.com
WWW: http://www.polbox.com/r/romekb
From: this_address_is_invalid_see_signature_at_nospam_adresniewazny.com (Jaroslaw Cichorski Jr.)
Subject: Re: Przerwania w 8051
Date: Wed, 31 May 2000 16:12:21 GMT
Romuald Bialy <romekb_at_nospam_polbox.com> wrote:
Wiem ze wyglada to strasznie, ale nie jest tak zle, zapis do eeprom'u
co 1 minute z petli glownej (rejestracja parametrow procesu), a odczyt
poprzez RS485 na zadanie komputera nadzorujacego (srednio raz
dziennie), przy czym podczas odczytu paczki blokowana jest mozliwosc
zapisu do eeprom'a w tym czasie.
Ilosc zapisow eeproma jest wystarczajaca (nawet 100.000 spokoooojnie
wystarczy) bo jest duzy (24c256) i ta sama komorka jest zapisywana
srednio co 34 godziny.
Wyglada na prosta aplikacje, wiec RAMu pewnie masz tam od zarabania
wolnego. Pewnie bardziej elegancko, gdybys zrobil jakis bufor RS i
ladowal do niego wartosc do wyslania, a ISP by sobie ja pobieralo, ale
skoro
Calosc chodzi bez problemow wiec wnioskuje ze powinno byc OK.
Wiec chyba nie warto zmieniac.
A tak BTW to po co Ci EEPROM, skoro tych parametrow nie jest chyba
jakos strasznie duzo ? RAMu by nie wystarczylo ?
Pozdrawiam
-----
Jaroslaw Cichorski Jr <cichy_at_nospam_amart.JUNK_MAIL_PROTECTION.com.pl>
UWAGA Adres email niewazny!
Prosze usunac JUNK MAIL PROTECTION zeby otrzymac prawidlowy adres.
WWW http://www.amart.com.pl