mirror of
https://github.com/AlexGyver/GyverCore.git
synced 2025-07-03 04:22:31 +03:00
Create README_eng.md
This commit is contained in:
151
README_eng.md
Normal file
151
README_eng.md
Normal file
@ -0,0 +1,151 @@
|
|||||||
|

|
||||||
|
# GyverCore for ATmega328
|
||||||
|
**Version 1.9.0 from 17.09.2019**
|
||||||
|
Fast and light core for Arduino IDE with advanced configuration. **Only for ATmega328 boards!**
|
||||||
|
Based on original Arduino 1.8.9 core, all functions replaced by faster versions, a bunch of interesting staff added.
|
||||||
|
Made by **AlexGyver** and Egor 'Nich1con' Zaharov from mother Russia.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
### Automatic
|
||||||
|
- Open the Arduino IDE.
|
||||||
|
- Open the **File > Preferences** menu item.
|
||||||
|
- Enter the following URL in **Additional Boards Manager URLs**:
|
||||||
|
```
|
||||||
|
https://alexgyver.github.io/package_GyverCore_index.json
|
||||||
|
```
|
||||||
|
- Open the **Tools > Board > Boards Manager...** menu item.
|
||||||
|
- Wait for the platform indexes to finish downloading.
|
||||||
|
- Scroll down until you see the **GyverCore** entry and click on it.
|
||||||
|
- Click **Install**.
|
||||||
|
- After installation is complete close the Boards Manager window.
|
||||||
|
|
||||||
|
### Manual
|
||||||
|
- Place all files from GyverCore to C:\Users\Username\AppData\Local\Arduino15\packages\GyverCore\hardware\avr\1.9.0\
|
||||||
|
|
||||||
|
## Changes
|
||||||
|
### Faster and lighter
|
||||||
|
Time of compute, us
|
||||||
|
|
||||||
|
Function | Arduino | GyverCore | Faster in
|
||||||
|
----------------|-----------|-----------|----------
|
||||||
|
millis | 1.06 us | 1.00 us | -
|
||||||
|
micros | 1.19 us | 1.13 us | -
|
||||||
|
pinMode | 2.90 us | 0.57 us | 5.09
|
||||||
|
digitalWrite | 2.90 us | 0.57 us | 5.09
|
||||||
|
digitalRead | 2.45 us | 0.50 us | 4.90
|
||||||
|
analogWrite | 4.15 us | 1.13 us | 3.67
|
||||||
|
analogRead | 112.01 us | 5.41 us | 20.70
|
||||||
|
analogReference | 0.00 us | 0.00 us | -
|
||||||
|
attachInterrupt | 1.20 us | 1.18 us | 1.02
|
||||||
|
detachInterrupt | 0.82 us | 0.57 us | 1.44
|
||||||
|
tone | 5.63 us | 2.40 us | 2.3
|
||||||
|
|
||||||
|
Flash, byte
|
||||||
|
|
||||||
|
Function | Arduino | GyverCore | Difference
|
||||||
|
----------------|---------|-----------|---------------
|
||||||
|
millis | 26 | 24 | 2
|
||||||
|
micros | 24 | 20 | 4
|
||||||
|
pinMode | 114 | 24 | 90
|
||||||
|
digitalWrite | 200 | 24 | 176
|
||||||
|
digitalRead | 190 | 24 | 166
|
||||||
|
analogWrite | 406 | 48 | 358
|
||||||
|
analogRead | 32 | 72 | -40
|
||||||
|
analogReference | 0 | 22 | -22
|
||||||
|
attachInterrupt | 212 | 180 | 32
|
||||||
|
detachInterrupt | 198 | 150 | 48
|
||||||
|
tone | 1410 | 740 | 670
|
||||||
|
Serial begin | 1028 | 166 | 862
|
||||||
|
print long | 1094 | 326 | 768
|
||||||
|
print string | 2100 | 1484 | 616
|
||||||
|
print float | 2021 | 446 | 1575
|
||||||
|
parseInt | 1030 | 214 | 816
|
||||||
|
readString | 2334 | 1594 | 740
|
||||||
|
parseFloat | 1070 | 246 | 824
|
||||||
|
|
||||||
|
Note: **analogRead** and **analogReference** has advanced configuration
|
||||||
|
Sketch with all of functions:
|
||||||
|
- Arduino Core: 3446 byte (11%) Flash / 217 byte (10%) SRAM
|
||||||
|
- GyverCore: 1436 byte (4%) Flash / 94 byte (4%) SRAM
|
||||||
|
|
||||||
|
Empty sketch
|
||||||
|
- Arduino Core: 444 byte (1%) Flash / 9 byte (0%) SRAM
|
||||||
|
- GyverCore: 202 byte (0%) Flash / 0 byte (0%) SRAM
|
||||||
|
|
||||||
|
All libraries, based on Wiring functions, works much faster. Even SPI (more than 2 times faster!)
|
||||||
|
|
||||||
|
**uart** is an alternative to Serial, but much faster and lighter.
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Wide Syntax Coloring Map (include names of registers and bits)
|
||||||
|
- Macros **bitToggle**(value, bit), for fast bit inversion
|
||||||
|
- Function **digitalToggle**(pin), for fast pin inversion
|
||||||
|
- Advanced ADC
|
||||||
|
- **analogStartConvert**(byte pin) - start convert from choosed pin
|
||||||
|
- **analogGet()** - get converted value (you can make some actions between start and get)
|
||||||
|
- **analogPrescaler**(uint8_t prescl) - set prescaler for ADC. Prescaler:
|
||||||
|
- **2**: 3.04 us per conversion
|
||||||
|
- **4**: 4.72 us per conversion
|
||||||
|
- **8**: 8.04 us per conversion
|
||||||
|
- **16**: 15.12 us per conversion
|
||||||
|
- **32**: 28.04 us per conversion
|
||||||
|
- **64**: 56.04 us per conversion
|
||||||
|
- **128**: 112 us per conversion
|
||||||
|
- In function **analogRead(pin)** you can use constants instead of pin number: **INTERNAL** (get reference voltage) and **THERMOMETR** (get core temperature). *Note: set ADC prescaler to 128*
|
||||||
|
- Advanced board menu
|
||||||
|
- Bootloader select
|
||||||
|
- Clock source and frequency select
|
||||||
|
- Save EEPROM when erase, or not
|
||||||
|
- Clock out
|
||||||
|
- Selectable "system timer" - you can disable it and take control on timer 0 OVF vector
|
||||||
|
- Replace Serial by faster uart
|
||||||
|
- Disable or configure B.O.D.
|
||||||
|
- You can disable default initialization of timers and ADC
|
||||||
|
- Compiler version
|
||||||
|
|
||||||
|
## Board settings
|
||||||
|
**Bootloader** - bootloader selection **(flash bootloader needed)**:
|
||||||
|
- **old bootloader** - old stock bootloader
|
||||||
|
- **optiBoot** - actual stock bootloader for all new Arduino boards
|
||||||
|
- **optiBoot v8** - actual version of [optiboot](https://github.com/Optiboot/optiboot) with correct fuses
|
||||||
|
- **without bootloader** with fuses for upload sketch in all of 32 kBytes ща Flash!
|
||||||
|
---
|
||||||
|
**Clock** - clock source and frequency selection **(flash bootloader needed)**:
|
||||||
|
- **External 16 MHz**
|
||||||
|
- **External 8 MHz**
|
||||||
|
- **Internal 8 MHz** for standalone ATmega chip progects =)
|
||||||
|
- **Internal 1 MHz**
|
||||||
|
- **Internal 128 kHz** - use *without bootloader* for this clock
|
||||||
|
- Note:
|
||||||
|
- Time function (delay/millis) are corrected for chosen clock
|
||||||
|
- After flash 128 kHz you need to slow down your peogrammer to flash again!
|
||||||
|
---
|
||||||
|
**Save EEPROM** - save EEPROM after flashing with programmer **(flash bootloader needed)**:
|
||||||
|
- **enable**
|
||||||
|
- **disable**
|
||||||
|
---
|
||||||
|
**Clock Out** - system clock out on pin **D8** **(flash bootloader needed)**:
|
||||||
|
- **disable**
|
||||||
|
- **enable**
|
||||||
|
---
|
||||||
|
**System timer** - timer0 setting:
|
||||||
|
- **enable** - default settings delay/millis is working as usual
|
||||||
|
- **disable** - timer 0 OVF vector is free! But millis/micros is not working. delay/delayMicroseconds are replaced by _delay_ms и _delay_us
|
||||||
|
---
|
||||||
|
**Serial** - Serial behavior:
|
||||||
|
- **default Serial** - when you use Serial object, it behave as usual
|
||||||
|
- **GyverUART** - all calls of **Serial** will be replaced by fast and light **uart** class
|
||||||
|
---
|
||||||
|
**B.O.D.** (Brown-out detector) - reset when voltage drop **(flash bootloader needed)**:
|
||||||
|
- **disable**
|
||||||
|
- **1.8V** - reset when VCC is below 1.7-2.0V
|
||||||
|
- **2.7V (default)** - reset when VCC is below 2.5-2.9V
|
||||||
|
- **4.3V** - reset when VCC is below 4.1-4.5V
|
||||||
|
---
|
||||||
|
**Initialization** - initialization of chip periphery (timers, ADC, etc.)
|
||||||
|
- **enable** - default initialization
|
||||||
|
- **disable** - no initialization
|
||||||
|
---
|
||||||
|
**Compiler version**
|
||||||
|
- **default v5.4.0** - stock Arduino IDE compiler (avr-gcc v5.4.0)
|
||||||
|
- **avr-gcc v8.3.0** - new compiler version: faster compilation and lighter code (more free Flash). But could be unstable in some case
|
Reference in New Issue
Block a user