1
0
mirror of https://github.com/AlexGyver/GyverCore.git synced 2025-12-08 10:02:10 +03:00
This commit is contained in:
Alex
2019-08-02 16:22:08 +03:00
parent d1b197208f
commit 06998b8f7f
2 changed files with 59 additions and 5 deletions

View File

@@ -1,6 +1,25 @@
# 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** нужный вариант загрузчика
* Готово
# Изменения
## Облегчено и ускорено
Время выполнения функций, мкс
@@ -16,7 +35,7 @@ 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
Занимаемое место, Flash, байт
Функция | Arduino | GyverCore | Разница, Flash
----------------|---------|-----------|---------------
@@ -34,6 +53,41 @@ print string | 2100 | 1484 | 616
print float | 2021 | 446 | 1575
parseInt | 1030 | 214 | 816
readString | 2334 | 1594 | 740
parseFloat | 1070 | 246 | 824
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** для личного пользования)

View File

@@ -6,7 +6,7 @@
"websiteURL": "https://alexgyver.ru",
"email": "",
"help": {
"online": "https://alexgyver.ru"
"online": "https://github.com/AlexGyver/GyverCore"
},
"platforms": [
{
@@ -16,8 +16,8 @@
"category": "Contributed",
"url": "https://github.com/AlexGyver/GyverCore/releases/download/GyverCore/GyverCore.zip",
"archiveFileName": "GyverCore.zip",
"checksum": "MD5:0148a8cb4e0c8e33f1f55de69b561609",
"size": "178391",
"checksum": "MD5:758f491c55f177cca874f20eaf1d6e63",
"size": "139848",
"boards": [
{"name": "ATmega328 boards"}
],