CyberLib — различия между версиями

Материал из Умный дом
Перейти к: навигация, поиск
м
(Ссылки)
 
(не показано 11 промежуточных версий этого же участника)
Строка 17: Строка 17:
 
<font color = "ff0000">Dx_Low</font> - установка низкого уровня на пине Х <br>
 
<font color = "ff0000">Dx_Low</font> - установка низкого уровня на пине Х <br>
 
<font color = "ff0000">Ax_Read</font> - чтение аналогового пина Х <br>
 
<font color = "ff0000">Ax_Read</font> - чтение аналогового пина Х <br>
 +
  
 
Пример Blink
 
Пример Blink
Строка 47: Строка 48:
 
delay_us() и delay_ms() <br>
 
delay_us() и delay_ms() <br>
 
Функции delay_us() и delay_ms() можно применять в прерываниях так как они не используют таймер, но следует не забывать что точность этих функций <br> зависит от использования в коде обработчиков прерываний. Если Вы не используете в коде прерывания то и точность будет высокая <br>
 
Функции delay_us() и delay_ms() можно применять в прерываниях так как они не используют таймер, но следует не забывать что точность этих функций <br> зависит от использования в коде обработчиков прерываний. Если Вы не используете в коде прерывания то и точность будет высокая <br>
delay_us(n); //где n - задержка в мкс, максимальная задержка может быть не больше 16000мкс <br>
+
<font color = "ff0000">delay_us(n) </font> где n - задержка в мкс, максимальная задержка может быть не больше 16000 мкс <br>
delay_ms(n); //где n - задержка в мс, максимальная задержка может быть не больше 65000мс это равно 65сек <br>
+
<font color = "ff0000">delay_ms(n) </font> где n - задержка в мс, максимальная задержка может быть не больше 65000 мс это равно 65 сек <br>
  
 
== Таймер ==
 
== Таймер ==
 
Timer1. <br>
 
Timer1. <br>
Настройку прерываний таймера можно настривать от 6мкс. до 4000000мкс.(4сек.) с шагом 1мкс. <br>
+
Настройку прерываний таймера можно настраивать от 6 мкс. до 4000000 мкс.(4 сек.) с шагом 1 мкс. <br>
StartTimer1(obrobotchik, 1000);// запуск таймера, первый параметр это Ваш обработчик прерывания, второй параметр это время, может принимать значения от 6 до 4000000 <br>
+
<font color = "ff0000">StartTimer1(obrobotchik, 1000) </font>  запуск таймера, первый параметр это Ваш обработчик прерывания, второй параметр это время, может принимать значения от 6 до 4000000 <br>
StopTimer1();// Выключить таймер <br>
+
<font color = "ff0000">StopTimer1() </font>  Выключить таймер <br>
ResumeTimer1(); возобновить отсчет после остановки <br>
+
<font color = "ff0000">ResumeTimer1() </font>  возобновить отсчет после остановки <br>
RestartTimer1(); перезапустить отсчет таймера заново <br>
+
<font color = "ff0000">RestartTimer1() </font> перезапустить отсчет таймера заново <br>
  
 
== SPI ==
 
== SPI ==
SPI. Увеличил пропускную способность в 1,85 раза, при работе на одной и той же частоте <br>
+
Увеличена пропускная способность в 1,85 раза по сравнению со стандартным, при работе на одной и той же частоте <br>
SPI теперь можно настроить и запустить одной строкой : <br> StartSPI(0, 2, 1); Где первый параметр это режим mode от 0 до 3
+
<font color = "ff0000">StartSPI(0, 2, 1) </font> SPI теперь можно настроить и запустить одной строкой :  Где первый параметр это режим mode от 0 до 3
 
Второй параметр это делитель тактовой частоты, может принимать значения 2, 4, 8, 16, 32, 64, 128. Если Вы хотите выяснить частоту SPI то должны  
 
Второй параметр это делитель тактовой частоты, может принимать значения 2, 4, 8, 16, 32, 64, 128. Если Вы хотите выяснить частоту SPI то должны  
тактовую частоту контроллера 16000000 разделить на любой делитель из списка. И последний параметр это какой бит пойдет первым. Если 1 то первым пойдет старший бит
+
тактовую частоту контроллера 16000000 разделить на любой делитель из списка. И последний параметр это какой бит пойдет первым. Если 1 то первым пойдет старший бит если 0 то первым пойдет младший бит. <br>  
если 0 то первым пойдет младший бит. <br> Отправить байт данных в шину SPI можно так: SendSPI(12);  <br>Получить байт данных MyData=ReadSPI(); <br> Выключить SPI можно так: StopSPI():
+
<font color = "ff0000">SendSPI(12)</font>  Отправить байт данных в шину SPI   <br>
 +
<font color = "ff0000">MyData=ReadSPI()</font> получить байт данных  <br>  
 +
<font color = "ff0000">StopSPI() </font> выключить SPI
  
 
== EEPROM ==
 
== EEPROM ==
Ограничение! <br>адресует максимум 256 адресов для типа Byte <br>
+
<p> [[File:atten.jpg|thumb|200px |Ограничение! <br> адресует максимум 256 адресов для типа Byte <br>
 
Для Word максимум 128 <br>
 
Для Word максимум 128 <br>
Для Long максимум 64 <br>
+
Для Long максимум 64 <br>|left]]
  
Сохранить значение 4000000 в EEPROM по адресу 0 тип Long
+
<br><br><br><br><br><font color = "ff0000">WriteEEPROM_Long(0, 4000000) </font>Сохранить значение 4000000 в EEPROM по адресу 0 тип Long; <br>  
WriteEEPROM_Long(0, 4000000); <br>  
+
  
 +
<font color = "ff0000">tmp=ReadEEPROM_Long(0)</font> Прочитать из EEPROM с адреса 0 значение типа Long uint32_t ; <br>
  
Прочитать из EEPROM с адреса 0 значение типа Long
+
<font color = "ff0000">WriteEEPROM_Word(0, 4000)</font> Сохранить значение 4000 в EEPROM по адресу 0 тип Word <br>
uint32_t tmp=ReadEEPROM_Long(0); <br>
+
  
Сохранить значение 4000 в EEPROM по адресу 0 тип Word
+
<font color = "ff0000">tmp=ReadEEPROM_Word(0)</font> Прочитать из EEPROM с адреса 0 значение типа Word uint16_t ; <br>
WriteEEPROM_Word(0, 4000); <br>
+
  
Прочитать из EEPROM с адреса 0 значение типа Word
+
<font color = "ff0000">WriteEEPROM_Byte(0, 200)</font> Сохранить значение 400 в EEPROM по адресу 0 тип Byte; <br>
uint16_t tmp=ReadEEPROM_Word(0); <br>
+
  
Сохранить значение 400 в EEPROM по адресу 0 тип Byte
+
<font color = "ff0000">tmp=ReadEEPROM_Byte(0) </font>Прочитать из EEPROM с адреса 0 значение типа Byte uint8_t ; <br> </p>
WriteEEPROM_Byte(0, 200)<br>
+
 
+
Прочитать из EEPROM с адреса 0 значение типа Byte
+
uint8_t tmp=ReadEEPROM_Byte(0); <br>
+
  
 
== Фильтр шума ==
 
== Фильтр шума ==
find_similar(Array, sizeArray, range); <br>
+
<font color = "ff0000">find_similar(Array, sizeArray, range)</font>; <br>
 
Фильтр удаления шума и ложных срабатываний  
 
Фильтр удаления шума и ложных срабатываний  
 
Функция возвращает наиболее часто встречаемое в массиве значение <br>  
 
Функция возвращает наиболее часто встречаемое в массиве значение <br>  
Строка 98: Строка 94:
  
  
== beep ==
+
== Генератор звуковых колебаний ==
beep(uint16_t dur, uint16_t frq); <br>
+
<font color = "ff0000">beep(uint16_t dur, uint16_t frq)</font>; <br>
 
Генерирует звуковые колебания, на любом пине с заданной частотой и длительностью <br>
 
Генерирует звуковые колебания, на любом пине с заданной частотой и длительностью <br>
 
dur - длительность от 50мс до 65535 мс <br>
 
dur - длительность от 50мс до 65535 мс <br>
Строка 106: Строка 102:
 
== Программная перезагрузка ==
 
== Программная перезагрузка ==
 
Soft Reset <br>
 
Soft Reset <br>
reset(); - программный сброс контроллера <br>  
+
<font color = "ff0000">reset()</font>; - программный сброс контроллера <br>  
 
При помощи этой функции можно отправить контроллер в ребут в любом месте выполняемой программы
 
При помощи этой функции можно отправить контроллер в ребут в любом месте выполняемой программы
  
 
== Бесконечный цикл ==
 
== Бесконечный цикл ==
Start - Начало цикла <br>
+
<font color = "ff0000">Start </font>- Начало цикла <br>
End - Конец цикла <br>
+
<font color = "ff0000">End</font> - Конец цикла <br>
  
 
== Работа со сторожевым таймером ==     
 
== Работа со сторожевым таймером ==     
wdt_reset() - обнулить сторожевой таймер <br>
+
<font color = "ff0000">wdt_reset()</font> - обнулить сторожевой таймер <br>
wdt_disable() - выключить сторожевой таймер <br>
+
<font color = "ff0000">wdt_disable()</font> - выключить сторожевой таймер <br>
wdt_enable(timeout) - Инициализация сторожевого таймера <br>
+
<font color = "ff0000">wdt_enable(timeout)</font> - Инициализация сторожевого таймера <br>
  
 
Возможные значения timeout <br>
 
Возможные значения timeout <br>
Строка 130: Строка 126:
 
WDTO_8S <br>
 
WDTO_8S <br>
  
  [[Заглавная_страница]]  [[#top|current page]]
+
= Ссылки=
 +
 
 +
  [[Заглавная_страница]] <br>
 +
  [[#top|В начало страницы]] <br>
 +
[[Category:Arduino]] [[Category:Программирование]]

Текущая версия на 15:32, 9 июля 2015

Вступление

CyberLib

CyberLib это библиотека является альтернативой стандартным функциям Arduino существенно ускоряющая работу процессора. Поддерживает устройства на чипах Atmega328 и частично MEGA2560

Скачать самую свежую версию можно тут CyberLib

Тема форума посвященного библиотеке тут Форум Умный дом

Функции

Управление пинами

Dx_Out - установка пина Х как выход
Dx_IN - установка пина Х как вход
Dx_Hihg- установка высокого уровна на пине Х
Dx_Low - установка низкого уровня на пине Х
Ax_Read - чтение аналогового пина Х


Пример Blink

#include "CyberLib.h"

void setup()
{
  D13_Out; //Настраиваем пин D13 на выход
}

void loop()
{
label:  
 
 D13_High;
 D13_Low;
 
goto label; 
}

SmallUart

UART_Init(115200) инициализация последовательного порта
UART_ReadByte(byte) получить байт данных из последовательного порта
UART_SendByte(byte) отправить байт данных в последовательный порт
UART_SendArray(array, size array) Функция отправляет в UART порт, массив типа байт, максимальный объем которого не должен превышать 65535 байт, минимальный объем массива 1 байт.Можно также отправлять часть массива. array-имя вашего массива, size array-число отправляемых байт массива

Пауза

delay_us() и delay_ms()
Функции delay_us() и delay_ms() можно применять в прерываниях так как они не используют таймер, но следует не забывать что точность этих функций
зависит от использования в коде обработчиков прерываний. Если Вы не используете в коде прерывания то и точность будет высокая
delay_us(n) где n - задержка в мкс, максимальная задержка может быть не больше 16000 мкс
delay_ms(n) где n - задержка в мс, максимальная задержка может быть не больше 65000 мс это равно 65 сек

Таймер

Timer1.
Настройку прерываний таймера можно настраивать от 6 мкс. до 4000000 мкс.(4 сек.) с шагом 1 мкс.
StartTimer1(obrobotchik, 1000) запуск таймера, первый параметр это Ваш обработчик прерывания, второй параметр это время, может принимать значения от 6 до 4000000
StopTimer1() Выключить таймер
ResumeTimer1() возобновить отсчет после остановки
RestartTimer1() перезапустить отсчет таймера заново

SPI

Увеличена пропускная способность в 1,85 раза по сравнению со стандартным, при работе на одной и той же частоте
StartSPI(0, 2, 1) SPI теперь можно настроить и запустить одной строкой : Где первый параметр это режим mode от 0 до 3 Второй параметр это делитель тактовой частоты, может принимать значения 2, 4, 8, 16, 32, 64, 128. Если Вы хотите выяснить частоту SPI то должны тактовую частоту контроллера 16000000 разделить на любой делитель из списка. И последний параметр это какой бит пойдет первым. Если 1 то первым пойдет старший бит если 0 то первым пойдет младший бит.
SendSPI(12) Отправить байт данных в шину SPI
MyData=ReadSPI() получить байт данных
StopSPI() выключить SPI

EEPROM

Ограничение!
адресует максимум 256 адресов для типа Byte
Для Word максимум 128
Для Long максимум 64






WriteEEPROM_Long(0, 4000000) Сохранить значение 4000000 в EEPROM по адресу 0 тип Long;

tmp=ReadEEPROM_Long(0) Прочитать из EEPROM с адреса 0 значение типа Long uint32_t ;

WriteEEPROM_Word(0, 4000) Сохранить значение 4000 в EEPROM по адресу 0 тип Word

tmp=ReadEEPROM_Word(0) Прочитать из EEPROM с адреса 0 значение типа Word uint16_t ;

WriteEEPROM_Byte(0, 200) Сохранить значение 400 в EEPROM по адресу 0 тип Byte;

tmp=ReadEEPROM_Byte(0) Прочитать из EEPROM с адреса 0 значение типа Byte uint8_t ;

Фильтр шума

find_similar(Array, sizeArray, range);
Фильтр удаления шума и ложных срабатываний Функция возвращает наиболее часто встречаемое в массиве значение
Array - Указатель на проверяемый массив, массив может иметь тип uint16_t или uint8_t
sizeArray - длинна массива не более 256 элементов
range - предел погрешности(отклонен� �е) может колебаться от 0 до 127, при значении 0 функция будет искать точные копии значений


Генератор звуковых колебаний

beep(uint16_t dur, uint16_t frq);
Генерирует звуковые колебания, на любом пине с заданной частотой и длительностью
dur - длительность от 50мс до 65535 мс
frq - частота от 10 Гц до 2000 Гц

Программная перезагрузка

Soft Reset
reset(); - программный сброс контроллера
При помощи этой функции можно отправить контроллер в ребут в любом месте выполняемой программы

Бесконечный цикл

Start - Начало цикла
End - Конец цикла

Работа со сторожевым таймером

wdt_reset() - обнулить сторожевой таймер
wdt_disable() - выключить сторожевой таймер
wdt_enable(timeout) - Инициализация сторожевого таймера

Возможные значения timeout
WDTO_15MS
WDTO_30MS
WDTO_60MS
WDTO_120MS
WDTO_250MS
WDTO_500MS
WDTO_1S
WDTO_2S
WDTO_4S
WDTO_8S

Ссылки

Заглавная_страница 
В начало страницы