Add ATmega328P CH340 profile and SOS sketch
This commit is contained in:
parent
a49ef3c753
commit
43dc5b859a
4 changed files with 155 additions and 0 deletions
21
README.md
21
README.md
|
|
@ -39,6 +39,22 @@ Minima har ikke LED-matrix eller Qwiic-stik. CAN kræver en ekstern transceiver.
|
|||
Detaljer, identifikation og links findes i
|
||||
[`boards/arduino-uno-r4-minima`](boards/arduino-uno-r4-minima/README.md).
|
||||
|
||||
### ATmega328P + CH340 (UNO/Nano-kompatibelt)
|
||||
|
||||
- **MCU:** ATmega328P, identificeret via signatur `1E 95 0F`
|
||||
- **USB-seriel:** WCH CH340, `VID 1A86 / PID 7523`
|
||||
- **Bootloader:** STK500v1/Optiboot-kompatibel ved 115200 baud
|
||||
- **Hukommelse:** 32 KB flash, 2 KB SRAM og 1 KB EEPROM
|
||||
- **Typiske interfaces:** GPIO, PWM, UART, I²C, SPI og 10-bit ADC
|
||||
- **Onboard:** normalt bruger-LED på D13 samt reset-knap
|
||||
- **Trådløst og sensorer:** ingen indbyggede
|
||||
- **Anvendt FQBN:** `arduino:avr:uno`
|
||||
|
||||
USB-identiteten kan ikke skelne sikkert mellem en UNO R3-klon og en nyere
|
||||
Nano-klon. Profilen bruger derfor det verificerede hardwaregrundlag frem for et
|
||||
ugaranteret produktnavn. Detaljer findes i
|
||||
[`boards/atmega328p-ch340`](boards/atmega328p-ch340/README.md).
|
||||
|
||||
## Projektstruktur
|
||||
|
||||
Boards og sketches bruger samme stabile board-id:
|
||||
|
|
@ -77,6 +93,11 @@ dokumentation, forbindelser og biblioteker beskrives ved den enkelte sketch.
|
|||
- [`sos_blink`](sketches/arduino-uno-r4-minima/sos_blink) – SOS i morsekode på
|
||||
den indbyggede LED
|
||||
|
||||
### ATmega328P + CH340
|
||||
|
||||
- [`sos_blink`](sketches/atmega328p-ch340/sos_blink) – SOS i morsekode på den
|
||||
standardmæssige D13-LED
|
||||
|
||||
## Tilføjelse af flere boards
|
||||
|
||||
Nye boards får en profil under `boards/<board-id>/` og deres sketches placeres
|
||||
|
|
|
|||
60
boards/atmega328p-ch340/README.md
Normal file
60
boards/atmega328p-ch340/README.md
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
# ATmega328P + CH340 Arduino-kompatibelt board
|
||||
|
||||
## Identifikation
|
||||
|
||||
| Felt | Verificeret værdi |
|
||||
| --- | --- |
|
||||
| Aktuel port | `COM8` |
|
||||
| USB-serielchip | WCH CH340 |
|
||||
| USB-ID | `VID 1A86 / PID 7523` |
|
||||
| Mikrocontroller | ATmega328P |
|
||||
| MCU-signatur | `1E 95 0F` |
|
||||
| Bootloaderprotokol | STK500v1/Arduino |
|
||||
| Uploadhastighed | 115200 baud |
|
||||
| Anvendt Arduino CLI FQBN | `arduino:avr:uno` |
|
||||
|
||||
Identiteten blev kontrolleret skrivebeskyttet med `avrdude`; flashhukommelsen
|
||||
blev ikke ændret. CH340 og denne bootloaderkombination bruges både på UNO
|
||||
R3-kloner og nyere Nano-kloner. Den præcise formfaktor kan derfor kun afgøres
|
||||
ud fra boardets fysiske layout eller silketryk.
|
||||
|
||||
## Out-of-the-box
|
||||
|
||||
Et standard Arduino-kompatibelt ATmega328P-board tilbyder:
|
||||
|
||||
- bruger-LED på D13;
|
||||
- digitale ind- og udgange;
|
||||
- seks PWM-kanaler;
|
||||
- analoge målinger med 10-bit ADC;
|
||||
- UART, I²C/TWI og SPI;
|
||||
- eksterne interrupts og pin-change interrupts;
|
||||
- hardwaretimere, watchdog og 1 KB ikke-flygtig EEPROM.
|
||||
|
||||
Boardet har normalt ingen indbyggede sensorer, Wi-Fi eller Bluetooth. Antallet
|
||||
af analoge pins og strømforsyningsmuligheder afhænger af, om den fysiske model
|
||||
er UNO-, Nano- eller en anden ATmega328P-kompatibel variant.
|
||||
|
||||
## Typiske MCU-data
|
||||
|
||||
| Egenskab | Værdi |
|
||||
| --- | --- |
|
||||
| Arkitektur | 8-bit AVR |
|
||||
| Typisk clock | 16 MHz |
|
||||
| Flash | 32 KB, inklusive bootloader |
|
||||
| SRAM | 2 KB |
|
||||
| EEPROM | 1 KB |
|
||||
| ADC | 10-bit |
|
||||
| Timere | 2 × 8-bit og 1 × 16-bit |
|
||||
| Typisk logikniveau | 5 V; kontrollér altid boardets mærkning |
|
||||
|
||||
## Sketches i dette repo
|
||||
|
||||
- [`sos_blink`](../../sketches/atmega328p-ch340/sos_blink) – blinker SOS i
|
||||
morsekode med den standardmæssige indbyggede LED
|
||||
|
||||
## Kilder
|
||||
|
||||
- [Arduino UNO R3 hardware documentation](https://docs.arduino.cc/hardware/uno-rev3/)
|
||||
- [Arduino Nano hardware documentation](https://docs.arduino.cc/hardware/nano/)
|
||||
- [Arduino AVR core board definitions](https://github.com/arduino/ArduinoCore-avr/blob/master/boards.txt)
|
||||
- [ATmega328P datasheet](https://docs.arduino.cc/resources/datasheets/ATmega328P-datasheet.pdf)
|
||||
28
sketches/atmega328p-ch340/sos_blink/README.md
Normal file
28
sketches/atmega328p-ch340/sos_blink/README.md
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
# SOS Blink
|
||||
|
||||
Blinker `SOS` (`... --- ...`) i morsekode med den standardmæssige indbyggede
|
||||
LED på D13. Sketchen kræver ingen eksterne komponenter.
|
||||
|
||||
En tidsenhed er 200 ms:
|
||||
|
||||
- prik: 1 enhed tændt
|
||||
- streg: 3 enheder tændt
|
||||
- mellemrum mellem signaler: 1 enhed
|
||||
- mellemrum mellem bogstaver: 3 enheder
|
||||
- mellemrum mellem gentagelser: 7 enheder
|
||||
|
||||
## Kompilering
|
||||
|
||||
```powershell
|
||||
arduino-cli compile --fqbn arduino:avr:uno sketches/atmega328p-ch340/sos_blink
|
||||
```
|
||||
|
||||
## Upload
|
||||
|
||||
Boardet blev registreret på `COM8` med en 115200-baud Optiboot-kompatibel
|
||||
bootloader:
|
||||
|
||||
```powershell
|
||||
arduino-cli upload --port COM8 --fqbn arduino:avr:uno sketches/atmega328p-ch340/sos_blink
|
||||
```
|
||||
|
||||
46
sketches/atmega328p-ch340/sos_blink/sos_blink.ino
Normal file
46
sketches/atmega328p-ch340/sos_blink/sos_blink.ino
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
// SOS in Morse code on a standard ATmega328P Arduino-compatible board.
|
||||
// S = ... O = --- S = ...
|
||||
|
||||
constexpr unsigned long UNIT_MS = 200;
|
||||
|
||||
void blinkSymbol(unsigned long onUnits) {
|
||||
digitalWrite(LED_BUILTIN, HIGH);
|
||||
delay(onUnits * UNIT_MS);
|
||||
digitalWrite(LED_BUILTIN, LOW);
|
||||
|
||||
// Every Morse symbol is followed by a one-unit gap.
|
||||
delay(UNIT_MS);
|
||||
}
|
||||
|
||||
void blinkLetter(const char *pattern) {
|
||||
for (const char *symbol = pattern; *symbol != '\0'; ++symbol) {
|
||||
blinkSymbol(*symbol == '.' ? 1 : 3);
|
||||
}
|
||||
}
|
||||
|
||||
void letterGap() {
|
||||
// blinkSymbol() already supplied the first of the three gap units.
|
||||
delay(2 * UNIT_MS);
|
||||
}
|
||||
|
||||
void wordGap() {
|
||||
// blinkSymbol() already supplied the first of the seven gap units.
|
||||
delay(6 * UNIT_MS);
|
||||
}
|
||||
|
||||
void setup() {
|
||||
pinMode(LED_BUILTIN, OUTPUT);
|
||||
digitalWrite(LED_BUILTIN, LOW);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
blinkLetter("...");
|
||||
letterGap();
|
||||
|
||||
blinkLetter("---");
|
||||
letterGap();
|
||||
|
||||
blinkLetter("...");
|
||||
wordGap();
|
||||
}
|
||||
|
||||
Loading…
Add table
Reference in a new issue