Jak zaimplementować przerywanie komunikatów w systemie ISD 4003-04MP przy użyciu ASM?

ASEMBLER





Poprzedni Następny
Wiadomość
Spis treści
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




Poprzedni Następny
Wiadomość
Spis treści
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






Poprzedni Następny
Wiadomość
Spis treści
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ł



Poprzedni Następny
Wiadomość
Spis treści
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ł





Poprzedni Następny
Wiadomość
Spis treści
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




Poprzedni Następny
Wiadomość
Spis treści
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






Poprzedni Następny
Wiadomość
Spis treści
From: "michal" <michallo_at_nospam_kki.net.pl>
Subject: Re: ASEMBLER
Date: Tue, 14 May 2002 10:09:30 +0200


Dziekuje



Poprzedni Następny
Wiadomość
Spis treści
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