void setup_timer_int() { // Pause the timer while we're configuring it timer.pause(); // Set up period timer.setPeriod(TIMER_PERIODE); // in microseconds // Set up an interrupt on channel 1 timer.setChannel1Mode(TIMER_OUTPUT_COMPARE); timer.setCompare(TIMER_CH1, 1); // Interrupt 1 count after each update timer.attachCompare1Interrupt(timer_int_handler); // Refresh the timer's count, prescale, and overflow timer.refresh(); // Start the timer counting timer.resume(); }
void Dynamixel::begin(int baud) { //TxDString("[DXL]start begin\r\n"); afio_remap(AFIO_REMAP_USART1);//USART1 -> DXL afio_cfg_debug_ports(AFIO_DEBUG_FULL_SWJ_NO_NJRST); #ifdef BOARD_CM900 //Engineering version case gpio_set_mode(PORT_ENABLE_TXD, PIN_ENABLE_TXD, GPIO_OUTPUT_PP); gpio_set_mode(PORT_ENABLE_RXD, PIN_ENABLE_RXD, GPIO_OUTPUT_PP); gpio_write_bit(PORT_ENABLE_TXD, PIN_ENABLE_TXD, 0 );// TX Disable gpio_write_bit(PORT_ENABLE_RXD, PIN_ENABLE_RXD, 1 );// RX Enable #else gpio_set_mode(PORT_TXRX_DIRECTION, PIN_TXRX_DIRECTION, GPIO_OUTPUT_PP); gpio_write_bit(PORT_TXRX_DIRECTION, PIN_TXRX_DIRECTION, 0 );// RX Enable #endif /* timer_set_mode(TIMER2, TIMER_CH1, TIMER_OUTPUT_COMPARE); timer_pause(TIMER2); uint16 ovf = timer_get_reload(TIMER2); timer_set_count(TIMER2, min(0, ovf)); timer_set_reload(TIMER2, 10000);//set overflow ovf = timer_get_reload(TIMER2); timer_set_compare(TIMER2, TIMER_CH1, min(1000, ovf)); timer_attach_interrupt(TIMER2, TIMER_CH1, TIM2_IRQHandler); timer_generate_update(TIMER2); //timer_resume(TIMER2);*/ /* * Timer Configuation for Dynamixel bus * 2013-04-03 ROBOTIS Changed it as the below codes * Dynamixel bus used timer 2(channel 1) to check timeout for receiving data from the bus. * So, don't use time 2(channel 1) in other parts. * */ // Pause the timer while we're configuring it timer.pause(); // Set up period timer.setPeriod(1); // in microseconds // Set up an interrupt on channel 1 timer.setMode(TIMER_CH1,TIMER_OUTPUT_COMPARE); timer.setCompare(TIMER_CH1, 1); // Interrupt 1 count after each update timer.attachInterrupt(TIMER_CH1,TIM2_IRQHandler); // Refresh the timer's count, prescale, and overflow timer.refresh(); // Start the timer counting //timer.resume(); dxl_initialize(0, baud); }
void FLYMAPLEScheduler::init(void* machtnichts) { delay_us(2000000); // Wait for startup so we have time to connect a new USB console // 1kHz interrupts from systick for normal timers systick_attach_callback(_timer_procs_timer_event); // Set up Maple hardware timer for 1khz failsafe timer // ref: http://leaflabs.com/docs/lang/api/hardwaretimer.html#lang-hardwaretimer _failsafe_timer.pause(); _failsafe_timer.setPeriod(1000); // 1000us = 1kHz _failsafe_timer.setChannelMode(TIMER_CH1, TIMER_OUTPUT_COMPARE);// Set up an interrupt on channel 1 _failsafe_timer.setCompare(TIMER_CH1, 1); // Interrupt 1 count after each update _failsafe_timer.attachInterrupt(TIMER_CH1, _failsafe_timer_event); _failsafe_timer.refresh();// Refresh the timer's count, prescale, and overflow _failsafe_timer.resume(); // Start the timer counting // We run this timer at a higher priority, so that a broken timer handler (ie one that hangs) // will not prevent the failsafe timer interrupt. // Caution: the timer number must agree with the HardwareTimer number nvic_irq_set_priority(NVIC_TIMER2, 0x14); }
void setup() { // Set up the LED to blink pinMode(D13, OUTPUT); // Pause the timer while we're configuring it timer.pause(); // Set up period timer.setPeriod(LED_RATE); // in microseconds // Set up an interrupt on channel 1 timer.setChannel1Mode(TIMER_OUTPUT_COMPARE); timer.setCompare(TIMER_CH1, 1); // Interrupt 1 count after each update timer.attachCompare1Interrupt(handler_led); // Refresh the timer's count, prescale, and overflow timer.refresh(); // Start the timer counting timer.resume(); }
void setup( void ) { hardwareSetup(); // Setup the LED to steady on pinMode(BOARD_LED_PIN, OUTPUT); digitalWrite(BOARD_LED_PIN, HIGH); // Setup the button as input pinMode(BOARD_BUTTON_PIN, INPUT); digitalWrite(BOARD_BUTTON_PIN, HIGH); // Setup the sensor pin as an analog input pinMode(sensor_pin,INPUT_ANALOG); setupKeywords(); registerAction(_DIR_, &DIRaction); registerAction(_TYP_, &TYPaction); setupRadioModule(); timer.pause(); // Set up period timer.setPeriod(1000); // in microseconds // Set up an interrupt on channel 1 timer.setMode(TIMER_CH1,TIMER_OUTPUT_COMPARE); timer.setCompare(TIMER_CH1, 1); // Interrupt 1 count after each update timer.attachInterrupt(TIMER_CH1,ledTask); // Refresh the timer's count, prescale, and overflow timer.refresh(); // Start the timer counting timer.resume(); setupRadioModule(); }