diff --git a/GyverCore/boards.txt b/GyverCore/boards.txt index 26feddb..edd73cf 100644 --- a/GyverCore/boards.txt +++ b/GyverCore/boards.txt @@ -124,7 +124,7 @@ menu.timers=System timer nano.menu.timers.yes_millis=enable nano.menu.timers.yes_millis.extra_flags.timer= nano.menu.timers.no_millis=disable -nano.menu.timers.no_millis.build.extra_flags.timer=-D_GYVERCORE_NOMILLIS +nano.menu.timers.no_millis.extra_flags.timer=-D_GYVERCORE_NOMILLIS ## BOD ## menu.bod=B.O.D. diff --git a/GyverCore/cores/arduino/main.cpp b/GyverCore/cores/arduino/main.cpp index ebcc240..208f850 100644 --- a/GyverCore/cores/arduino/main.cpp +++ b/GyverCore/cores/arduino/main.cpp @@ -1,7 +1,6 @@ /* Главный цикл программы */ -#pragma message "Это фиксики , помогите !" #pragma message "Нас тут заперли, вызовите 911!" -#pragma message "GyverCore v1.7.3 inside. Enjoy" +#pragma message "GyverCore v1.8 inside. Enjoy" #include int main(void) { diff --git a/GyverCore/cores/arduino/pinOperation.cpp b/GyverCore/cores/arduino/pinOperation.cpp index 6408eb4..706e8ab 100644 --- a/GyverCore/cores/arduino/pinOperation.cpp +++ b/GyverCore/cores/arduino/pinOperation.cpp @@ -4,7 +4,7 @@ #define ARDUINO_MAIN #include "Arduino.h" #include -uint8_t a_ref = DEFAULT; // глобальная переменная для хранения опорного напряжения АЦП +static uint8_t a_ref = DEFAULT; // глобальная переменная для хранения опорного напряжения АЦП // ============= DIGITAL ============= void pinMode(uint8_t pin, uint8_t mode) @@ -81,21 +81,11 @@ void digitalToggle(uint8_t pin){ if (pin < 8) bitToggle(PORTD, pin); else if (pin < 14) bitToggle(PORTB, pin - 8); else if (pin < 20) bitToggle(PORTC, pin - 14); - /* - if (pin < 8) { - bitWrite(PORTD, pin, !bitRead(PORTD,pin)); - } - else if (pin < 14){ - bitWrite(PORTB, (pin - 8),!bitRead(PORTB,(pin-8))); - } - else if (pin < 20){ - bitWrite(PORTC, (pin - 14), !bitRead(PORTC,(pin-14))); - } - */ + SREG = oldSREG; // если прерывания не были включены - не включаем и наоборот } // ============= ANALOG ============= -void analogPrescaler (uint8_t prescl) { +void analogPrescaler(uint8_t prescl) { uint8_t oldSREG = SREG; // запомнинаем были ли включены прерывания cli();//выключаем прерывания switch (prescl) { @@ -131,7 +121,7 @@ void analogPrescaler (uint8_t prescl) { void analogReference(uint8_t mode) { - a_ref = mode; // изменения будут приняты в силу при следующем analogRead() / analogStartConvert() + a_ref = mode; // изменения будут приняты в силу при следующем analogRead() / analogStartConvert() } int analogRead(uint8_t pin) @@ -141,7 +131,7 @@ int analogRead(uint8_t pin) } void analogStartConvert(byte pin) { - if(a_ref == INTERNAL) a_ref = 3; // для удобства задвигания + if (a_ref == INTERNAL) a_ref = 3; // для удобства задвигания uint8_t oldSREG = SREG; // запомнинаем были ли включены прерывания cli();//выключаем прерывания pin = (pin < 14) ? (pin) : (pin - 14); // совместимость между A0, A1.. A7 и 0, 1.. 7 @@ -159,9 +149,13 @@ int analogGet() { // ============= PWM ============= void analogWrite(uint8_t pin, int val) { - uint8_t oldSREG = SREG; // запомнинаем были ли включены прерывания + if (val == 0) { + digitalWrite(pin, 0); + return; + } + uint8_t oldSREG = SREG; // запомнинаем были ли включены прерывания cli();//выключаем прерывания - switch (val) { + switch (pin) { case 5: bitSet(TCCR0A, COM0B1); OCR0B = val; diff --git a/GyverCore/cores/arduino/time_init.cpp b/GyverCore/cores/arduino/time_init.cpp index 0dcbb56..60e6bc9 100644 --- a/GyverCore/cores/arduino/time_init.cpp +++ b/GyverCore/cores/arduino/time_init.cpp @@ -48,7 +48,6 @@ void delay(unsigned long ms) { #ifdef _GYVERCORE_NOMILLIS _delay_ms(ms); #else - uint32_t start = micros(); // запомнили время старта while (ms > 0) { // ведем отсчет yield(); diff --git a/GyverCore/keywords.txt b/GyverCore/keywords.txt index 6da38f9..796c24e 100644 --- a/GyverCore/keywords.txt +++ b/GyverCore/keywords.txt @@ -15,10 +15,7 @@ analogPrescaler KEYWORD2 _BV KEYWORD2 cbi KEYWORD2 sbi KEYWORD2 -setPWM_20kHz KEYWORD2 -setPWM_9_10_resolution KEYWORD2 -setPwmFreqnuency KEYWORD2 -setPWM_default KEYWORD2 + analogStartConvert KEYWORD2 analogGet KEYWORD2 @@ -40,6 +37,15 @@ lightInit KEYWORD2 ISR KEYWORD2 +UINT8_MAX LITERAL1 +INT8_MAX LITERAL1 +UINT16_MAX LITERAL1 +INT16_MAX LITERAL1 +UINT32_MAX LITERAL1 +INT32_MAX LITERAL1 +UINT64_MAX LITERAL1 +INT64_MAX LITERAL1 + UDR0 KEYWORD2 UBRR0H KEYWORD2 UBRR0L KEYWORD2 diff --git a/README.md b/README.md index 55305f2..d3cbcc9 100644 --- a/README.md +++ b/README.md @@ -218,4 +218,9 @@ parseFloat | 1070 | 246 | 824 - 1.7.4 - Поправлены баги с Serial - И не только с Serial - - Оптимизированы прерывания \ No newline at end of file + - Оптимизированы прерывания +- 1.8 + - Поправлена ошибка с таймером + - Исправлена куча багов + - Дописан keywords + - Всё протестировано на всех загрузчиках \ No newline at end of file diff --git a/package_GyverCore_index.json b/package_GyverCore_index.json index 1639f71..5a4aba2 100644 --- a/package_GyverCore_index.json +++ b/package_GyverCore_index.json @@ -176,6 +176,20 @@ {"name": "ATmega328 based boards"} ], "toolsDependencies": [] + }, + { + "name": "GyverCore", + "architecture": "avr", + "version": "1.8", + "category": "Contributed", + "url": "https://github.com/AlexGyver/GyverCore/releases/download/GyverCore-1.8/GyverCore.zip", + "archiveFileName": "GyverCore.zip", + "checksum": "MD5:78d54cc806fd5f654d46ab831473c21a", + "size": "115396", + "boards": [ + {"name": "ATmega328 based boards"} + ], + "toolsDependencies": [] } ], "tools": []