|
06.03.2013, 18:31 | #1 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821 |
Обновил библиотеку nanopins в шапке темы.
добавил функции delay_us() и delay_ms() Функции delay_us() и delay_ms() можно применять в прерываниях так как они не используют таймер, но следует не забывать что точность этих функций зависит от использования в коде обработчиков прерываний. Если Вы не используете в коде прерывания то и точность будет высокая delay_us(n); //где n - задержка в мкс, максимальная задержка может быть не больше 16000мкс delay_ms(n); //где n - задержка в мс, максимальная задержка может быть не больше 65000мс это равно 65сек Пример использования Код:
#include <nanopins.h> char message[] = " CarDuino "; void setup() { UART_Init(115200); } void loop() { for(uint8_t i=0; i<strlen(message); i++) { UART_SendByte(message[i]); if(i>8) UART_SendByte(DecToChar(i)); } delay_ms(10000); //пауза 10сек. } |
07.03.2013, 14:00 | #2 | |
Member
Регистрация: 07.03.2013
Сообщений: 75
Вес репутации: 0 |
Цитата:
Сильно не вдавался в алгоритм реализации данных функций, но они вроде как уже реализованы в стандартной бибилиотеке GCC/avr-libc. Цепляются через <util/delay.h> А вот функция получения времени в мили(микро)секундах с автоматическим расчетом относительно заданной F_CPU без использования ардуиновской библиотеки было бы удобно. такой функции в avr-libc я не нашел. |
|
07.03.2013, 14:05 | #3 | ||
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821 |
Цитата:
Я хочу еще добавить к nanopins функцию SPI, он тоже есть в библиотеках по умолчанию, но как я уже писал выше мне удобнее обходится одним #include Цитата:
Для подсчета времени придется использовать таймер и это будет не совсем правильно. Если отнять таймер у встроенных функций? то потеряем все стандартные функции связаные с Timer0 Если использовать другой таймер, то для пользователя останется свободным всего один таймер |
||
07.03.2013, 14:11 | #4 |
Member
Регистрация: 07.03.2013
Сообщений: 75
Вес репутации: 0 |
|
07.03.2013, 14:20 | #5 |
Member
Регистрация: 07.03.2013
Сообщений: 75
Вес репутации: 0 |
ну если не жестко привязываться к конкретному таймеру, а дополнительно сделать функцию инициализации для привязки к любому из 3х таймеров.... или смотреть на текущий делитель таймера выставленный на регистрах.... эххх... чет остапа понесло))))
|
Здесь присутствуют: 17 (пользователей: 0 , гостей: 17) | |
|
|