Библиотеки avr: AvrStudio 4. Библиотека для AVR. Модуль для I2C или TWI

avr-libc: AVR Libc

1.6.1

Введение

Последняя версия этого документа всегда доступна на странице http://savannah.nongnu.org/projects/avr-libc/

Пакет libc AVR обеспечивает почти всю стандартную библиотеку C для Atmel AVR 8-bit RISC microcontrollers. Кроме того, библиотека обеспечивает the basic startup code, в котором нуждается большинство приложений.

В этом документе имеется много информации, которая идет вне простого описания собственно библиотеки. Мы надеемся, что этот документ обеспечивает достаточно информации для того, чтобы получить нового разработчика AVR, способного быстро и свободно использовать доступные развиваемые инструментальные средства: binutils, gcc avr-libc и другие.

Если Вы столкнётесь с проблеммой, которая не описана в этом документе, вы можете написать сообщение списку адресатов avr-gcc. Большинство разработчиков AVR binutils и gcc ports в дополнение к разработчикам avr-libc подписались в список, так что обычно Вы будете иметь возможность решить вашу проблему. Вы можете подписаться в список в http://lists.nongnu.org/mailman/listinfo/avr-gcc-list . Перед регистрацией в списке, Вы можете прочитать главу этого документа —

Часто задаваемые вопросы.

Примечание:

Если Вы думаете, что нашли ошибку, или хотите предложить усовершенствование, в этой документации или непосредственно в библиотеке, пожалуйста используйте буксир ошибки на странице https://savannah.nongnu.org/bugs/?group=avr-libc это гарантирует, что проблема не будет забыта.

Общая информация об этой библиотеке

Вообще, при создании этой библиотеки была цель придерживаться нескольких установленных стандартов. Обычно, это относится к библиотеке C как описано в стандартах ANSI X3.159-1989 и ISO/IEC 9899:1990 («ANSI-C»), так же и части их преемника ISO/IEC 9899:1999 («C99»). Некоторые добавления были вдохновлены другими стандартами, подобными IEEE Std 1003.1-1988 («POSIX.1»), в то время как другие расширения - просто AVR - определения (подобные полностью пространственному программному строковому интерфейсу).

Если иначе не отмечено, нет гарантии, что функции этой библиотеки могут быть повторно использованы. В частности любые функции, которые сохраняют локальное состояние, как известно, являются повторно неиспользуемыми, так же как функции, которые управляют регистрами IO, подобные подпрограммам доступа к EEPROM. Если эти функции используются и в стандартных пределах и в пределах контекста прерывания, неопределенное поведение кончится.

Поддерживаемые Устройства

Следующее - список устройства AVR, поддерживаемые библиотекой в настоящее время. Обратите внимание, что фактическая поддержка некоторых более новых устройств зависит от способности компилятора/ассемблера поддерживать эти устройства в библиотеке во время компиляции.

Устройства megaAVR:

  • atmega103
  • atmega128
  • atmega1280
  • atmega1281
  • atmega1284p
  • atmega16
  • atmega161
  • atmega162
  • atmega163
  • atmega164p
  • atmega165
  • atmega165p
  • atmega168
  • atmega168p
  • atmega2560
  • atmega2561
  • atmega32
  • atmega323
  • atmega324p
  • atmega325
  • atmega325p
  • atmega3250
  • atmega3250p
  • atmega328p
  • atmega48
  • atmega48p
  • atmega64
  • atmega640
  • atmega644
  • atmega644p
  • atmega645
  • atmega6450
  • atmega8
  • atmega88
  • atmega88p
  • atmega8515
  • atmega8535

Устройства tinyAVR:

  • attiny11 [1]
  • attiny12 [1]
  • attiny13
  • attiny15 [1]
  • attiny22
  • attiny24
  • attiny25
  • attiny26
  • attiny261
  • attiny28 [1]
  • attiny2313
  • attiny43u
  • attiny44
  • attiny45
  • attiny461
  • attiny48
  • attiny84
  • attiny85
  • attiny861
  • attiny88

Устройства CAN AVR:

  • at90can32
  • at90can64
  • at90can128

Устройства LCD AVR:

  • atmega169
  • atmega169p
  • atmega329
  • atmega329p
  • atmega3290
  • atmega3290p
  • atmega649
  • atmega6490

Устройства Lighting AVR:

  • at90pwm1
  • at90pwm2
  • at90pwm2b
  • at90pwm216
  • at90pwm3
  • at90pwm3b
  • at90pwm316

Устройства Smart Battery AVR:

  • atmega8hva
  • atmega16hva
  • atmega32hvb
  • atmega406

Устройства USB AVR:

  • at90usb82
  • at90usb162
  • at90usb646
  • at90usb647
  • at90usb1286
  • at90usb1287

Разные Устройства:

  • at94K [2]
  • at76c711 [3]
  • at43usb320
  • at43usb355
  • at86rf401

Устройства Classic AVR:

  • at90s1200 [1]
  • at90s2313
  • at90s2323
  • at90s2333
  • at90s2343
  • at90s4414
  • at90s4433
  • at90s4434
  • at90s8515
  • at90c8534
  • at90s8535

Примечание:

[1] Только ассемблер. Нет никакой прямой поддержки этим устройствам, которые будут запрограммированы на C, они не имеют основанного стека RAM. Однако, могло быть возможно программировать их на C, смотрите FAQ.

Примечание:

[2] at94K устройства - комбинация микроконтроллера AVR и FPGA. [TRoth-2002/11/12: Нет уверенности относительно уровня их поддержки. Приветствовалась бы подробная информация.]

Примечание:

[3] at76c711 — USB к быстрому чипу моста последовательного интерфейса, используя AVR ядро.

avr-libc может свободно использоваться и распространяться, если выполнены следующие условия лицензии.

 

Portions of avr-libc are Copyright (c) 1999-2007
Keith Gudger,
Bjoern Haase,
Steinar Haugen,
Peter Jansen,
Reinhard Jessich,
Magnus Johansson,
Artur Lipowski,
Marek Michalkiewicz,
Colin O'Flynn,
Bob Paddock,
Reiner Patommel,
Michael Rickman,
Theodore A. Roth,
Juergen Schilling,
Philip Soeberg,
Anatoly Sokolov,
Nils Kristian Strom,
Michael Stumpf,
Stefan Swanepoel,
Eric B. Weddington,
Joerg Wunsch,
Dmitry Xmelkov,
The Regents of the University of California.
All rights reserved.

 

 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:

 

 * Redistributions of source code must retain the above copyright
 notice, this list of conditions and the following disclaimer.

 

 * Redistributions in binary form must reproduce the above copyright
 notice, this list of conditions and the following disclaimer in
 the documentation and/or other materials provided with the
 distribution.

 

 * Neither the name of the copyright holders nor the names of
 contributors may be used to endorse or promote products derived
 from this software without specific prior written permission.

 

 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGE.

Automatically generated by Doxygen 1.5.2 on 21 Dec 2007.

HD44780. Библиотека для avr-gcc / AVR / Сообщество EasyElectronics.ru

Первым (и пока единственным) навесным расширением моей отладочной платы стал LCD дисплей Wh2602 (или как-то так) с контроллером HD44780. Такого рода дисплеи пользуются популярностью среди электронщиков-самодельщиков за их простоту и достаточную для большинства задач информативность.



О работе с HD44780 уже писано-переписано столько, что добавлять нечего. На этом же сайте, например, подробнейший мануал по подключению и системе команд этого контроллера. От себя только упомяну две особенности, которые попили мне крови, пока я разбирался. Первая — вход контрастности. От напряжения на этом входе зависит, собственно, контрастность дисплея. И я по наивности думал, что можно притянуть этот вход куда-нибудь наугад или вообще оставить в воздухе — хоть что-то видно будет, а там разберусь. Оказалось — нет! На моём дисплее уже при 2 вольтах и выше буквы становятся настолько неконтрастными, что прочитать ничего не получится, а при нуле экран — сплошные квадраты. Поэтому, чтобы что-то увидеть на экране, надо заранее озаботиться подходящим напряжением. Именно для его регулировки рядом с моим дисплеем висит подстроечный резистор.

Вторая особенность — это инициализация в четырёхбитном режиме. Чтобы контроллер нормально инициализировался в четырёхбитном режиме нужно команду инициализации передать хитро. Выглядит команда так: 001DNFxx, где D — битность (0 — 4 бита, 1 — 8 бит), N — число строк, F — размер символа. Я сначала пытался отдавать эту команду как и все другие:

  • Старшие полбайта
  • Строб
  • Младшие полбайта
  • Строб.

Но дисплей у меня упорно работал через раз, то и дело показывая ерунду, или вообще ничего. Оказалось, что после передачи первой половины байта, где находится бит D, контроллер дисплея реагирует на неё сразу, переключается в четыре бита и ждёт новую команду, а не вторые полбайта старой. Поэтому правильно инициализация делается так:

  • Старшие полбайта
  • Строб
  • Снова старшие полбайта
  • Строб
  • Младшие полбайта
  • Строб

С такой инициализацией дисплей работает без сучка и задоринки.

Библиотека

Вдоволь надёргавшись ножками я сел и написал простенькую библиотеку для работы с HD44780. Оних библиотек существует уже много, но свою писать, это, во-первых, упражнение, а во-вторых, пока написал — во всём разобрался. Писал в пятой AVR Studio, то есть писал под avr-gcc.

Вот краткое описание:

  • Ноги D4-D7 могут находиться на произвольных ногах какого-нибудь одного порта.
  • Ноги R/S, R/W, E могут находиться на произвольных ногах какого-нибудь одного порта. Можно использовать тот же порт, что и для D4-D7.
  • Функция lcdIsBusy(), проверяет занят ли дисплей, или готов к приёму новой команды.
  • Функция lcdInit() — инициализация дисплея.
  • Функции lcdSetCursor() и lcdSetDisplay() для настройки поведения курсора и дисплея соответственно.
  • Функции lcdClear(), lcdGotоXY() и lcdDisplayScroll() для очистки экрана, установки курсора и прокрутки экрана соответственно.
  • Функции lcdPuts(), lcdPutsf() и lcdPutse() для вывода на экран строк из RAM, Flash и EEPROM соответственно.
  • Функции lcdLoadCharacter(), lcdLoadCharacterf() и lcdLoadCharactere() для загрузки в знакогенератор дисплея пользовательского символа из RAM, Flash и EEPROM соответственно.

Хотел ещё чего-то наваять, но отвлёкся, сразу не сделал, а сейчас уже и не помню чего хотел. Так что выкладываю библиотеку как есть, пользуйтесь если понравится. Вся документация внутри самой библиотеки в виде комментариев. Рекомендую внимательно прочесть хотя бы lcd-library.h. Там же, в архиве, небольшой пример работы с пользовательскими символами и строками во Flash.
Архив с библиотекой прикреплён к статье. Ещё, на всякий случай прикрепил даташит на контроллер.

А вот ужасного качества видео, демонстрирующее работу моей платы с LCD дисплеем:

Список библиотек Arduino | AlexGyver Technologies


Вы уже знаете, что комьюнити Ардуино очень большое и ежедневно растёт. За время своего существования оно родило огромное количество библиотек. Я решил составить список самых необычных, интересных и полезных, ссылки ведут на гитхаб или сайт разработчика. Полного набора специализированных библиотек для работы с модулями и шилдами здесь нет! Ищутся в гугле по названию чипа, здесь я оставлял только универсальные. Библиотеки, помеченные как стандартные, скачивать не нужно!

Список составлен для библиотек, подходящих для UNO, NANO, MEGA, то есть тут нет мощных библиотек для DUE и ZERO подобных плат. Источники:

avr-libs


В состав компилятора Arduino IDE входит набор стандартных библиотек под микроконтроллеры AVR (т.н. toolchain – набор инструментов), их можно просто подключить и использовать их возможности. Полный список и документация на все либы находится здесь. Тут перечислю самые полезные и интересные (название будет ссылкой на документацию):

  • math.h – библиотека с кучей математических функций. Подключена по умолчанию
  • time.h – библиотека для работы с временем. Счёт, конвертация, временные зоны и прочее
  • avr/eeprom.h – родная библиотека для работы с EEPROM. Подробно разбирали в этом уроке
  • avr/power.h – библиотека управления потреблением МК: делитель системной частоты и включение/выключение периферии
  • avr/sleep.h – библиотека для управления режимом энергопотребления МК
  • avr/wdt.h – управление сторожевым таймером
  • util/delay.h – библиотека с задержками на базе тактов процессора (работает без таймера 0)

Время, таймеры


  • Time – счётчик времени для Ардуино, считает часы-минуты-месяцы и всё такое. Описание
  • RTCTimer – таймер для работы в паре с RTC модулем
  • GyverTimer – моя версия таймера с миллис, рекомендую! Есть мс и мкс таймеры, режим периода и таймаута, улучшенный алгоритм счёта периодов.
  • Chrono – ещё библиотека “таймера с millis()” для эффективного построения логики своего кода
  • elapsedMillis – ещё один простой таймер с millis()
  • buildTime – библиотека для получения даты и времени компиляции в явном виде
  • TimeLord – библиотека, позволяющая узнать время восхода/заката Солнца и Луны, лунные фазы, звёздное время и проч. на основе географического положения
  • GyverTimer012 – лёгкая библиотека для управления прерываниями на всех трёх таймерах ATmega328. Заменена библиотекой GyverTimers
  • GyverTimers – библиотека для управления прерываниями по всем таймерам на ATmega328 и ATmega2560 с возможностью отдельной настройки каналов. Объективно лучше следующих трёх библиотек.
  • TimerOne – библиотека для удобного ручного контроля за Таймером 1 (прерывания, ШИМ, и.т.д.)
  • MsTimer2 – библиотека для удобного ручного контроля за Таймером 2. Есть версия FlexiTimer2, которая чем-то лучше.
  • TimerThree – библиотека для удобного ручного контроля за Таймером 3

Коммуникация, интерфейсы


  • GyverBus – общение по протоколу GBUS. Двухсторонняя связь сети Ардуинок по одному проводу. Описание
  • Firmata – стандартная библиотека для общения с компьютером по протоколу Firmata. Описание
  • SoftwareSerial – стандартная библиотека для создания TTL Serial на любых двух пинах, позволяет создать дополнительный порт для общения с Bluetooth/GPS/GSM и прочими модулями с Serial коммуникацией.
  • AltSoftSerial – самая лучшая версия софтварного Serial, использует системный таймер
  • SerialCommand – лёгкая библиотека для общения через порт при помощи команд
  • CmdMessenger – мощная библиотека для общения через Serial порт, со своим парсером и кучей приколюх. Описание
  • EasyTransfer – библиотека для общения двух Ардуинок через последовательный порт
  • Streaming – вывод в порт “в стиле C++” при помощи оператора <<
  • OneWire – библиотека для общения по протоколу one wire, например с датчиками температуры DHT18b20. Ардуино может быть “slave” для общения, читать тут
  • SerialControl – набор примеров для управления состояниями пинов при помощи Serial команд. Описание
  • MiniPirate – более мощная версия SerialControl, позволяет командами в порт крутить серво, сканировать i2c и многое другое!
  • MIDI_library – библиотека для работы с музыкальными устройствами по протоколу MIDI (через Serial, подходит любая Ардуина)
  • MIDI – MIDI библиотека от великого PaulStoffregen (через Serial, подходит любая Ардуина)
  • arcore – ещё одна библиотека для MIDI (USB-MIDI, только для Леонардо/Микро)
  • MIDIUSB – ещё одна библиотека для MIDI (USB-MIDI, только для Леонардо/Микро)
  • HIDUINO – набор инструментов для создания USB MIDI устройства
  • HID – очень мощная библиотека для создания HID устройств (мыши, клавиатуры, геймпады и другие USB контроллеры)
  • ArduinoJoystickLibrary – ещё одна библиотека для создания полноценного HID геймпада на Leonardo/Micro (ATmega32U4)
  • CPPM – библиотека для организации связи по протоколу CPPM (например RC приёмник Orange R615X)
  • PPMEncoder – декодирование и генерация PPM сигнала для RC моделей
  • PWMread – статья + библиотека для чтения PWM сигнала с приёмников RC моделей
  • TVout – библиотека для вывода графики на экран телевизора через вход AV. Описание
  • X10 – библиотека для общения по протоколу X10 по линии питания 220V. Описание тут
  • NicoHoodProtocol – универсальный протокол связи по проводу

Некоторое железо


  • GyverStepper – высокопроизводительная библиотека для управления шаговым мотором
  • AccelStepper – более интересная и качественная замена стандартной библиотеке Stepper для контроля шаговых моторчиков. Скачать можно со страницы разработчика, или вот прямая ссылка на архив.
  • AccelMotor – моя библиотека для управления мотором с энкодером (превращает обычный мотор в “шаговый” или сервомотор)
  • ServoSmooth – моё дополнение к стандартной библиотеке Servo, позволяющее управлять сервоприводом с настройкой максимальной скорости движения и разгона/торможения (как в AccelStepper, только для серво). Must have любого любителя серво манипуляторов!
  • CapacitiveSensor – библиотека для создания сенсорных кнопок (из пары компонентов рассыпухи). Описание
  • ADCTouchSensor – ещё одна версия библиотеки для создания сенсорных кнопок. Есть ещё одна, так, на всякий случай
  • TouchWheel – библиотека для создания сенсорных слайдеров и колец
  • Buzz – детектор присутствия на основе всего лишь одного провода! (измеряет ЭМ волны)
  • Bounce – библиотека антидребезга для кнопок и всего такого. Сомнительная полезность, но почитайте описание
  • oneButton – библиотека для расширенной работы с кнопкой. На мой взгляд неудобная
  • GyverButton – моя библиотека для расширенной работы с кнопкой. Очень много возможностей!
  • AdaEncoder – библиотека для работы с энкодерами
  • GyverEncoder – моя библиотека для энкодеров с кучей возможностей, поддерживает разные типы энкодеров
  • RTCLib – лёгкая библиотека, поддерживающая большинство RTC модулей
  • OV7670 – библиотека для работы с камерой на OV7670
  • IRremote – базовая библиотека для работы с ИК пультами и излучателями
  • IRLib – более расширенная версия для работы с ИК устройствами
  • IRLremote – самая чёткая библиотека для ИК пультов, работает через прерывания. 100% отработка пульта
  • keySweeper – почти готовый проект для перехвата нажатий с беспроводных клавиатур
  • USB_Host_Shield – позволяет Ардуине работать с геймпадами (PS, XBOX) и другими USB устройствами
  • Brain – библиотека для работы с NeuroSky ЭЭГ модулями
  • TinyGPS – шустрая библиотека для работы с GPS модулями
  • GyverRGB – моя библиотека для работы с RGB светодиодами и лентами
  • FadeLED – библиотека для плавного (ШИМ) мигания светодиодами с разными периодами
  • CurrentTransformer – измерение силы тока при помощи трансформатора (катушки) на проводе. Читай: токовые клещи
  • LiquidCrystal-I2C – библиотека для LCD дисплеев с I2C контроллером. Разработчик – fdebrabander
  • LiquidCrystal-I2C – библиотека для LCD дисплеев с I2C контроллером. Разработчик – johnrickman. Предыдущая вроде бы лучше
  • LiquidTWI2 – быстрая библиотека для LCD дисплеев на контроллерах MCP23008 или MCP23017
  • LCD_1602_RUS – библиотека русского шрифта для LCD дисплеев
  • LCD_1602_RUS_ALL – новая версия предыдущей библиотеки с поддержкой украинского языка
  • u8glib – библиотека для работы с монохромными LCD и OLED дисплеями
  • ucglib – библиотека для работы с цветными LCD и OLED дисплеями
  • Adafruit_SSD1306 – ещё одна библиотека для OLED дисплеев
  • Adafruit-GFX-Library – дополнение для adafruit библиотек дисплеев, позволяет выводить графику
  • SSD1306Ascii – самодостаточная и очень лёгкая библиотека для вывода текста на OLEDы
  • NeoPixelBus – библиотека для работы с адресной светодиодной лентой, адаптированная под esp8266 (NodeMCU, Wemos и др.). 

Работа с данными, фильтры


  • FFT – быстрое преобразование Фурье (раскладывание звука в спектр)
  • fix_FFT – говорят пофикшенная библиотека FFT
  • FHT – быстрое преобразование Хартли (как Фурье, только ещё быстрее)
  • GyverFilters – несколько очень эффективных фильтров данных (бегущее среднее, медиана, упрощённый одномерный Калман, AB фильтр
  • TinyEKF – быстрый облегчённый вариант фильтра Калмана
  • filtering-library – несколько фильтров данных
  • Gaussian – фильтр Гаусса
  • aJson – работа с данными в формате JSON. Есть ещё Arduino JSON библиотека, и парсер потока JSON данных
  • PID – самая известная библиотека ПИД регулятора. Для неё есть дополнение – автонастройка (автотюн) параметров регулятора
  • GyverPID – моя версия PID регулятора, на мой взгляд более компактная и удобная в использовании
  • GyverRelay – библиотека релейного регулятора с гистерезисом и обратной связью по производной
  • CryptoSuite – несколько примеров шифрования данных известными шифрами
  • AESlib – библиотека для работы с AES шифрованием
  • LinkedList – работа с типом данных “связанный список”, читайте на Хабре
  • FixedPointsArduino – работа с типом данных “с фиксированной точкой” (десятичные дроби, но быстрее вычисляются)

Системные штуки

Работа с памятью


  • EEPROM – стандартная библиотека для работы с EEPROM. Рекомендую использовать более удобную EEPROMex
  • EEPROMex – более удобная библиотека для работы с EEPROM памятью. Описание
  • EEPROMWearLevel – “менеджер” EEPROM памяти, следит за количеством перезаписи ячеек
  • MemoryFree – библиотека для изучения текущей занятости SRAM памяти. Описание
  • EEWrap – библиотека позволяет использовать EEPROM как оперативную память (SRAM), т.е. для хранения переменных
  • Flash – библиотека позволяет удобно хранить/читать любые данные во Flash памяти микроконтроллера (массивы, строки с текстом…)
  • PGMWrap – ещё одна мощная библиотека для записи/чтения данных во Flash память
  • optiboot_flash – модифицированный загрузчик OptiBoot, в который добавлена возможность работать с Flash памятью во время выполнения кода (считай расширение SRAM за счёт Flash!)

Работа с пинами


  • DirectIO – более быстрая альтернатива стандартных функций чтения/записи состояния пина
  • AnalogReadFast – быстрый вариант чтения аналогового пина (21 мкс)
  • CyberLib – крутой сборник быстрых аналогов функциям Ардуино, читайте описание. Примечание: автор этой открытой библиотеки не любит, когда ей пользуются в своих проектах, так что аккуратнее.
  • GyverHacks – сборник быстрых аналогов функций Ардуино, не таких быстрых, как у CyberLib, но более привычный в использовании. Изменение частоты/разрядности ШИМ
  • SoftPWM – делаем софтверный ШИМ на разных пинах
  • PWM – библиотека, позволяющая задавать частоту ШИМ
  • GyverPWM – мощная библиотека для расширенной генерации ШИМ (только для ATmega328)
  • PinChangeInt – делаем прерывания на любом пине. Как так? Есть описание
  • PinChangeInterrupt – ещё одна библиотека (лучше), позволяющая ловить прерывания на любом пине
  • analogComp – работа с аналоговым компаратором микроконтроллера

Глубинные настройки


  • GyverHacks – помимо описанного выше, тут есть некоторые глубинные настройки, измерение опорного напряжения и температуры ядра (для ATmega328)
  • GyverTimer012 – лёгкая библиотека для управления прерываниями на всех трёх таймерах ATmega328
  • directTimers – библиотека для расширенного ручного управления таймерами на ATmega328, раскрывает все возможности и настройки таймеров
  • directADC – библиотека для расширенного ручного управления АЦП и компаратором на ATmega328, раскрывает все возможности и настройки АЦП
  • GyverPower – самая лёгкая и универсальная библиотека для управления сном, периферией и системным клоком
  • Low-Power – мощная библиотека для управления энергосбережением и спящим режимом
  • narcoleptic – ещё одна очень простая в использовании библиотека спящего режима
  • SoftwareReset – доступ к перезагрузке Ардуино “из скетча”
  • WatchDog – библиотека для работы со “сторожевым псом”, перезагружающим МК в случае зависания. Ещё вариант
  • Adafruit-Trinket-USB – библиотека эмуляции USB для ATtiny85 (плата Digispark). Имитирует клавиатуру/мышь
  • TrinketHidCombo_MEGA328 – библиотека эмуляции USB для ATmega328 (платы UNO/Nano/Pro Mini). Имитирует клавиатуру/мышь. Пример есть на форуме. Оригинальный пост на форуме. Скачать с FTP сайта. Скачать с облака Mail. Скачать с Яндекс Диска.
  • DMBS AVR lib – набор лёгких и быстрых базовых функций для работы с МК без ядра (аналог avr libs)
  • LUFA – лёгкий USB фреймворк для AVR

Ядра и загрузчики


  • megaTinyCore – мой вариант ядра для плат с ATmega168/328 на борту (UNO, Nano, Mini), основан на оригинальном ядре Arduino, стандартные функции многократно ускорены и облегчены. Рекомендуется для тяжёлых и требовательных к скорости проектов.
  • optiBoot – крутой загрузчик для Ардуино, более быстрый, лёгкий и функциональный
  • HoodLoader – загрузчик для МК 16u2 с поддержкой HID (читай: превращает оригинальную UNO в аналог Leonardo с поддержкой HID)
  • ArduinoXInput_AVR – ядро для плат на базе ATmega32U4 (Leonardo, Micro), превращающее плату в контроллер с поддержкой XInput (геймпад от Xbox). Для создания игрового контроллера также понадобится библиотека ArduinoXInput. Есть гайд на английском
  • GyverCore – лёгкое и быстрое ядро для ATmega328 (Arduino NANO), которое разработали мы с коллегой. Лёгкое и быстрое, возможность работы без загрузчика и широкий выбор вариантов тактирования и вообще системных настроек.
  • MiniCore – ядро для поддержки микроконтроллеров ATmega328, ATmega168, ATmega88, ATmega48 и ATmega8, основано на optiBoot. Одна из основных фишек – поддержка внутреннего тактового генератора!
  • MicroCore – ядро для поддержки микроконтроллеров ATtiny13, ATtiny13A and ATtiny13V с выбором частоты внутреннего тактового генератора
  • ATTinyCore – ядро для поддержки микроконтроллеров ATtiny 441/841, 44/84, 45/85, 461/861, 48/88, 828, 1634, 87, 167, опять же на базе крутого OptiBoot.
  • megaTinyCore – ядро для поддержки микроконтроллеров ATtiny 3217, 1617, 817, 417, 3216, 1616, 816, 416, 1614, 814, 414, 214, 412, 212, 1607, 807, 1606, 806, 406, 1604, 804, 404, 204, 402, 202. Новые модели шьются по UPDI, по этой теме читайте отличную статью на русском языке.
  • nanoBoot – лёгкий (512 байт) загрузчик для ATmega32xx4 с поддержкой HID

Менеджеры задач и потоков


  • ArduinoThread – библиотека для создания “потоков” – отдельно выполняемых задач по таймеру или как-то ещё
  • EventManager – библиотека для работы с событиями (опять-же таймер-вашего-кода)
  • Arduino-fsm – ещё один менеджер задач, позволяющий писать чёткий понятный код с кучей задач, выполняющихся по таймеру
  • Automaton – ещё один фреймворк для написания скетчей с задачами и таймерами. Есть вики
  • FreeRTOS – операционная система реального времени для Ардуино. Задачи, потоки…
  • Arduino_FreeRTOS – ещё одна версия RTOS
  • GyverRTOS – моя простенькая RTOS с режимом сна (на основе библиотеки Low-Power)
  • DeepSleepScheduler – менеджер задач со встроенным режимом сна

Звук и речь


  • Talkie – библиотека синтеза звука речи для создания говорящих девайсов
  • Mozzi – большая библиотека для генерации различных звуков
  • uSpeech – библиотека распознавания речи
  • TMRpcm – библиотека для воспроизведения звуковых файлов .WAV с карты памяти
  • toneAC – более продвинутая версия стандартной tone() для генерации звуковой частоты. Скачать сами файлы можно тут
  • DFPlayer – библиотека для работы с MP3 модулем DFPlayer mini
  • WTV020SD16P – работа со звуковым модулем WTV020SD16P

Разное


  • menusystem – мощный инструмент для создания меню с кучей примеров
  • LCD_Menu – готовый инструмент для создания меню на LCD Дисплеях
  • LiquidMenu – ещё один фреймворк для создания меню на LCD
  • MENWIZ – ещё один готовый вариант меню для LCD
  • MicroDebug – библиотека для удобной отладки кода
  • hoverboard-hack – немного не в тему, но это инструкция по хакингу платы ховерборда для использования её в своих целях

Важные страницы


4.8 / 5 ( 22 голоса )

avr-libc: Module Index

Домашняя страница библиотеки_c AVR

Синтаксис языка C

Библиотека языка C GNU glibc

Страницы развития библиотеки_с AVR

Главная страница

Инструкция пользователя

Содержание библиотеки_c

Часто задаваемые вопросы

Содержание по алфавиту

Демонстрационные проекты

Здесь представлен список всех модулей:

  • <alloca.h>: Захват пространства в стеке
  • <assert.h>: Диагностика
  • <ctype.h>: Операции с символами
  • <errno.h>: Ошибки системы
  • <inttypes.h>: Преобразования целочисленных типов
  • <math.h>: Математика
  • <setjmp.h>: Нелокальный goto
  • <stdint.h>: Стандартные целочисленные типы
  • <stdio.h>: Стандартные средства ввода/вывода
    • Упрощенное описание средств I/O
  • <stdlib.h>: Общие утилиты
  • <string.h>: Строки
  • <avr/boot.h>: Утилиты Поддержки Загрузчика
  • <avr/eeprom.h>: работа с EEPROM
  • <avr/fuse.h>: Поддержка Fuse
  • <avr/interrupt.h>: Прерывания
  • <avr/io.h>: Подключение устройств ввода/вывода в зависимости от типа МК AVR
  • <avr/lock.h>: Поддержка Lockbit
  • <avr/pgmspace.h>: Утилиты Пространства Программ
  • <avr/power.h>: Управление потреблением микроконтроллера
  • <avr/sfr_defs.h>: Работа с битами
    • Дополнительные примечания к <avr/sfr_defs.h>
  • <avr/sleep.h>: Управление питанием и Спящий Режим
  • <avr/version.h>: avrlibc макрос версий
  • <avr/wdt.h>: Работа со сторожевым таймером
  • <util/atomic.h> Atomically и Non-Atomically выполнение блоков кода
  • <util/crc16.h>: CRC Вычисления
  • <util/delay.h>: Удобные функции циклов задержки
  • <util/delay_basic.h>: Основные функции циклов задержки
  • <util/parity.h>: Генерация бита четности
  • <util/setbaud.h>: Вспомогательный макрос для вычислений скорости в бодах
  • <util/twi.h>: TWI (I2C) определения
  • <compat/deprecated.h>: Осуждаемые элементы
  • <compat/ina90.h>: Совместимость с IAR EWB 3.x

Automatically generated by Doxygen 1.5.2 on 21 Dec 2007.

Библиотека базовых Макроопределений «MACROBASELIB.INC» / AVR / Сообщество EasyElectronics.ru

Библиотека «базовых Макроопределений», расширяющая стандартный набор ассемблерных инструкций микроконтроллеров Atmel AVR (8-bit AVR Instruction Set), и рекомендующая парадигму программирования: с хранением «модели прикладных данных» в ОЗУ и использованием нескольких «временных регистров»…
Назначение
Данная библиотека написана на языке ассемблера, для компилятора AVRASM. Соответственно, она предназначена для разработки программных прошивок (firmware) на языке ассемблер, для микроконтроллеров Atmel AVR (8-bit).

Рекомендую вам использовать данную библиотеку в каждой вашей программе на языке ассемблер (для прошивки для AVR), подключая её в самом начале главного ASM-файла, следующим образом:

.include "macrobaselib.inc"	; Библиотека базовых Макроопределений.
Это сделает мета-язык доступным глобально во всей программе. А также, упростит шаблон нового проекта, поскольку данная библиотека содержит также макросы с кодом базовой инициализации микроконтроллера.

Библиотека составлена из наиболее полезных и компактных кусочков кода, взятых из примеров и статей «Сообщества EasyElectronics.ru»; с других сайтов; из datasheet микроконтроллеров и Atmel Appnotes… собранных и переработанных мною в единый стиль; дописанных до функциональной полноты.

Код библиотеки сейчас размещается в одном файле «macrobaselib.inc» и разделён по функциональным разделам (Инициализация МК, Поддержка Ввода-Вывода, Арифметические операции).

Для улучшения читабельности, код отформатирован в едином стиле (инспирированном «Atmel appnotes» и авторским чувством целесообразности). На каждый макрос имеются комментарии (на диком суржике из русско-английского): по Назначению, Параметрам и Побочным Эффектам (какие регистры задействованы, и как изменяются в процессе).

Идеология
Основные положения:
В коде данной библиотеки, и при работе с ней, регистры R16,R17,R18,R19 рекомендуется использовать как «временные переменные» — поэтому, в вашем прикладном коде, не используйте их для хранения постоянных данных!
Как сказал DI HALT:
При вычислениях, регистры можно предварительно заталкивать в стек… но я дам тебе лучше другой совет: когда пишешь программу, продумывай алгоритм так, чтобы использовать регистры как сплошной TEMP, данные которого актуальны только здесь и сейчас. И что с ними будет в следующей процедуре — уже не важно. А все перманентные данные — следует сохранять в оперативке (SRAM).
В основу данной библиотеки положены идеи и опыт DI HALTа к методу использования Макроассемблера, и в частности директивы MACRO: для создания своего мета-языка, расширяющего стандартный набор директив ассемблера AVR, и базовых приёмов, облегчающих программирование:
MACRO — оператор макроподстановки. Вот уж реально чумовая вещь! Позволяет присваивать имена целым кускам кода, мало того, еще параметры задавать можно.
Макросы позволяют насоздавать себе удобных команд на все случаи жизни, по сути создать свой язык. Макроассемблер это мощнейшая штука. По ходу пьесы я буду вводить разные макросы и показывать примеры работы макроопределений…
Ассемблер AVR, хоть и довольно развит, но как и любой ассемблер — очень низкоуровневый, а потому, с ним, довольно сложно «выстрелить себе в ногу». Данная библиотека предоставляет вам некоторые детали для изобретения «пистолета» (в частности: «пулю» и «курок»). Теперь, вам остаётся лишь доизобрести «пистолет», и «вашу ногу»…
Код
Код библиотеки «macrobaselib.inc» опубликован на GitHub (это веб-сервис для хостинга IT-проектов и их совместной разработки), на условиях лицензии MIT (разрешительной opensource, т.е. практически без ограничений к использованию). Ответвляйтесь!
Обратите также внимание на «Шаблон нового проекта» — для старта разработки программной прошивки (firmware) на языке ассемблер, в среде «AVR Studio 4», для микроконтроллеров Atmel AVR. Этот код, также, опубликован на GitHub, на условиях лицензии MIT… Вы можете использоваться этот Шаблон для новых проектов прошивок. Код основан на идеях и рекомендациях DI HALT, создан и проверен «в бою»: при работе над реальным проектом. Это чистый шаблон, без прикладного кода. Код Шаблона также содержит единый стиль форматирования, и комментарии с рекомендациями и описанием секций кода…

Примечание: GitHub был выбран для распространения кода — как наиболее прогрессивный, удобный и функциональный метод взаимодействия opensource-разработчиков. Развивайте и дополняйте библиотеку — затем, сможете легко контрибутить…

Ликбез для неискушённых пользователей: те кто не используют системы управления версиями, могут просто скачать архив с кодом: нажав на кнопку «Download ZIP» на странице репозитория GitHub, по ссылкам выше.

How to Build a Library

Вы продолжаете многократно использовать одни и те же функции, которые создавали много раз? Утомились «вырезать и вставлять» из одного проекта в следующий? Хотели бы Вы уменьшать ваше мучение? Тогда Вы созрели для создания вашей собственной библиотеки! Многократное использование кода — очень похвальная вещь. С некоторыми афронт инвестициями, Вы можете экономить время и энергию в будущих проектах при наличии готовых к использованию библиотек. Эта глава описывает некоторую основную информацию, рассмотрение дизайна, и практическое знание, с которым Вы сможете создавать и использовать ваши собственные библиотеки.

Компилятор компилирует единственный файл языка высокого уровня (например, язык C) в единственный файл объектного модуля. Компоновщик (ld) может работать только с объектными модулями, чтобы связать их вместе. Объектный модуль - наименьший модуль, с которым работает компоновщик.

Как правило, в командной строке компоновщика определяется набор объектных модулей (который был предварительно откомпилирован) и затем список библиотек, включая Стандартную библиотеку C. Компоновщик берет набор объектных модулей, которые Вы определяете в командной строке, и связывает их вместе. Впоследствии вероятно будет набор «неопределенных ссылок». Ссылка — по существу функциональный запрос. Неопределенная ссылка — функциональный запрос, без определенной функции для соответствия запросу.

Компоновщик тогда пройдет библиотеки, чтобы соответствовать неопределенным ссылкам с функциональными определениями, которые найдены в библиотеках. Если это находит функцию, которая соответствует запросу, тогда компоновщик свяжется в объектном модуле, в котором функция расположена. Эта часть важна: компоновщик связывается в ПОЛНОМ ОБЪЕКТНОМ МОДУЛЕ, в котором функция расположена. Помните, компоновщик не знает ничто о функциях, внутренних к объектному модулю, отличному от имен символа (типа имен функции). Наименьший модуль работы компоновщика с — объектные модули.

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

Как компоновщик ведет себя, очень важно при проектировании библиотеки. Идеально, Вы хотите проектировать библиотеку, где только функции, которые вызывают - единственные функции, которые будут связаны в конечное приложение. Это помогает сводить размер кода к минимуму. Чтобы сделать это, путем работы с компоновщиком, должен записать только одну функцию в модуль кода. Это компилирует к одной функции в объектный модуль. Обычно это очень отличный способ сделать вещи чем запись приложения!

Есть всегда исключения из правила. Вообще есть два случая, в которых Вы хотели бы иметь больше чем одну функцию в объектном модуле.

1. Когда Вы имеете очень дополнительные функции, что это не делает много смысла разбить их. Например, malloc() и free(). Если кто — то собирается использовать malloc (), он вероятно будет использовать free() (или по крайней мере должен использовать free()). В этом случае, это делает больше смысла объединить эти две функции в том же самом объектном модуле.

2. Когда Вы хотите иметь программу обработки прерывания (хранение и поиск информации) в вашей библиотеке, в которой Вы хотите связаться. В этом случае проблема состоит в том, что компоновщик ищет нерешенные ссылки и пробует решать их с кодом в библиотеках. Ссылка та же самая как функциональный запрос. Но с хранениями и поисками информации, нет никакого функционального запроса инициализировать хранение и поиск информации. Хранение и поиск информации помещено в таблицу векторов прерывания (IVT), следовательно никакой запрос, никакая ссылка, и никакое соединение в хранения и поиска информации. Чтобы сделать это, Вы должны обманывать в соответствии с компоновщиком в пути. Объедините хранение и поиск информации, с другой функцией в том же самом объектном модуле, но имейте другую функцию быть кое-чем, что требуется для пользователя звонить, чтобы использовать хранение и поиск информации, подобно возможно функции инициализации для подсистемы, или возможно функция, которая допускает хранению и поиску информации во-первых.

Создание библиотеки

Библиотечную программу называют ar (для «архиватора») и найден в GNU Binutils проектом. Эта программа будет сформирована для AVR адресата и будет поэтому называться avr-ar.

Задание библиотечной программы просто: объедините список объектных модулей в единственную библиотеку (архив) и создайте индекс для компоновщика, чтобы использовать. Название, которое Вы создаете для библиотечного имени файла, должно следовать за определенным образцом: lib<name>.a. Часть <name> является уникальной частью имени файла, которое Вы создаете. Это облегчает, касается ли <название> частью того, чем библиотека является. Это <название> часть должна быть предустановлена «lib», и это должно иметь расширение файла .a, для «архива». Смысл для специальной формы имени файла — для того, как библиотека привыкает toolchain, поскольку мы будем видеть позже.

Примечание:

Имя файла с учетом регистра. Используйте префикс «lib» нижнего регистра, и нижний регистр «.a» как расширение файла.

Командная строка довольно проста:

avr-as rcs <library name> <list of object modules>

Команда r выключатель говорит программе вставлять объектные модули в архив с заменой. переключатель c командной строки говорит программе создавать архив. И команда s выключатель строки говорит программе записывать индекс файла, содержащего объектный модуль в архив, или модифицировать существующий. Этот последний выключатель очень важен, поскольку это помогает компоновщику находить то, что это должно сделать его задание.

Примечание:

Переключатели командной строки чувствительны к регистру! Есть выключатели верхнего регистра, которые имеют совершенно иные действия.

MFile и WinAVR распределение содержат Шаблон Формирования файла, который включает необходимые командные строки, чтобы формировать библиотеку. Вы должны будете вручную изменить шаблон, чтобы переключить это, чтобы формировать библиотеку вместо приложения.

См. ГНУ Binutils руководство для подробной информации относительно ar программа.

Использовать библиотеку, используйте выключатель -l на вашей командной строке компоновщика. Строка немедленно после -l является уникальной частью библиотечного имени файла, в котором компоновщик свяжется. Например, если Вы используете:

это расширится до библиотечного имени файла:

который, случается, математическая библиотека, включенная в avr-libc.

Если Вы используете это на вашей командной строке компоновщика:

тогда компоновщик будет искать названную библиотеку:

Это — то, почему обозначение вашей библиотеки настолько важно, когда Вы создаете её!

Компоновщик будет искать библиотеки в порядке, что они появляются на командной строке. Какой бы ни функция найдена сначала, что пары неопределенная ссылка, это будет связано в.

Есть также переключатели командной строки, которые говорят GCC который каталог заглянуть (-L) для библиотек, которые определены, чтобы быть linke в с -l.

См. GNU Binutils руководство для подробной информации относительно компоновщика GNU (ld) программа.

 

Простые устройства — WinAVR и AVR Studio

winavr{nomultithumb}По договоренности с редакцией журнала Радиолюбитель публикую ввсе главы из своей полунаписанной ненапечатанной книги.

Задумывалась эта книга как справочное руководство по avr-libc, и большая ее часть состояла из моих собственных переводов оригинальной документации WinAVR, однако потом я пополнил ее кратким введением в язык Си, описанием основ работы с IDE AVR Studio, затем добавил описание различных вспомогательных утилит и, таким образом, получил винегрет, который все издательства отказались печатать.Ну а переделывать все мне было лень…

{ads2}В итоге все написанное публиковалось в течение 2010 и 2011 годов в журнале, а теперь журнальные статьи в виде PDF-файлов я размещаю здесь для всех желающих.

Приношу свои извинения за несколько «рваный» стиль изложения и отсутствие многих полезных вещей, например, примеров программ и т.п. — увы, это хотя и было задумано, так и не было реализовано.

{ads1}

Вложения:
ФайлОписаниеРазмер файла:
Скачать этот файл (AVR_01-2010.pdf)AVR_01-2010.pdfПредисловие, Основы языка Си (начало)314 Кб
Скачать этот файл (AVR_02-2010.pdf)AVR_02-2010.pdfОсновы Си (продолжение)299 Кб
Скачать этот файл (AVR_03-2010.pdf)AVR_03-2010.pdfОсновы Си (продолжение)314 Кб
Скачать этот файл (AVR_04-2010.pdf)AVR_04-2010.pdfWinAVR + AVR Studio (Установка, описание интерфейса)2021 Кб
Скачать этот файл (AVR_05-2010.pdf)AVR_05-2010.pdfAVR Studio (описание интерфейса — продолжение)1088 Кб
Скачать этот файл (AVR_06-2010.pdf)AVR_06-2010.pdfAVR Studio (работа с проектом)1347 Кб
Скачать этот файл (AVR_07-2010.pdf)AVR_07-2010.pdfAVR Studio (отладка)981 Кб
Скачать этот файл (AVR_08-2010.pdf)AVR_08-2010.pdfОбзор дополнительных средств (утилиты, программаторы, отладчики — кратко)1474 Кб
Скачать этот файл (AVR_09-2010.pdf)AVR_09-2010.pdfAVR-GCC (особенности, файлы, параметры командной строки)328 Кб
Скачать этот файл (AVR_10-2010.pdf)AVR_10-2010.pdfAVR-LIBC (alloca.h, assert.h, ctype.h, errno.h, inttypes.h, math.h, setjmp.h, stdint.h)338 Кб
Скачать этот файл (AVR_11-2010.pdf)AVR_11-2010.pdfAVR-LIBC (stdio.h)385 Кб
Скачать этот файл (AVR_12_2010.pdf)AVR_12_2010.pdfAVR-LIBC (stdlib.h, string.h)328 Кб
Скачать этот файл (AVR_01_2011.pdf)AVR_01_2011.pdfAVR-LIBC (boot.h, eeprom.h, fuse.h, interrupt.h, pgmspace.h)301 Кб
Скачать этот файл (AVR_02_2011.pdf)AVR_02_2011.pdfAVR-LIBC (power.h, sfr_defs.h, sleep.h, version.h, atomic.h, crc16.h, wdt.h, delay.h, delay_basic.h, parity.h, setbaud.h)272 Кб
Скачать этот файл (AVR_03_2011.pdf)AVR_03_2011.pdfРаспределение памяти в AVR-GCC326 Кб
Скачать этот файл (AVR_04_2011.pdf)AVR_04_2011.pdfАссемблерные модули и вставки188 Кб
Скачать этот файл (AVR_05_2011.pdf)AVR_05_2011.pdfАссемблерные модули и вставки (продолжение)247 Кб

Avr — Библиотеки Arduino

Список из 510 библиотек в архитектуре avr.

Библиотека Библиотека Библиотека
AStar32U4 Библиотека Arduino A-Star 32U4
ATmega32U4 Grove Датчик качества воздуха ATmega32U4 Библиотека Arduino для чтения значений с датчика качества воздуха Grove.
ATtinySerialOut Minimal bit-bang send serial 115200 или 38400 бод для 1 МГц или 230400 бод для 8/16 МГц ATtiny clock.Идеально подходит для целей отладки. Размер кода составляет всего 76 байт при 38400 бод или 196 байт при 115200 бод (включая первый вызов)
AceMenu Библиотека, которая упрощает программирование пользовательского меню.
Adafruit TiCoServo Используйте NeoPixels и сервоприводы в одном скетче Arduino (с оговорками)
AdagioPro Управляет Poollights Adagio RGB через RS-485
ADCTouch Создание сенсорных датчиков с одним (аналоговым) контактом без внешнего оборудования
ADCTouchSensor Создание сенсорных датчиков с одним аналоговым выводом без внешнего оборудования
ADS Погода Arduino для взаимодействия с датчиком метеостанции Argent Data Systems.
ADS1110 ADS1110 Driver (16-битный АЦП со встроенным Reference, ПГК и I2C интерфейс)
Библиотека ADS1118 Arduino для TI ADS1118 (16-разрядный аналого-цифровой преобразователь с внутренним опорным элементом и датчиком температуры).
AlignedJoy Позволяет платам Arduino / Genuino считывать различные аналоговые джойстики путем выравнивания значений оси (XY).
AllWize Arduino-совместимая библиотека для взаимодействия с радио модулями RC1701HP-OSP / WIZE
AltSoftSerial Программно эмулированный последовательный порт с использованием аппаратных таймеров для улучшенной совместимости
Алтино Библиотека для автомобиля «Альтино».
Окружающая среда Библиотека для платы датчика окружающей среды от TE
аналогComp Настройка и управление встроенным аналоговым компаратором
AnalogTouch Библиотека AnalogTouch для Arduino
AntaresLoraID Lora.id Библиотека Arduino для Dragino / RFM и автономных модулей LoRaWAN.
ArdTap Библиотека для управления платой Arduino с мобильного за пару минут.Кодирования нет, только настройка.
ArdVoice Библиотека для воспроизведения звука (голосов) в игровой системе Arduboy.
Arduboy Основная библиотека Arduboy.
ArduboyPlaytune Библиотека для воспроизведения нот и тонов, совместимая с игровой системой Arduboy.
Arduboy-TinyFont Tiny 4×4 Font для Arduboy, который содержит небольшую таблицу ASCII от 32 до 127.Спрайт для шрифта занимает 192 байта.
ArduboyTones Библиотека для воспроизведения последовательности тонов, предназначенная для использования с игровой системой Arduboy.
Arduboy2 Альтернативная библиотека для использования с игровой системой Arduboy.
Ардуино-FSM Библиотека для реализации конечного автомата
АрдуиноIHC Библиотека для подключения к вводу / выводу данных контроллера IHC.
ArduinoLang Переведите язык Wiring и CPP на ваш родной язык.
ArduinoLearningKitStarter Библиотека для платы ArduinoLearningKitStarter (ALKS) от RoboticsBrno с определением контактов и инициализацией периферии.
система меню arduino Библиотека для реализации системы меню
Arduino POST HTTP Parser Библиотека, позволяющая легко анализировать пакеты POST.
Умные часы Arduino Библиотека, которая делает кодирование часов для Arduino Micro и т. Д.
ArduinoSTL Порт uClibc ++ в виде библиотеки Arduino.
ArduinoUniqueID Arduino Library для получения заводского серийного номера от микроконтроллеров Atmel AVR, SAM, SAMD, STM32 и ESP.
Arduino Uno WiFi Библиотека разработчика Эта библиотека позволяет пользователям использовать сетевые функции, такие как rest и mqtt.Включает некоторые инструменты для ESP8266.
Arduino-Websocket-Fast Клиентская библиотека Websocket (быстрая отправка данных).
Библиотека ArxRobot Обеспечивает легкий доступ к элементам управления роботами Arxterra.
Осина SIM800 Обширная библиотека серии SIM800 для упрощенного и всестороннего доступа к микросхеме.
Асинхронный аналоговый Библиотека Arduino для асинхронного чтения аналогового вывода
AtTouch Arduino для 7-канальной ИС датчика Atmel AT42QT1070 QTouch через i2c.
Atmel TSS463C VAN bus Библиотека контроллеров Datalink Библиотека для контроллера Atmel TSS463C VAN Datalink с SPI
AutoAnalogAudio Автоматическое аналоговое чтение и аналоговый вывод (потоковая передача) с использованием Arduino DAC (или PWM), ADC, DMA и таймеров
.

Использование библиотек Arduino для обычного кода AVR

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании
.

avr-libc: AVR Libc

Последняя версия этого документа всегда доступна по адресу http://savannah.nongnu.org/projects/avr-libc/

Пакет AVR Libc предоставляет подмножество стандартной библиотеки C для 8-битных RISC-микроконтроллеров Atmel AVR. Кроме того, библиотека предоставляет базовый код запуска, необходимый для большинства приложений.

В этом документе содержится огромное количество информации, выходящей за рамки простого описания интерфейсов и подпрограмм, предоставляемых библиотекой.Мы надеемся, что этот документ предоставляет достаточно информации, чтобы новый разработчик AVR быстро освоил свободно доступные инструменты разработки: binutils, gcc, avr-libc и многие другие.

Если вы застряли на проблеме, которую этот документ не совсем решает, вы можете отправить сообщение в список рассылки avr-gcc. Большинство разработчиков портов AVR binutils и gcc в дополнение к разработчикам avr-libc подписываются на список, так что вы, как правило, сможете решить свою проблему.Вы можете подписаться на список на http://lists.nongnu.org/mailman/listinfo/avr-gcc-list. Перед размещением в списке вы можете попробовать прочитать главу «Часто задаваемые вопросы» в этом документе.

Примечание
Если вы считаете, что нашли ошибку или у вас есть предложения по улучшению, в этой документации или в самой библиотеке, пожалуйста, используйте средство отслеживания ошибок на https://savannah.nongnu.org/bugs /? group = avr-libc, чтобы проблема не была забыта.

В целом, при реализации этой библиотеки ставилась цель максимально придерживаться установленных стандартов.Обычно это относится к библиотеке C, описанной в стандартах ANSI X3.159-1989 и ISO / IEC 9899: 1990 («ANSI-C»), а также к частям их преемников ISO / IEC 9899: 1999 («C99 «). Некоторые дополнения были вдохновлены другими стандартами, такими как IEEE Std 1003.1-1988 («POSIX.1»), в то время как другие расширения являются чисто специфичными для AVR (например, весь строковый интерфейс пространства программы).

Если не указано иное, функции этой библиотеки не гарантируют повторную входимость . В частности, известно, что любые функции, хранящие локальное состояние, не реентерабельны, а также функции, которые манипулируют регистрами ввода-вывода, такими как процедуры доступа к EEPROM.Если эти функции используются как в стандартном контексте, так и в контексте прерывания, результатом будет неопределенное поведение. См. FAQ для более подробного обсуждения.

Ниже приводится список устройств AVR, которые в настоящее время поддерживаются библиотекой. Обратите внимание, что фактическая поддержка некоторых новых устройств зависит от способности компилятора / ассемблера поддерживать эти устройства во время компиляции библиотеки.

megaAVR Устройства:
  • atmega103
  • атмега128
  • атмега128а
  • атмега1280
  • атмега1281
  • атмега1284
  • атмега1284p
  • атмега16
  • атмега161
  • атмега162
  • атмега163
  • атмега164а
  • атмега164p
  • атмега164па
  • атмега165
  • атмега165а
  • атмега165p
  • атмега165па
  • атмега168
  • атмега168а
  • атмега168p
  • атмега168па
  • атмега16а
  • атмега2560
  • атмега 2561
  • атмега32
  • атмега32а
  • атмега323
  • атмега324а
  • атмега324p
  • атмега324па
  • атмега325
  • атмега325а
  • атмега325p
  • атмега325па
  • атмега 3250
  • атмега3250а
  • атмега 3250p
  • атмега3250па
  • атмега328
  • атмега328p
  • атмега48
  • атмега48а
  • атмега48па
  • атмега48пб
  • атмега48p
  • атмега64
  • атмега64a
  • атмега640
  • атмега644
  • атмега644а
  • атмега644p
  • атмега644па
  • атмега645
  • атмега645а
  • атмега645p
  • атмега6450
  • атмега6450а
  • атмега6450p
  • атмега8
  • atmega8a
  • атмега88
  • atmega88a
  • atmega88p
  • атмега88па
  • atmega88pb
  • атмега8515
  • атмега8535
tinyAVR Устройства:
  • attiny4
  • attiny5
  • attiny10
  • attiny11 [1]
  • attiny12 [1]
  • attiny13
  • attiny13a
  • attiny15 [1]
  • attiny20
  • attiny22
  • attiny24
  • attiny24a
  • attiny25
  • attiny26
  • attiny261
  • attiny261a
  • attiny28 [1]
  • attiny2313
  • attiny2313a
  • attiny40
  • attiny4313
  • attiny43u
  • attiny44
  • attiny44a
  • attiny441
  • attiny45
  • attiny461
  • attiny461a
  • attiny48
  • attiny828
  • attiny84
  • attiny84a
  • attiny841
  • attiny85
  • attiny861
  • attiny861a
  • attiny87
  • attiny88
  • attiny1634
Автомобильные AVR Устройства:
  • atmega16m1
  • atmega32c1
  • атмега32м1
  • атмега64c1
  • атмега64м1
  • attiny167
  • ata5505
  • ata5272
  • ata5702m322
  • ata5782
  • ata5790
  • ata5790n
  • ata5831
  • ata5795
  • ata6612c
  • ata6613c
  • ata6614q
  • ata6616c
  • ata6617c
  • ata664251
Устройства CAN AVR:
  • at90can32
  • at90can64
  • at90can128
LCD AVR Устройства:
  • atmega169
  • атмега169а
  • атмега169p
  • атмега169па
  • атмега329
  • atmega329a
  • атмега329p
  • атмега329па
  • атмега 3290
  • атмега3290а
  • атмега3290p
  • атмега3290па
  • атмега649
  • atmega649a
  • атмега 6490
  • атмега6490a
  • атмега6490p
  • атмега649p
Осветительные приборы AVR:
  • at90pwm1
  • at90pwm2
  • at90pwm2b
  • at90pwm216
  • at90pwm3
  • at90pwm3b
  • at90pwm316
  • at90pwm161
  • at90pwm81
Smart Battery AVR Устройства:
  • atmega8hva
  • atmega16hva
  • атмега16хва2
  • atmega16hvb
  • atmega16hvbrevb
  • atmega32hvb
  • atmega32hvbrevb
  • atmega64hve
  • атмега64хве2
  • атмега406
Устройства USB AVR:
  • at90usb82
  • at90usb162
  • at90usb646
  • at90usb647
  • at90usb1286
  • at90usb1287
  • atmega8u2
  • атмега16u2
  • атмега16u4
  • атмега32u2
  • атмега32u4
  • атмега32u6
Устройства XMEGA:
  • atxmega8e5
  • atxmega16a4
  • atxmega16a4u
  • atxmega16c4
  • atxmega16d4
  • atxmega32a4
  • atxmega32a4u
  • atxmega32c3
  • atxmega32c4
  • atxmega32d3
  • atxmega32d4
  • atxmega32e5
  • atxmega64a1
  • atxmega64a1u
  • atxmega64a3
  • atxmega64a3u
  • atxmega64a4u
  • atxmega64b1
  • atxmega64b3
  • atxmega64c3
  • atxmega64d3
  • atxmega64d4
  • atxmega128a1
  • atxmega128a1u
  • atxmega128a3
  • atxmega128a3u
  • atxmega128a4u
  • atxmega128b1
  • atxmega128b3
  • atxmega128c3
  • atxmega128d3
  • atxmega128d4
  • atxmega192a3
  • atxmega192a3u
  • atxmega192c3
  • atxmega192d3
  • atxmega256a3
  • atxmega256a3u
  • atxmega256a3b
  • atxmega256a3bu
  • atxmega256c3
  • atxmega256d3
  • atxmega384c3
  • atxmega384d3
Беспроводные устройства AVR:
  • atmega644rfr2
  • атмега64рфр2
  • атмега128рфа1
  • атмега1284rfr2
  • атмега128рфр2
  • атмега2564rfr2
  • атмега256rfr2
Разные устройства:
  • at94K [2]
  • at76c711 [3]
  • at43usb320
  • at43usb355
  • ат86рф401
  • at90scr100
  • ata6285
  • ata6286
  • ata6289
  • м3000 [4]
Классические устройства AVR:
  • at90s1200 [1]
  • ат 90с 2313
  • ат. 90с2323
  • at 90s 2333
  • ат 90с 2343
  • ат 90с 4414
  • ат 90с 4433
  • ат 90с 4434
  • ат 90с8515
  • at90c8534
  • ат 90с8535
Примечание
[1] Только сборка.Прямая поддержка программирования этих устройств на C отсутствует, поскольку у них нет стека на основе ОЗУ. Тем не менее, их можно запрограммировать на C, см. Раздел FAQ.
Примечание
[2] Устройства at94K представляют собой комбинацию микроконтроллера FPGA и AVR. [TRoth-2002/11/12: Не уверен в уровне поддержки для них. Приветствуется дополнительная информация.]
Примечание
[3] at76c711 — это микросхема моста USB для быстрого последовательного интерфейса, использующая ядро ​​AVR.
Примечание
[4] m3000 — это контроллер двигателя AVR ASIC от Intelligent Motion Systems (IMS) / Schneider Electric.

avr-libc можно свободно использовать и распространять при соблюдении следующих условий лицензии.

 Авторские права на avr-libc принадлежат (c) 1999-2016.
Вернер Бёльманн,
Дин Камера,
Питер Конради,
Брайан Дин,
Кейт Гаджер,
Воутер ван Гулик,
Бьорн Хаазе,
Стейнар Хауген,
Питер Янсен,
Рейнхард Джессич,
Магнус Йоханссон,
Харальд Кипп,
Карлос Ламас,
Клифф Лоусон,
Артур Липовски,
Марек Михалкевич,
Тодд С.Миллер,
Рич Несволд,
Колин О'Флинн,
Боб Пэддок,
Андрей Пащенко,
Райнер Патоммель,
Флорин-Виорел Петров,
Александр Попов,
Майкл Рикман,
Теодор А. Рот,
Юрген Шиллинг,
Филип Зёберг,
Анатолий Соколов,
Нильс Кристиан Стром,
Майкл Штумпф,
Стефан Свейнпол,
Гельмут Валлнер,
Эрик Б. Веддингтон,
Йорг Вунш,
Дмитрий Хмельков,
Корпорация Атмель,
egnite Software GmbH,
Регенты Калифорнийского университета.
Все права защищены.

   Распространение и использование в исходной и двоичной формах, с или без
   модификации, разрешены при соблюдении следующих условий:

   * При повторном распространении исходного кода должно сохраняться указанное выше авторское право.
     обратите внимание, этот список условий и следующий отказ от ответственности.* Распространение в двоичной форме должно воспроизводить указанное выше авторское право.
     обратите внимание, этот список условий и следующий отказ от ответственности в
     документация и / или другие материалы, поставляемые с
     распространение.

   * Ни имена правообладателей, ни имена
     участники могут использоваться для поддержки или продвижения продуктов, полученных
     из этого программного обеспечения без специального предварительного письменного разрешения.

   ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ВЛАДЕЛЬЦАМИ АВТОРСКИХ ПРАВ И СОСТАВЛЯМИ «КАК ЕСТЬ»
   И ЛЮБЫЕ ЯВНЫЕ ИЛИ ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАясь,
   ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ
   ОТКАЗЫВАЕТСЯ ОТ ОТВЕТСТВЕННОСТИ.НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ ВЛАДЕЛЕЦ АВТОРСКИХ ПРАВ ИЛИ СОСТАВИТЕЛИ
   ОТВЕТСТВЕННОСТЬ ЗА ЛЮБЫЕ ПРЯМЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ, ПРИМЕРНЫЕ ИЛИ
   КОСВЕННЫЕ УБЫТКИ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ЗАКУПКИ
   ЗАМЕНА ТОВАРОВ ИЛИ УСЛУГ; ПОТЕРЯ ИСПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ПРИБЫЛИ; ИЛИ БИЗНЕС
   ПРЕРЫВАНИЕ), ОДНАКО ВЫЗВАННЫМ И ПО ЛЮБОЙ ТЕОРИИ ОТВЕТСТВЕННОСТИ, ЛИБО В
   ДОГОВОР, СТРОГОЙ ОТВЕТСТВЕННОСТЬ ИЛИ ИСКУССТВО (ВКЛЮЧАЯ НЕБРЕЖНОСТЬ ИЛИ ИНОЕ)
   ВОЗНИКАЮТ ЛЮБОЙ СПОСОБ ПРИ ИСПОЛЬЗОВАНИИ ДАННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ДАЖЕ ПРИ СООБЩЕНИИ
   ВОЗМОЖНОСТЬ ТАКОГО ПОВРЕЖДЕНИЯ.
.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *