mirror of
https://github.com/AlexGyver/GyverCore.git
synced 2025-12-08 10:02:10 +03:00
add
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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; // обнуляем опорное и мультиплексор
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -211,4 +211,7 @@ parseFloat | 1070 | 246 | 824
|
|||||||
- Добавлен **Clock Out** - вывод тактирования на пин D8 (через меню выбора платы)
|
- Добавлен **Clock Out** - вывод тактирования на пин D8 (через меню выбора платы)
|
||||||
- Добавлена настройка **Save EEPROM** (через меню выбора платы)
|
- Добавлена настройка **Save EEPROM** (через меню выбора платы)
|
||||||
- Добавлена настройка **Initialization** отключить инициализацию периферии при старте скетча (через меню выбора платы)
|
- Добавлена настройка **Initialization** отключить инициализацию периферии при старте скетча (через меню выбора платы)
|
||||||
- Огромное спасибо **Pasha13666** за помощь в доработке!
|
- Огромное спасибо **Pasha13666** за помощь в доработке!
|
||||||
|
- 1.7.1
|
||||||
|
- Поправлены баги с I/O
|
||||||
|
- Улучшен uart
|
||||||
@@ -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": []
|
||||||
|
|||||||
Reference in New Issue
Block a user