Example #1
0
void main(void) {	
	USBCDC_ResetBehaviour(&cdcBehaviour);
	USB_Init(&usbDefinition, &usbDevice);
	USB_SoftConnect(&usbDevice);
	GPIO_SetDir(LED_PORT, LED_PIN, GPIO_Output);
	GPIO_WriteOutput(LED_PORT, LED_PIN, false);
	counter = 0;
	
	while (1) {
		uint8_t ch;
		if (USBCDC_ReadBytes(&usbDevice, &cdcBehaviour, &ch, 1)) {
			counter++;
			GPIO_WriteOutput(LED_PORT, LED_PIN, counter & 1);

			if ((ch >= 'a') && (ch <= 'z')) ch -= 'a'-'A';
			else if ((ch >= 'A') && (ch <= 'Z')) ch += 'a'-'A';
			if ((ch == 'a') || (ch == 'A')) ch = '4';
			if ((ch == 'i') || (ch == 'I')) ch = '1';
			if ((ch == 'o') || (ch == 'O')) ch = '0';
			if ((ch == 'e') || (ch == 'E')) ch = '3';
			if ((ch == 'l') || (ch == 'L')) ch = '7';
			if (ch == 's') ch = 'z';
			if (ch == 'S') ch = 'Z';
				
			USBCDC_WriteBytes(&usbDevice, &cdcBehaviour, &ch, 1);
		}
	}
}
Example #2
0
void blinker() {
	if (blinks > 0) {
		bool led = GPIO_ReadInput(LED_PORT, LED_PIN);
		GPIO_WriteOutput(LED_PORT, LED_PIN, !led);
		blinks -= led;
	}
}
Example #3
0
void main(void) {
	uint8_t counter = 0;
	GPIO_SetDir(LED_PORT, LED_PIN, GPIO_Output);
	GPIO_SetDir(KEY_PORT, KEY_PIN, GPIO_Input);
	GPIO_WriteOutput(LED_PORT, LED_PIN, false);
	SYSCON_StartSystick(72*200000); // 0.2s
	blinks = 0;

	while (true) {
		if (!debounced(KEY_PORT, KEY_PIN) && blinks == 0)
			blinks = counter = (counter+1)&7;
	}
}
Example #4
0
void systick(void) {	//systick is used for regular, repeating tasks
    counter++;

    // calculate a smooth triangle ramp from counter
    uint32_t brightness = counter / ANIM_SPEED;
    if (brightness >= 2*ANIM_STEPS) counter = 0;	//reset counter
    else if (brightness >= ANIM_STEPS) brightness = 2*ANIM_STEPS-brightness;

    // scale brightness to match pwm
    brightness = (brightness * PWM_SPEED) / ANIM_STEPS;

    // this is the pwm high frequency counter
    uint32_t pwmPhase = counter % PWM_SPEED;

    // set output
    GPIO_WriteOutput(LED_PORT, LED_PIN, brightness > pwmPhase);
}