void analogWrite(uint8_t APin, uint16_t AValue) { if(APin== 25 ||APin==26){ dacWrite(APin, AValue); return; } ESP32PWM* chan = pwmFactory(APin); if (chan == NULL) { chan = new ESP32PWM(); } if(!chan->attached()){ chan->setup(1000, 8); // 1KHz 8 bit chan->attachPin(APin); // This adds the PWM instance to the factory list //Serial.println("Attaching AnalogWrite : "+String(APin)+" on PWM "+String(chan->getChannel())); } if (AValue == 0) { if (chan->attached()) { chan->detachPin(APin); pinMode(APin, OUTPUT); } digitalWrite(APin, 0); } else if (AValue >= 255) { if (chan->attached()) { chan->detachPin(APin); pinMode(APin, OUTPUT); } digitalWrite(APin, 1); } else chan->write(AValue); // Serial.print( "ledcWrite: " ); Serial.print( CESP32PWMPinMap[ APin ] - 1 ); Serial.print( " " ); Serial.println( AValue ); }
static void write(RomMapperMajutsushi* rm, UInt16 address, UInt8 value) { int bank; address += 0x4000; if (address >= 0x5000 && address < 0x6000) { dacWrite(rm->dac, DAC_CH_MONO, value); return; } /* Page at 4000h is fixed */ if (address < 0x6000 || address >= 0xc000) { return; } bank = (address - 0x4000) >> 13; value %= rm->size / 0x2000; if (rm->romMapper[bank] != value) { UInt8* bankData = rm->romData + ((int)value << 13); rm->romMapper[bank] = value; slotMapPage(rm->slot, rm->sslot, rm->startPage + bank, bankData, 1, 0); } }
static void write(RomMapperKonamiSynth* rm, UInt16 address, UInt8 value) { address += 0x4000; if ((address & 0xc010) == 0x4000) { dacWrite(rm->dac, DAC_CH_MONO, value); } }
static void writeCHi(SviPPI* ppi, UInt8 value) { if (value != ppi->regCHi) { ppi->regCHi = value; audioKeyClick(ppi->keyClick, value & 0x08); dacWrite(ppi->dac, DAC_CH_MONO, (value & 0x02) ? 0 : 255); } }
static void write(RomMapperTurboRPcm* rm, UInt16 ioPort, UInt8 value) { switch (ioPort & 0x01) { case 0: getTimerCounter(rm); rm->time = 0; rm->sample = value; if (rm->status & 0x02) { dacWrite(rm->dac, DAC_CH_MONO, rm->sample); } break; case 1: if ((value & 0x03) == 0x03 && (~rm->status & 0x01)) { dacWrite(rm->dac, DAC_CH_MONO, rm->sample); } rm->status = value & 0x1f; mixerSetEnable(rm->mixer, rm->status & 2); break; } }
void printerIOWrite(PrinterIO* printerIO, UInt8 value) { switch (printerIO->type) { case PRN_HOST: archPrinterWrite(value); break; case PRN_FILE: fwrite(&value, 1, 1, printerIO->file); break; case PRN_SIMPL: dacWrite(printerIO->dac, DAC_CH_MONO, value); break; } }
static UInt8 readA(SviPPI* ppi) { #if 1 // dvik: reverted to 2.8 since wav support is not finished yet return boardCaptureUInt8(16, sviJoyIoReadTrigger(ppi->joyIO)) | (boardGetCassetteInserted() ? 0:0x40); #else UInt8 value; UInt8 casdat = 0; value = boardCaptureUInt8(16, sviJoyIoReadTrigger(ppi->joyIO)); value |= boardGetCassetteInserted() ? 0:0x40; tapeRead(&casdat); value |= (casdat) ? 0:0x80; dacWrite(ppi->dac, DAC_CH_MONO, (casdat & 0x01) ? 0 : 255); return value; #endif }
int main(void) { int i=0, offset; #if FILTRO_PASA_BANDA fir_q31_init(&filtro, history, bandpass_taps, BANDPASS_TAP_NUM); offset=500; #elif FILTRO_PASA_BAJOS fir_q31_init(&filtro, history, lowpass_taps, LOWPASS_TAP_NUM); offset=-100; #endif initHardware(); *DWT_CTRL |= 1; while(1) { if(adcFlag) { adcFlag=0; *DWT_CYCCNT=0; /* para medir tiempos de ejecucion */ #if(USAR_FUNCIONES_ASSEMBLER) y[i] = asm_fir_q31_get(&filtro)+offset; y[i] = __USAT(y[i],10); #else y[i] = fir_q31_get(&filtro)+offset; if(y[i]>0x3FF) y[i] = 0x3FF; else if(y[i]<0) y[i] = 0; #endif dacWrite(y[i]); i++; if(i==500) i=0; } } }