English Version
French Version
Spanish Version
MIDIbox Hardware Platform, Module IIC SpeakJet
!!! Cette page est en Construction !!!
Rapide aperçu des propriètés de ce module:
- le SpeakJet est accessible via IIC, device ID 0x20, 0x22, 0x24 ou 0x26 (sélectionnable via deux jumpers sur J2)
- En complément, le SpeakJet peut être
contrôlé depuis un port COM. Les deux flux d'information
séries sont traités par le PIC16F88
- Pour le déboggage, les données IIC reçues sont aussi renvoyées vers COM Rx
- le baudrate du SpeakJet est configuré sur 19200 baud au démarrage
- la partie amplification audio n'est pas
implémentée dans le circuit - une solution valable sera
intégré aux schéma
MBHP_IIC_SPEAKJET : algorithme d'accés
-
Avec le MIOS V1.9 et supérieur,
le module MBHP_IIC_SPEAKJET est accéssible via les commandes de
transmission suivantes:
// allowed IDs: 0x20, 0x22, 0x24 or 0x26 // (selectable with J2 of the MBHP_IIC_SPEAKJET module) #define SPEAKJET_SLAVE_ID 0x20
// this variable contains the current slave number unsigned char slave;
///////////////////////////////////////////////////////////////////////////// // This function initializes the interface to MBHP_IIC_SPEAKJET ///////////////////////////////////////////////////////////////////////////// void IIC_SPEAKJET_Init(void) __wparam { MIOS_IIC_Stop(); // init IIC interface
slave = 0xff; // set invalid slave number }
///////////////////////////////////////////////////////////////////////////// // This function starts a serial transfer to SpeakJet // it terminates with 0 if the IIC device is busy or not available ///////////////////////////////////////////////////////////////////////////// unsigned char IIC_SPEAKJET_TransmitStart(unsigned char _slave) __wparam { unsigned char retry_ctr;
// invalidate slave number // (to avoid that TransmitByte will send something if slave not available) slave = 0xff;
// start IIC access MIOS_IIC_Start();
// send address retry_ctr = 0; while( !MIOS_IIC_ByteSend((SPEAKJET_SLAVE_ID & 0xfe) + (_slave << 1)) ) { // slave has sent a NAK - retry 255 times MIOS_IIC_Stop(); if( ++retry_ctr == 255 ) return 0; MIOS_IIC_Start(); }
// store slave number slave = _slave;
return 1; }
///////////////////////////////////////////////////////////////////////////// // This function sends a byte to the SpeakJet // the transfer must be initiated via IIC_SPEAKJET_TransmitStart first // it terminates with 0 if the IIC device is busy or not available ///////////////////////////////////////////////////////////////////////////// unsigned char IIC_SPEAKJET_TransmitByte(unsigned char value) __wparam { unsigned char retry_ctr;
if( slave == 0xff ) return 0;
// send byte retry_ctr = 0; while( !MIOS_IIC_ByteSend(value) ) { // slave has sent a NAK - retry // the address needs to be sent again! if( !IIC_SPEAKJET_TransmitStart(slave) ) return 0; }
// the complete package has been transmitted return 1; }
///////////////////////////////////////////////////////////////////////////// // This function finishes a transfer to the SpeakJet ///////////////////////////////////////////////////////////////////////////// void IIC_SPEAKJET_TransmitStop(void) __wparam { // stop IIC access MIOS_IIC_Stop();
// invalidate slave number // (to avoid that slave will send something before transfer has been started) slave = 0xff; }
Exemple pour simplement renvoyer les Evènements de Note entrants vers le SpeakJet:
///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS after startup to initialize the // application ///////////////////////////////////////////////////////////////////////////// void Init(void) __wparam { // init interface to MBHP_IIC_SPEAKJET IIC_SPEAKJET_Init(); }
///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a complete MIDI event has been received ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyReceivedEvnt( unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam { if( evnt0 == 0x90 ) { IIC_SPEAKJET_TransmitStart(0); IIC_SPEAKJET_TransmitByte(evnt1 | 0x80); IIC_SPEAKJET_TransmitStop(); } }
Téléchargement
-
-
-
Firmware |
Fichier |
taille |
Description |
mbhp_iic_speakjet_v1_0b.zip |
20k |
Cette archive contient le firmware pré-compilé et le code-source pour les PIC16F88 |
Last update: 2015-09-24
Copyright © 1998-2015, Thorsten Klose. All rights reserved.
|