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-31 11:35:27 +03:00
parent 2214451bd3
commit b0e39ba9d5
6 changed files with 66 additions and 44 deletions

View File

@@ -45,6 +45,14 @@ extern "C"{
#define DEFAULT 1 #define DEFAULT 1
#define EXTERNAL 0 #define EXTERNAL 0
#define THERMOMETR 22 #define THERMOMETR 22
#define PWM_8BIT 0
#define PWM_10BIT 1
#define PWM_DEFAULT 0
#define PWM_8KHZ 1
#define PWM_31KHZ 2
// ===== MATH MACRO ===== // ===== MATH MACRO =====
#ifdef abs #ifdef abs
#undef abs #undef abs

View File

@@ -88,47 +88,47 @@ void digitalToggle(uint8_t pin){
} }
// ============= ANALOG ============= // ============= ANALOG =============
void analogPrescaler (uint8_t prescl) { void analogPrescaler (uint8_t prescl) {
cli(); cli();
switch (prescl) { switch (prescl) {
case 2: case 2:
ADCSRA &= ~((1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0)); ADCSRA &= ~((1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0));
break; break;
case 4: // (defalut) case 4: // (defalut)
ADCSRA &= ~((1 << ADPS2) | (1 << ADPS0)); ADCSRA &= ~((1 << ADPS2) | (1 << ADPS0));
ADCSRA |= (1 << ADPS1); ADCSRA |= (1 << ADPS1);
break; break;
case 8: case 8:
ADCSRA &= ~ (1 << ADPS2); ADCSRA &= ~ (1 << ADPS2);
ADCSRA |= ((1 << ADPS1) | (1 << ADPS0)); ADCSRA |= ((1 << ADPS1) | (1 << ADPS0));
break; break;
case 16: case 16:
ADCSRA &= ~((1 << ADPS1) | (1 << ADPS0)); ADCSRA &= ~((1 << ADPS1) | (1 << ADPS0));
ADCSRA |= (1 << ADPS2); ADCSRA |= (1 << ADPS2);
break; break;
case 32: case 32:
ADCSRA &= ~ (1 << ADPS1); ADCSRA &= ~ (1 << ADPS1);
ADCSRA |= ((1 << ADPS2) | (1 << ADPS0)); ADCSRA |= ((1 << ADPS2) | (1 << ADPS0));
break; break;
case 64: case 64:
ADCSRA &= ~ (1 << ADPS0); ADCSRA &= ~ (1 << ADPS0);
ADCSRA |= ((1 << ADPS2) | (1 << ADPS1)); ADCSRA |= ((1 << ADPS2) | (1 << ADPS1));
break; break;
case 128: case 128:
ADCSRA |= ((1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0)); ADCSRA |= ((1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0));
break; break;
} }
sei(); sei();
} }
void analogReference(uint8_t mode) void analogReference(uint8_t mode)
{ {
a_ref = mode; // изменения будут приняты в силу при следующем analogRead() / analogStartConvert() a_ref = mode; // изменения будут приняты в силу при следующем analogRead() / analogStartConvert()
} }
int analogRead(uint8_t pin) int analogRead(uint8_t pin)
{ {
if(a_ref == INTERNAL) a_ref = 3; // для удобства задвигания if(a_ref == INTERNAL) a_ref = 3; // для удобства задвигания
uint8_t oldSREG = SREG; // запомнинаем были ли включены прерывания uint8_t oldSREG = SREG; // запомнинаем были ли включены прерывания
cli();//выключаем прерывания cli();//выключаем прерывания
pin = (pin < 14) ? (pin) : (pin - 14); // совместимость между A0, A1.. A7 и 0, 1.. 7 pin = (pin < 14) ? (pin) : (pin - 14); // совместимость между A0, A1.. A7 и 0, 1.. 7
ADMUX = 0; // обнуляем опорное и мультиплексор ADMUX = 0; // обнуляем опорное и мультиплексор
@@ -141,8 +141,8 @@ int analogRead(uint8_t pin)
} }
void analogStartConvert(byte pin) { void analogStartConvert(byte pin) {
if(a_ref == INTERNAL) a_ref = 3; // для удобства задвигания if(a_ref == INTERNAL) a_ref = 3; // для удобства задвигания
uint8_t oldSREG = SREG; // запомнинаем были ли включены прерывания uint8_t oldSREG = SREG; // запомнинаем были ли включены прерывания
cli();//выключаем прерывания cli();//выключаем прерывания
pin = (pin < 14) ? (pin) : (pin - 14); // совместимость между A0, A1.. A7 и 0, 1.. 7 pin = (pin < 14) ? (pin) : (pin - 14); // совместимость между A0, A1.. A7 и 0, 1.. 7
ADMUX = 0; // обнуляем опорное и мультиплексор ADMUX = 0; // обнуляем опорное и мультиплексор

View File

@@ -8,7 +8,7 @@ volatile uint8_t _UART_RX_BUFFER_TAIL;
// ===== INIT ===== // ===== INIT =====
void uartBegin(uint32_t baudrate){ void uartBegin(uint32_t baudrate){
uint16_t speed = (2000000/baudrate)-1; uint16_t speed = (F_CPU / (8 * baudrate)) - 1;
UBRR0H = highByte(speed); UBRR0H = highByte(speed);
UBRR0L = lowByte(speed); UBRR0L = lowByte(speed);
UCSR0A = (1 << U2X0); UCSR0A = (1 << U2X0);
@@ -16,9 +16,6 @@ void uartBegin(uint32_t baudrate){
UCSR0C = ((1<<UCSZ01) | (1<<UCSZ00)); UCSR0C = ((1<<UCSZ01) | (1<<UCSZ00));
_UART_RX_BUFFER_HEAD = _UART_RX_BUFFER_TAIL = 0; _UART_RX_BUFFER_HEAD = _UART_RX_BUFFER_TAIL = 0;
} }
void uartBegin(void) {
uartBegin(9600);
}
void uartEnd(){ void uartEnd(){
UCSR0B = 0; UCSR0B = 0;
@@ -50,7 +47,7 @@ char uartPeek() {
return _UART_RX_BUFFER_HEAD != _UART_RX_BUFFER_TAIL? _UART_RX_BUFFER[_UART_RX_BUFFER_TAIL]: -1; return _UART_RX_BUFFER_HEAD != _UART_RX_BUFFER_TAIL? _UART_RX_BUFFER[_UART_RX_BUFFER_TAIL]: -1;
} }
boolean uartAvailable() { uint8_t uartAvailable() {
return ((unsigned int)(UART_RX_BUFFER_SIZE + _UART_RX_BUFFER_HEAD - _UART_RX_BUFFER_TAIL)) % UART_RX_BUFFER_SIZE; return ((unsigned int)(UART_RX_BUFFER_SIZE + _UART_RX_BUFFER_HEAD - _UART_RX_BUFFER_TAIL)) % UART_RX_BUFFER_SIZE;
} }

View File

@@ -1,4 +1,5 @@
/* Облегченный Serial */ /* Облегченный Serial */
// Версия 1.2
#ifndef uart_h #ifndef uart_h
#define uart_h #define uart_h
@@ -6,11 +7,10 @@
#include "Arduino.h" #include "Arduino.h"
#include <avr/io.h> #include <avr/io.h>
void uartBegin(void); void uartBegin(uint32_t baudrate = 9600);
void uartBegin(uint32_t baudrate);
void uartEnd(); void uartEnd();
boolean uartAvailable(); uint8_t uartAvailable();
boolean uartAvailableForWrite(); boolean uartAvailableForWrite();
char uartRead(); char uartRead();
char uartPeek(); char uartPeek();

View File

@@ -212,3 +212,6 @@ parseFloat | 1070 | 246 | 824
- Добавлена настройка **Save EEPROM** (через меню выбора платы) - Добавлена настройка **Save EEPROM** (через меню выбора платы)
- Добавлена настройка **Initialization** отключить инициализацию периферии при старте скетча (через меню выбора платы) - Добавлена настройка **Initialization** отключить инициализацию периферии при старте скетча (через меню выбора платы)
- Огромное спасибо **Pasha13666** за помощь в доработке! - Огромное спасибо **Pasha13666** за помощь в доработке!
- 1.7.1
- Поправлены баги с I/O
- Улучшен uart

View File

@@ -120,6 +120,20 @@
{"name": "ATmega328 based boards"} {"name": "ATmega328 based boards"}
], ],
"toolsDependencies": [] "toolsDependencies": []
},
{
"name": "GyverCore",
"architecture": "avr",
"version": "1.7.1",
"category": "Contributed",
"url": "https://github.com/AlexGyver/GyverCore/releases/download/GyverCore-1.7.1/GyverCore.zip",
"archiveFileName": "GyverCore.zip",
"checksum": "MD5:772a85fabaec1353d8510f65e8ee14c4",
"size": "115920",
"boards": [
{"name": "ATmega328 based boards"}
],
"toolsDependencies": []
} }
], ],
"tools": [] "tools": []