Jak zaimplementować przerywanie komunikatów w systemie ISD 4003-04MP przy użyciu ASM?
ASEMBLER
From: "michal" <michallo_at_nospam_kki.net.pl>
Subject: ASEMBLER
Date: Sat, 11 May 2002 23:10:30 +0200
witam mam taki program
petla glowna:
wykonaj A
jesli nastapi wywolanie podprogramu B
opusc A i przejdz do B
nieby proste,uP steruje ukladem ISD 4003-04MP przez lacze SPI
i jesli wlasnie cos odtwarza i dam mu odtwarzanie innego komunikatu
to "sam sie kolejkuje" zamiast przerwac wykonywany komuniat i zaczac wlasnie
wywolany
pytanie: jak to zrobic:))Dziekuje michal
From: "Mariusz Ł." <elprojekt_at_nospam_poczta.onet.pl>
Subject: Re: ASEMBLER
Date: Mon, 13 May 2002 09:26:53 +0200
co znaczy: "sam się kolejkuje" ? Mógłbyś to bardziej szczegółowo opisać.
Układ ISD 4000 po w trybie odtwarzania, po wpisaniu instrukcji SETPLAY z
nowym
adresem, zawsze dokończy najpierw aktualny wiersz, następnie wykona skok do
nowego
adresu. Jeżeli chcesz go natychmiast zatrzymać, wpisujesz STOP.
pozdrawiam,
Mariusz.
Użytkownik "michal" <michallo_at_nospam_kki.net.pl> napisał w wiadomości
news:abk1bb$so5$1_at_nospam_aquarius.webcorp.pl...
witam mam taki program
petla glowna:
wykonaj A
jesli nastapi wywolanie podprogramu B
opusc A i przejdz do B
nieby proste,uP steruje ukladem ISD 4003-04MP przez lacze SPI
i jesli wlasnie cos odtwarza i dam mu odtwarzanie innego komunikatu
to "sam sie kolejkuje" zamiast przerwac wykonywany komuniat i zaczac
wlasnie
wywolany
pytanie: jak to zrobic:))Dziekuje michal
From: "michal" <michallo_at_nospam_kki.net.pl>
Subject: Re: ASEMBLER
Date: Mon, 13 May 2002 10:29:04 +0200
o dziekuje za zainteresowanie, :))) . z twojej odpowiedzi wnioskuje ze
spojzales w pdf`a. i tu mam problem. MOja instrukacja stop daje jakby pauze
znaczy przerywa na 0,3 s odtwarzanie, nie wiem co w tej intrukcji stopu
oznaczaja X
w innych sa same zera i jedynki a w stopie i jeszcze jakiejs X, pomyslalem
ze daja wolna reke, a tu kicha dawalem 0 i 1 i nic.mozesz mi jakos
Pomuc.dziekuje i pozdrawiam michał
From: "Mariusz Ł." <elprojekt_at_nospam_poczta.onet.pl>
Subject: Re: ASEMBLER
Date: Mon, 13 May 2002 11:12:20 +0200
x - dowlna wartość (0 lub 1), bit bez znaczenia dla instrukcji;
Po wpisaniu STOP układ powinien się zatrzymać (nie myl ze STOPPWRDWN);
Czas zatrzymania układu masz podany w tablicach w dokumentacji (50ms).
Musisz
ten czas odczekać, przed wpisaniem następnej instrukcji SETPLAY (nie myl z
PLAY, bo rzeczywiście będzie tylko pauza).
pozdrawiam,
Mariusz.
Użytkownik "michal" <michallo_at_nospam_kki.net.pl> napisał w wiadomości
news:abntfm$kg3$1_at_nospam_aquarius.webcorp.pl...
o dziekuje za zainteresowanie, :))) . z twojej odpowiedzi wnioskuje ze
spojzales w pdf`a. i tu mam problem. MOja instrukacja stop daje jakby
pauze
znaczy przerywa na 0,3 s odtwarzanie, nie wiem co w tej intrukcji stopu
oznaczaja X
w innych sa same zera i jedynki a w stopie i jeszcze jakiejs X, pomyslalem
ze daja wolna reke, a tu kicha dawalem 0 i 1 i nic.mozesz mi jakos
Pomuc.dziekuje i pozdrawiam michał
From: "michal" <michallo_at_nospam_kki.net.pl>
Subject: Re: ASEMBLER
Date: Mon, 13 May 2002 13:52:14 +0200
Dzieki. Tzn ze mam na koncu komendy stop dodac jeszcze jeszcze jakis delay
na powiedzmy 100ms???Pozdrawiam michal
From: "Mariusz Ł." <elprojekt_at_nospam_poczta.onet.pl>
Subject: Re: ASEMBLER
Date: Mon, 13 May 2002 16:16:38 +0200
Tak.
Do komendy STOP, nie musisz podawać adresu. Generalnie
to czy układ ISD zatrzaśnie w swoim wewnętrznym liczniku wpisany
adres zależy od ustawienia bitu "IAB". Patrz dokumentacja.
Jeżeli chcesz wykonywać skoki podczas odtwarzania posiekanego
na kawałki komunikatu, to wykonujesz następujšce rozkazy:
1. SETPLAY - tutaj adres, od którego zaczynamy, chyba że już właściwy jest
"w środku".
2. PLAY - to koniecznie przed zakończeniem odtwarzania pierwszego wiersza,
inaczej układ się zatrzyma.
Dla instrukcji PLAY adres jest ignorowany. Nie musisz nawet wpisywać bitów
adresowych, tylko 5 bitów kontrolnych.
... odtwarzanie kilku kolejnych wierszy...
3. Kiedy układ odtwarza ostatni wiersz przed wymaganym skokiem wpisujemy
SETPLAY z nowym adresem.
Układ dokończy aktualny wiersz i bez zwłoki rozpocznie nowo zaadresowany.
Koniecznie tak jak
poprzednio należy, przed zakończeniem odtwarzania nowego wiersza wpisać
PLAY, żeby odtwarzał kolejne
wiersze.
Jeżeli chcesz natychmaist przerwać odtwarzanie i wykonać skok pod nowy
adres:
1. Wpisać STOP, adres bez znaczenia.
2. Odczekać na zatrzymanie. W twoim przypadku 50 ms lub więcej. Najprościej
w pętli, lub przerwanie od jakiegoś licznika.
3. wpisać SETPLAY z nowym adresem.
4. wpisać PLAY, adres ignorowany.
5. itd.
Na stronie www.marthel.pl we wsparciu technicznym znajdziesz moje opisy
z przykładowym kodem.
Pozdrawiam,
Mariusz.
Użytkownik "michal" <michallo_at_nospam_kki.net.pl> napisał w wiadomości
news:abo9ck$p3r$1_at_nospam_aquarius.webcorp.pl...
Dzieki. Tzn ze mam na koncu komendy stop dodac jeszcze jeszcze jakis delay
na powiedzmy 100ms???Pozdrawiam michal
From: "michal" <michallo_at_nospam_kki.net.pl>
Subject: Re: ASEMBLER
Date: Tue, 14 May 2002 10:09:30 +0200
Dziekuje
From: "michal" <michallo_at_nospam_kki.net.pl>
Subject: Re: ASEMBLER
Date: Tue, 14 May 2002 15:53:46 +0200
ale nie bardzo mi to dziala. to jest kawalek tego softu jak na jego
przykladzie zrobic przeskok do kolejnego komunikatu, bez konczenia aktualnie
wykonywanego.odtwarzanie dziala dobrze.
KOM0:
lcall POWERUP
lcall adr1 ;rozpoczecie odtwazania od adresu 77
lcall adr0
lcall adr1
lcall adr1
lcall adr0
lcall adr0
lcall adr1
lcall adr0
lcall adr0
lcall adr0
lcall adr0
lcall SETPLAY
lcall czas2s
ret
;_______________Instrukcja POWERUP_________________
POWERUP:
nop
clr SS
nop
clr SCLK
nop
setb MOSI
mov r1,#10
powup:
lcall ZEGAR ;11111111111
djnz r1,powup
clr MOSI
lcall ZEGAR ;0
lcall ZEGAR ;0
setb MOSI
lcall ZEGAR ;1
clr MOSI
lcall ZEGAR ;0
lcall ZEGAR ;0
setb SS
nop
mov r4,#120d ;---Delay ok.60mS---
del75:
mov r5,#250d ;Czas trwania instrukcji uS
djnz r5,$ ;Czas trwania instrukcji 2uS
djnz r4,del75 ;Opoznienie 2uS*250=0.5mS
nop
clr SS
nop
clr SCLK
nop
ret
;_________Instrukcja SETPLAY_____________________
;______Wczytanie 11 bitow adresu poczatkowego odtwarzania____
SETPLAY:
clr MOSI
lcall ZEGAR ;0
lcall ZEGAR ;0
setb MOSI
lcall ZEGAR ;1
lcall ZEGAR ;1
lcall ZEGAR ;1
setb SS
nop
;______________Instrukcja PLAY___________________
clr SS
nop
clr SCLK
nop
setb MOSI
mov r1,#10
play:
lcall ZEGAR ;11111111111
djnz r1,play
clr MOSI
lcall ZEGAR ;0
setb MOSI
lcall ZEGAR ;1
lcall ZEGAR ;1
lcall ZEGAR ;1
lcall ZEGAR ;1
setb SS
nop
;_______________Instrukcja STOP__________________
STOP:
clr SS
nop
clr SCLK
nop
setb MOSI
mov r1,#10
st:
lcall ZEGAR ;11111111111
djnz r1,st
clr MOSI
lcall ZEGAR ;0
setb MOSI
lcall ZEGAR ;1
lcall ZEGAR ;1
lcall ZEGAR ;1
clr MOSI
lcall ZEGAR ;0
setb SS
nop
ret