1
0
mirror of https://github.com/AlexGyver/GyverCore.git synced 2025-07-03 04:22:31 +03:00
2019-08-02 16:27:27 +03:00
add
2019-08-02 14:33:49 +03:00
2019-07-30 16:21:08 +03:00
add
2019-08-02 16:22:08 +03:00
2019-08-02 16:27:27 +03:00

GyverCore for ATmega328p/168p

Быстрое ядро для Arduino IDE. В разработке
Основано на оригинальном ядре Arduino версии 1.8.9, большинство функций заменены на более быстрые и лёгкие аналоги, убрано всё лишнее и не относящееся к микроконтроллеру ATmega328p, убран почти весь Wiring-мусор, код упрощён и причёсан.

Установка

  • Открой the Arduino IDE

  • Зайди в Файл > Настройки

  • Вставь этот адрес в Дополнительные ссылки для менеджера плат:

    https://alexgyver.github.io/package_GyverCore_index.json
    
  • Открой Инструменты > Плата > Менеджер плат...

  • Подожди загрузку списка

  • Листай в самый низ, пока не увидишь GyverCore

  • Жми Установка

  • Закрой окно

  • Выбери плату в Инструменты > Плата > GyverCore > ATmega328p based

  • Выбери в CPU & BOOT нужный вариант загрузчика

  • Готово

Изменения

Облегчено и ускорено

Время выполнения функций, мкс

Функция Arduino GyverCore Быстрее в
pinMode 2.90 us 0.57 us 5.09
digitalWrite 2.90 us 0.57 us 5.09
digitalRead 2.45 us 0.50 us 4.90
analogWrite 4.15 us 1.13 us 3.67
analogRead 112.01 us 5.41 us 20.70
analogReference 0.00 us 0.69 us 0.00
attachInterrupt 1.20 us 1.18 us 1.02
detachInterrupt 0.82 us 0.57 us 1.44

Занимаемое место, Flash, байт

Функция Arduino GyverCore Разница, Flash
pinMode 114 24 90
digitalWrite 200 24 176
digitalRead 190 24 166
analogWrite 406 48 358
analogRead 32 72 -40
analogReference 0 32 -32
attachInterrupt 212 180 32
detachInterrupt 198 150 48
Serial.begin 1028 166 862
print long 1094 326 768
print string 2100 1484 616
print float 2021 446 1575
parseInt 1030 214 816
readString 2334 1594 740
parseFloat 1070 246 824

Примечание: analogRead и analogReference имеют расширенную функциональность и весят чуть больше

Добавлено

  • Подсветка в коде A0, A1.. A7
  • Макрос bitToggle(value, bit), инвертирует состояние бита bit в байте value
  • Функция digitalToggle(pin), инвертирует состояние пина
  • Расширенная генерация ШИМ:
    • setPWM_20kHz(byte pin) - установить частоту ШИМ 20 кГц (8 бит) на пинах 3, 5, 9, 10
    • setPWM_9_10_resolution(boolean resolution) - разрешение ШИМ на пинах 9 и 10 (для режима 20 кГц): PWM_8BIT / PWM_10BIT
    • setPwmFreqnuency(pin, freq) - установить частоту ШИМ (8 бит) на пинах 3, 5, 6, 9, 10, 11: PWM_DEFAULT / PWM_8KHZ / PWM_31KHZ
    • setPWM_default(byte pin) - настроить ШИМ по умолчанию
  • Расширенная работа с АЦП
    • analogStartConvert(byte pin) - начать преобразование с выбранного пина
    • analogGet() - получить преобразованное значение (между analogStartConvert и analogGet можно выполнять действия, в отличие от ожидания в analogRead())
    • analogPrescaler(uint8_t prescl) - установить предделитель для АЦП (2, 4, 8, 16, 32, 64, 128)
    • В функции analogRead(pin) вместо пина можно указать INTERNAL (получить значение внутреннего опорного напряжения) или THERMOMETR (получить приблизительную температуру МК). Примечание: нужно установить предделитель 128
  • Добавлен быстрый и лёгкий UART (аналог классу Serial)
    • uartBegin() - запустить соединение по последовательному порту со скоростью 9600
    • uartBegin(baudrate) - запустить соединение по последовательному порту со скоростью baudrate
    • uartEnd() - выключить сериал
    • uartPeek() - вернуть крайний байт из буфера, не убирая его оттуда
    • uartClear() - очистить буфер
    • uartRead() - вернуть крайний байт из буфера, убрав его оттуда
    • uartWrite() - запись в порт
    • uartPrint() - печать в порт (числа, строки, char array)
    • uartPrintln() - печать в порт с переводом строки
    • uartAvailable() - возвразает true, если в буфере что-то есть
    • uartSetTimeout() - установить таймаут для функций парсинга (по умолчанию 100 мс)
    • uartParseInt() - принять целочисленное число
    • uartReadString() - принять строку
    • uartParseFloat() - принять число float
    • uartParsePacket(dataArray) - принять пакет вида $50 60 70; в массив dataArray (смотри пример)

Дополнительно

  • Добавлен вариант прошивки без загрузчика (во всю доступную Flash память) для прошивки через ISP
  • Добавлен вариант прошивки с отключенными функциями времени (освобождает вектор TIMER0_OVF_vect для личного пользования)
Description
No description provided
Readme 521 MiB
Languages
C 94.9%
Roff 3.8%
C++ 1.1%
Shell 0.1%