mirror of
https://github.com/AlexGyver/GyverCore.git
synced 2025-12-06 19:40:56 +03:00
add
This commit is contained in:
@@ -45,6 +45,14 @@ extern "C"{
|
||||
#define DEFAULT 1
|
||||
#define EXTERNAL 0
|
||||
#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 =====
|
||||
#ifdef abs
|
||||
#undef abs
|
||||
|
||||
@@ -88,47 +88,47 @@ void digitalToggle(uint8_t pin){
|
||||
}
|
||||
// ============= ANALOG =============
|
||||
void analogPrescaler (uint8_t prescl) {
|
||||
cli();
|
||||
switch (prescl) {
|
||||
case 2:
|
||||
ADCSRA &= ~((1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0));
|
||||
break;
|
||||
case 4: // (defalut)
|
||||
ADCSRA &= ~((1 << ADPS2) | (1 << ADPS0));
|
||||
ADCSRA |= (1 << ADPS1);
|
||||
break;
|
||||
case 8:
|
||||
ADCSRA &= ~ (1 << ADPS2);
|
||||
ADCSRA |= ((1 << ADPS1) | (1 << ADPS0));
|
||||
break;
|
||||
case 16:
|
||||
ADCSRA &= ~((1 << ADPS1) | (1 << ADPS0));
|
||||
ADCSRA |= (1 << ADPS2);
|
||||
break;
|
||||
case 32:
|
||||
ADCSRA &= ~ (1 << ADPS1);
|
||||
ADCSRA |= ((1 << ADPS2) | (1 << ADPS0));
|
||||
break;
|
||||
case 64:
|
||||
ADCSRA &= ~ (1 << ADPS0);
|
||||
ADCSRA |= ((1 << ADPS2) | (1 << ADPS1));
|
||||
break;
|
||||
case 128:
|
||||
ADCSRA |= ((1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0));
|
||||
break;
|
||||
}
|
||||
sei();
|
||||
cli();
|
||||
switch (prescl) {
|
||||
case 2:
|
||||
ADCSRA &= ~((1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0));
|
||||
break;
|
||||
case 4: // (defalut)
|
||||
ADCSRA &= ~((1 << ADPS2) | (1 << ADPS0));
|
||||
ADCSRA |= (1 << ADPS1);
|
||||
break;
|
||||
case 8:
|
||||
ADCSRA &= ~ (1 << ADPS2);
|
||||
ADCSRA |= ((1 << ADPS1) | (1 << ADPS0));
|
||||
break;
|
||||
case 16:
|
||||
ADCSRA &= ~((1 << ADPS1) | (1 << ADPS0));
|
||||
ADCSRA |= (1 << ADPS2);
|
||||
break;
|
||||
case 32:
|
||||
ADCSRA &= ~ (1 << ADPS1);
|
||||
ADCSRA |= ((1 << ADPS2) | (1 << ADPS0));
|
||||
break;
|
||||
case 64:
|
||||
ADCSRA &= ~ (1 << ADPS0);
|
||||
ADCSRA |= ((1 << ADPS2) | (1 << ADPS1));
|
||||
break;
|
||||
case 128:
|
||||
ADCSRA |= ((1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0));
|
||||
break;
|
||||
}
|
||||
sei();
|
||||
}
|
||||
|
||||
void analogReference(uint8_t mode)
|
||||
{
|
||||
a_ref = mode; // изменения будут приняты в силу при следующем analogRead() / analogStartConvert()
|
||||
a_ref = mode; // изменения будут приняты в силу при следующем analogRead() / analogStartConvert()
|
||||
}
|
||||
|
||||
int analogRead(uint8_t pin)
|
||||
{
|
||||
if(a_ref == INTERNAL) a_ref = 3; // для удобства задвигания
|
||||
uint8_t oldSREG = SREG; // запомнинаем были ли включены прерывания
|
||||
if(a_ref == INTERNAL) a_ref = 3; // для удобства задвигания
|
||||
uint8_t oldSREG = SREG; // запомнинаем были ли включены прерывания
|
||||
cli();//выключаем прерывания
|
||||
pin = (pin < 14) ? (pin) : (pin - 14); // совместимость между A0, A1.. A7 и 0, 1.. 7
|
||||
ADMUX = 0; // обнуляем опорное и мультиплексор
|
||||
@@ -141,8 +141,8 @@ int analogRead(uint8_t pin)
|
||||
}
|
||||
|
||||
void analogStartConvert(byte pin) {
|
||||
if(a_ref == INTERNAL) a_ref = 3; // для удобства задвигания
|
||||
uint8_t oldSREG = SREG; // запомнинаем были ли включены прерывания
|
||||
if(a_ref == INTERNAL) a_ref = 3; // для удобства задвигания
|
||||
uint8_t oldSREG = SREG; // запомнинаем были ли включены прерывания
|
||||
cli();//выключаем прерывания
|
||||
pin = (pin < 14) ? (pin) : (pin - 14); // совместимость между A0, A1.. A7 и 0, 1.. 7
|
||||
ADMUX = 0; // обнуляем опорное и мультиплексор
|
||||
|
||||
@@ -8,7 +8,7 @@ volatile uint8_t _UART_RX_BUFFER_TAIL;
|
||||
|
||||
// ===== INIT =====
|
||||
void uartBegin(uint32_t baudrate){
|
||||
uint16_t speed = (2000000/baudrate)-1;
|
||||
uint16_t speed = (F_CPU / (8 * baudrate)) - 1;
|
||||
UBRR0H = highByte(speed);
|
||||
UBRR0L = lowByte(speed);
|
||||
UCSR0A = (1 << U2X0);
|
||||
@@ -16,9 +16,6 @@ void uartBegin(uint32_t baudrate){
|
||||
UCSR0C = ((1<<UCSZ01) | (1<<UCSZ00));
|
||||
_UART_RX_BUFFER_HEAD = _UART_RX_BUFFER_TAIL = 0;
|
||||
}
|
||||
void uartBegin(void) {
|
||||
uartBegin(9600);
|
||||
}
|
||||
|
||||
void uartEnd(){
|
||||
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;
|
||||
}
|
||||
|
||||
boolean uartAvailable() {
|
||||
uint8_t uartAvailable() {
|
||||
return ((unsigned int)(UART_RX_BUFFER_SIZE + _UART_RX_BUFFER_HEAD - _UART_RX_BUFFER_TAIL)) % UART_RX_BUFFER_SIZE;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/* Облегченный Serial */
|
||||
// Версия 1.2
|
||||
|
||||
#ifndef uart_h
|
||||
#define uart_h
|
||||
@@ -6,11 +7,10 @@
|
||||
#include "Arduino.h"
|
||||
#include <avr/io.h>
|
||||
|
||||
void uartBegin(void);
|
||||
void uartBegin(uint32_t baudrate);
|
||||
void uartBegin(uint32_t baudrate = 9600);
|
||||
void uartEnd();
|
||||
|
||||
boolean uartAvailable();
|
||||
uint8_t uartAvailable();
|
||||
boolean uartAvailableForWrite();
|
||||
char uartRead();
|
||||
char uartPeek();
|
||||
|
||||
@@ -211,4 +211,7 @@ parseFloat | 1070 | 246 | 824
|
||||
- Добавлен **Clock Out** - вывод тактирования на пин D8 (через меню выбора платы)
|
||||
- Добавлена настройка **Save EEPROM** (через меню выбора платы)
|
||||
- Добавлена настройка **Initialization** отключить инициализацию периферии при старте скетча (через меню выбора платы)
|
||||
- Огромное спасибо **Pasha13666** за помощь в доработке!
|
||||
- Огромное спасибо **Pasha13666** за помощь в доработке!
|
||||
- 1.7.1
|
||||
- Поправлены баги с I/O
|
||||
- Улучшен uart
|
||||
@@ -120,6 +120,20 @@
|
||||
{"name": "ATmega328 based boards"}
|
||||
],
|
||||
"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": []
|
||||
|
||||
Reference in New Issue
Block a user