示例#1
0
void init_handler() {
    // Настроим и запустим таймер с периодом 20 миллисекунд (50 срабатываний в секунду == 50Гц):
    // prescaler=1:64, adjustment=25000-1:
    // 80000000/64/25000=50 (срабатывает 50 раз в секунду, т.е. каждые 20мс),
    // минус 1, т.к. считаем от нуля.
    // Обработчик прерывания от таймера - функция handle_interrupts 
    // (с заданными настройками будет вызываться каждые 20мс).
    initTimerISR(TIMER3, TIMER_PRESCALER_1_64, 25000-1);
}
示例#2
0
/**
 * Запустить цикл шагов на выполнение - запускаем таймер, обработчик прерываний
 * отрабатывать подготовленную программу.
 */
void start_stepper_cycle() {
    cycle_running = true;
    
    // Запустим таймер с периодом 10 микросекунд (100тыс операций в секунду):
    // 80000000/8/100000=100=0x64
    timer_freq_us = 10;
    initTimerISR(TIMER3, TIMER_PRESCALER_1_8, 0x64);
    
    // для частоты 1 микросекунда (1млн операций в секунду):
    // 80000000/8/1000000=10=0xA
//    timer_freq_us = 1;
//    initTimerISR(TIMER3, TIMER_PRESCALER_1_8, 0xA);
}
示例#3
0
void init_handler() {
    // http://www.robotshop.com/letsmakerobots/arduino-101-timers-and-interrupts
    // 1. CPU frequency 16Mhz for Arduino
    // 2. maximum timer counter value (256 for 8bit, 65536 for 16bit timer)
    // 3. Divide CPU frequency through the choosen prescaler (16000000 / 256 = 62500)
    // 4. Divide result through the desired frequency (62500 / 2Hz = 31250)
    // 5. Verify the result against the maximum timer counter value (31250 < 65536 success) if fail, choose bigger prescaler.
    
    // Настроим и запустим таймер с периодом 20 миллисекунд (50 срабатываний в секунду == 50Гц):
    // prescaler=1:8, adjustment=40000-1:
    // 16000000/8/50=40000 (50Hz - срабатывает 50 раз в секунду, т.е. каждые 20мс),
    // минус 1, т.к. считаем от нуля.
    // Обработчик прерывания от таймера - функция handle_interrupts 
    // (с заданными настройками будет вызываться каждые 20мс).
    initTimerISR(TIMER1, TIMER_PRESCALER_1_8, 40000-1);
}
示例#4
0
/**
 * Запустить цикл шагов на выполнение - запускаем таймер, обработчик прерываний
 * отрабатывать подготовленную программу.
 */
void start_stepper_cycle() {
    cycle_running = true;
    
    // включить моторы
    digitalWrite(motor1_pin_en, LOW);
    digitalWrite(motor2_pin_en, LOW);
    
    // Запустим таймер с периодом 10 микросекунд (100тыс операций в секунду):
    // 80000000/8/100000=100=0x64
    timer_freq_us = 10;
    initTimerISR(TIMER3, TIMER_PRESCALAR_1_8, 0x64);
    
    // для частоты 1 микросекунда (1млн операций в секунду):
    // 80000000/8/1000000=10=0xA
//    timer_freq_us = 1;
//    initTimerISR(TIMER3, TIMER_PRESCALAR_1_8, 0xA);
}
void start_cycle()
{
    cycle_state=true;
    
    initTimerISR(TIMER3,TIMER_PRESCALAR_1_8,0x64);
}