1
0
mirror of https://github.com/AlexGyver/GyverCore.git synced 2025-07-03 04:22:31 +03:00
This commit is contained in:
Alex
2019-08-02 19:47:25 +03:00
parent c52f478bb5
commit a3335ca5ec
5 changed files with 34 additions and 4 deletions

View File

@ -142,6 +142,7 @@ int analogRead(uint8_t pin)
ADMUX &= ~((1 << MUX3) | (1 << MUX2) | (1 << MUX1) | (1 << MUX0)); // обнуляем мультиплексор
ADMUX = ADMUX | pin; // задвигаем номер входа
sei();
if (pin == 8 || pin == 14) delay(2); // Wait for Vref to settle для VCC и термометра
ADCSRA |= (1 << ADSC); // начинаем преобразование
while (ADCSRA & (1 << ADSC)); // ждем окончания
return ADCL | (ADCH << 8); // склеить и вернуть результат

View File

@ -96,8 +96,7 @@ parseFloat | 1070 | 246 | 824
Убраны всякие сервисные файлы и прочий хлам, не относящийся к ATmega328 (wifi, USB). Ядро полностью совместимо с остальными библиотеками, ничего из стандартных функций не вырезано.
## Дополнительно
### Настройки прошивки
- Смотри примеры в папке examples (в корне этого репозитория!)
- Смотри примеры в папке **examples** (в корне этого репозитория!)
- Добавлен вариант прошивки без загрузчика **ATmega 328/168 without bootloader** (во всю доступную Flash память) для прошивки через ISP
- Добавлен вариант прошивки с отключенными функциями времени **with/without millis** (освобождает вектор **TIMER0_OVF_vect** для личного пользования)

View File

@ -0,0 +1,16 @@
// измерение приблизительной температуры ядра
void setup() {
uartBegin(9600);
analogReference(INTERNAL); // подключаем АЦП к опорному
analogPrescaler(128); // установить предделитель 128 (иначе некорректно измеряет)
// в стандартном ядре делитель 129 является стандартным
// в GyverCore по умполчанию 4 (быстрее измеряет)
}
void loop() {
// analogRead(THERMOMETR) вернёт напряжение в мв
// (val - 324.31 ) / 1.22 - примерное уравнение перевода в градусы по цельсию
uartPrintln((float)(analogRead(THERMOMETR) - 324.31) / 1.22);
delay(100);
}

View File

@ -0,0 +1,14 @@
// измерение опорного напряжения
void setup() {
uartBegin(9600);
analogPrescaler(128); // установить предделитель 128 (иначе некорректно измеряет)
}
void loop() {
// 1100 является константной, которую нужно калибровать (+- лапоть)
int vcc = (float)1100 * 1023 / (analogRead(INTERNAL));
uartPrint("vcc: ");
uartPrintln(vcc); // напряжение в милливольтах
delay(300);
}

View File

@ -16,8 +16,8 @@
"category": "Contributed",
"url": "https://github.com/AlexGyver/GyverCore/releases/download/GyverCore/GyverCore.zip",
"archiveFileName": "GyverCore.zip",
"checksum": "MD5:c304d158e055df8911457ed1aa42fae4",
"size": "137283",
"checksum": "MD5:a559f0299e7b815f5148a623f7fd70c6",
"size": "137346",
"boards": [
{"name": "ATmega328/168 based boards"}
],