资源说明:Arduino/Avr compatible 24-hour scheduler
# atmega-scheduler `atmega-scheduler` is an Arduino/Avr compatible 24-hour scheduler with 1 minute resolution. ## Description With this scheduler you can run any function at any time, every day. It uses Timer1 available on most micros. - Configuring the scheduler is done by predefined constants in header file `atmega-scheduler.h`. If you want to use other frequencies, you need to change those values in order to get 1 second resolution. By default it's preconfigured for 16Mhz, like the Arduino: - Set the Timer1 prescaler #define SCHEDULER_PRESCALER 5 - Set a number of ticks on register OCR1A #define SCHEDULER_TICKS 15625U ## Usage - Initializing the scheduler: void scheduler_init(uint8_t hour, uint8_t minutes) void scheduler_set(uint8_t hour, uint8_t minutes) - `scheduler_init` is the initialization function that resets the internal array of tasks and sets initial time. You call this function only once. - `scheduler_set` allows you to set scheduler hours and minutes at any time. - Managing tasks: int16_t task_add(uint8_t hour, uint8_t minutes, void (*f)()) void task_del(int16_t index) void task_set(int16_t index, uint8_t hour, uint8_t minutes) - With `task_add` you add tasks to the scheduler. Set the hour, minutes and function to execute. Return value is the task index for later usage. - With `task_del` you delete a task by using its index. - With `task_set` you set a new time for the task. Tasks can re-schedule using this method if they know their own index. # Sample Code #include#include "atmega-scheduler.h" void led_on() { PORTB = 0xff; } void led_off() { PORTB = 0; } void main() { // set PORTB as output DDRB = 0xff; PORTB = 0; // In this example you will see that PORTB turns ON after 1 minute // and will turn OFF after 2 minutes, repeating it every day. // You can synchronize your device by setting scheduler init time // to 10:00AM (for example) and then hitting your device's reset at 10:00AM. // // By wiring some 7-segment displays and some push buttons, you can set // the time using `scheduler_set` as a normal watch. // initialize scheduler time as 10:30 scheduler_init(10, 30); // turn led on at 10:31 task_add(10, 31, led_on); // turn led off at 10:32 task_add(10, 32, led_off); // enable global interrupts sei(); while(1) { // your code goes here } } ## Running it in Arduino 1. Download the source code by using the Download Button on this page 2. Rename and install the library as: `{arduino_path}/libraries/AtmegaScheduler` 3. Open Arduino and go to "Import Library" option. Choose AtmegaScheduler from menu. ## Atmel Model Support It should work with a long range of devices, for example: - atmega48, 88, 168, 328 - atmega164, 324, 644, 1284 - atmega640, 1280, 1281, 2560, 2561 - atmega325, 645 - ...
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。