Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.03.2013, 18:31   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Обновил библиотеку 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сек.
}
Admin вне форума   Ответить с цитированием
Старый 07.03.2013, 14:00   #2
HiddenPilot
Member
 
Регистрация: 07.03.2013
Сообщений: 75
Вес репутации: 0
HiddenPilot is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от Admin Посмотреть сообщение
Обновил библиотеку nanopins в шапке темы.
добавил функции delay_us() и delay_ms()
Респект за продолжение данной разработки.
Сильно не вдавался в алгоритм реализации данных функций, но они вроде как уже реализованы в стандартной бибилиотеке GCC/avr-libc. Цепляются через <util/delay.h>
А вот функция получения времени в мили(микро)секундах с автоматическим расчетом относительно заданной F_CPU без использования ардуиновской библиотеки было бы удобно. такой функции в avr-libc я не нашел.
HiddenPilot вне форума   Ответить с цитированием
Старый 07.03.2013, 14:05   #3
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Цитата:
Сообщение от HiddenPilot Посмотреть сообщение
Респект за продолжение данной разработки.
Сильно не вдавался в алгоритм реализации данных функций, но они вроде как уже реализованы в стандартной бибилиотеке GCC/avr-libc. Цепляются через <util/delay.h>
Реализованы, но мне не удобно каждый раз вспоминать и прописывать кучу #include
Я хочу еще добавить к nanopins функцию SPI, он тоже есть в библиотеках по умолчанию, но как я уже писал выше мне удобнее обходится одним #include

Цитата:
А вот функция получения времени в мили(микро)секундах с автоматическим расчетом относительно заданной F_CPU без использования ардуиновской библиотеки было бы удобно. такой функции в avr-libc я не нашел.
Это про какую функцию идет речь?
Для подсчета времени придется использовать таймер и это будет не совсем правильно. Если отнять таймер у встроенных функций? то потеряем все стандартные функции связаные с Timer0
Если использовать другой таймер, то для пользователя останется свободным всего один таймер
Admin вне форума   Ответить с цитированием
Старый 07.03.2013, 14:11   #4
HiddenPilot
Member
 
Регистрация: 07.03.2013
Сообщений: 75
Вес репутации: 0
HiddenPilot is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от Admin Посмотреть сообщение
Это про какую функцию идет речь?
if((micros() - startTime) < hold) break; // Still holding; keep buffering
HiddenPilot вне форума   Ответить с цитированием
Старый 07.03.2013, 14:20   #5
HiddenPilot
Member
 
Регистрация: 07.03.2013
Сообщений: 75
Вес репутации: 0
HiddenPilot is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от Admin Посмотреть сообщение
Для подсчета времени придется использовать таймер и это будет не совсем правильно
ну если не жестко привязываться к конкретному таймеру, а дополнительно сделать функцию инициализации для привязки к любому из 3х таймеров.... или смотреть на текущий делитель таймера выставленный на регистрах.... эххх... чет остапа понесло))))
HiddenPilot вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 17 (пользователей: 0 , гостей: 17)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 17:39. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика