Add ATmega328P CH340 profile and SOS sketch

This commit is contained in:
christian 2026-10-24 13:20:18 +02:00
parent a49ef3c753
commit 43dc5b859a
4 changed files with 155 additions and 0 deletions

View file

@ -39,6 +39,22 @@ Minima har ikke LED-matrix eller Qwiic-stik. CAN kræver en ekstern transceiver.
Detaljer, identifikation og links findes i Detaljer, identifikation og links findes i
[`boards/arduino-uno-r4-minima`](boards/arduino-uno-r4-minima/README.md). [`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 ## Projektstruktur
Boards og sketches bruger samme stabile board-id: 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å - [`sos_blink`](sketches/arduino-uno-r4-minima/sos_blink) – SOS i morsekode på
den indbyggede LED 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 ## Tilføjelse af flere boards
Nye boards får en profil under `boards/<board-id>/` og deres sketches placeres Nye boards får en profil under `boards/<board-id>/` og deres sketches placeres

View 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)

View 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
```

View 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();
}