Witam,
mam problem z prawidłową obsługą rejestratora dźwięku ISD2560, podłączonego do mikrokontrolera (Atmel Mega 32). Nagrałem tam kilkanaście komunikatów, da się je po kolei odtworzyć np. w trybie push button. Potrzebna jest mi jednak możliwość odtworzenia konkretnego komunikatu.
Układ ISD2560 działa z A4(M4)=A8=A9=1, A0(M0) sterowane przez mikrokontroler (ozn. Isd_m0), pozostałe Ax=0. Mikrokontroler steruje wejściami P/!R (ozn. Isd_pr), PD (ozn. Isd_pd), !CE (ozn. Isd_ce).
Według dokumentacji, ogólna idea odtworzenia n-tego komunikatu jest następująca:
- "przewijamy" pamięć na początek (impuls dodatni na PD)
- włączamy "przyspieszone odtwarzanie" (M0=1) przy !CE=1
- impulsujemy !CE (1->0->1) n-1 razy
- włączamy normalne odtwarzanie (M0=0)
- impulsujemy !CE jeden raz.
Niestety, efekty są przypadkowe... Odtwarzany (pseudo)losowy komunikat (tzn. nie ten, którego potrzebuję) albo w ogóle nic. Wstawiałem między instrukcje zmieniające stan linii różne opóźnienia i wpływało to (również "losowo") na wyniki. Jak to należy prawidłowo zrobić? Poniżej kod w Bascomie, z pominiętymi opóźnieniami (waitms 1 albo więcej po każdym przypisaniu) (oczywiście kod niedziałający).
Isd_pr = 1 Isd_pd = 0 Isd_pd = 1 Isd_pd = 0
For i = 2 To n Isd_m0 = 1 Isd_ce = 0 Isd_ce = 1 Next i
Isd_m0 = 0 Isd_ce = 0 Isd_ce = 1
Pozdrawiam P.