Ejemplo n.º 1
0
void signalingWriteOutput(int eventType) {
    if (sigData.ledPort1) {
	if (sig_pattern[eventType][sigData.patPos]) {
	    pwmDigitalHi(sigData.ledPort1);
	} else {
	    pwmDigitalLo(sigData.ledPort1);
	}
    }
    if (sigData.ledPort2) {
	if (sig_pattern[eventType][sigData.patPos + sigData.patLen]) {
	    pwmDigitalHi(sigData.ledPort2);
	} else {
	    pwmDigitalLo(sigData.ledPort2);
	}
    }
    if (sigData.beeperPort) {
	if (sigData.beeperType) {  // speaker
	    *sigData.beeperPort->ccr = sig_pattern[eventType][sigData.patPos + sigData.patLen * 2] * SIG_SPEAKER_PULSE_LEN;
	}
	else {  // buzzer
	    if (sig_pattern[eventType][sigData.patPos + sigData.patLen * 2]) {
		pwmDigitalHi(sigData.beeperPort); }
	    else {
		pwmDigitalLo(sigData.beeperPort); }
	}
    }
    if (sigData.pwmPort) {
	*sigData.pwmPort->ccr = sig_pattern[eventType][sigData.patLen * 3];
    }
}
Ejemplo n.º 2
0
Archivo: pwm.c Proyecto: sedulity11/pdb
void pwmDigitalToggle(pwmPortStruct_t *p) {
    if (pwmDigitalGet(p)) {
	pwmDigitalLo(p);
    } else {
	pwmDigitalHi(p);
    }
}
Ejemplo n.º 3
0
// warning: this is a blocking event, only call it when not flying or from a non-critical process
void signalingBeep(unsigned long hz, unsigned long ms) {
    if (sigData.beeperPort && ms) {
	// using a piezo speaker
	if (sigData.beeperType) {
	    *sigData.beeperPort->ccr = SIG_SPEAKER_PULSE_LEN;
	    delay(ms);
	    *sigData.beeperPort->ccr = 0;
		}
	// piezo buzzer with its own oscillator, or LED
	else {
	    pwmDigitalHi(sigData.beeperPort);
		delay(ms);
	    pwmDigitalLo(sigData.beeperPort);
	    }
	}
}