Tätä tarkoitusta varten tarvitsisi tehdä C kielellä ohjelma joka toteuttaa alla kuvatun lohkokaavion pohjalta alla kuvattua signallointiliikennettä. Meikäläisellä on muutamia vuosia siitä kun viimeksi olen koodannut, joten tässä tarvitsisi hieman apua. Ensiksi tuon lohkokaavion mukaisen rakenteen tekemisessä C:llä ja sitten tuo signaalinkäsittely toteutettuna sinne ohjelmalogiikkaan. Löytyisikö lukijakunnasta C taitoa sen verran että tämä perusidea onnistuisi toteuttaa. Pystyn varmaan itse hiomaan syntaksin kohdalleen.
Itse logiikka on kohtuullisen helppo:
- PB5 (AUDCLK) ohjelmoidaan menemään ylös/alas tietyllä viiveellä.
- Asetetaan PB6 (DIRection) alas
- Asetetaan PB4 alas (AUDSYNCinverted)
- Läheteään väylään PB0,PB1,PB2,PB3 (AUDATA) Dummybit 0000
- Odotetaan seuraavaa kellopulssia
- Lähetetään väylään komento PB0,PB1,PB2,PB3 (AUDATA) luetaan muistista eli 1010
- Lähetetään väylään PB0,PB1,PB2,PB3 (AUDATA) muistiosoite esim 0xFFFFC000, 4 bittiä kullakin PB5 kellopulssilla
- Vaihdetaan PB6 (DIRection) ylös
- Odotetaan väylästä PB0,PB1,PB2,PB3 (AUDATA) ready flag 0001. Odottaminen kellopulssi kerrallaan kunnes muuttuu.
- Vaihdetaan PB4 (AUDSYNCinverted) ylös
- Luetaan väylästä PB 4 0,PB1,PB2,PB3 (AUDATA) muistiosoite esim 0x01234567 aina neljä bittiä kerrallaan.
Ohjelman lohkokaavio:
Signallointiliikenne:
AUD väylään liittyminen on hyvin kuvattuna muutamassa dokumentissa. Rautatason liityntä voidaan tehdä esim. PIC:llä tai sitten esim. liittämällä toinen SH sarjan prosessori 74HC245 piirillä. Mulla on sopivasti SH7086 RSK (eli prossukortti kehityskitti) ja siihen C pohjainen kehitysympäristö joten tuo olisi varmaan helpoin ratkaisu.