![]() |
BJ-Keyer
1.03
Morsekeyer für 2 TRX und 6 Morsetasten
|
BJ-Keyer, ein elektronischer Morsekeyer. Mehr ...
#include "main.h"
Funktionen | |
| void | InitTimer (void) |
| Initialsieren der Timer. Mehr ... | |
| void | Init (void) |
| Initialisierung aller Variablen, Timer. Mehr ... | |
| ISR (TIMER1_COMPA_vect) | |
| 8 Bit Timer 1 ISR routine Mehr ... | |
| ISR (TIMER0_COMPA_vect) | |
| 8 Bit Timer 0 ISR routine Mehr ... | |
| ISR (USART_RX_vect) | |
| Interrupt RX serielle Schnittstelle. Mehr ... | |
| void | ReStart (void) |
| Initialisierung bei Reset und Power On. Mehr ... | |
| int | main (void) |
| One Infinite Loop. Mehr ... | |
Variablen | |
| const unsigned char | sinewave [] |
BJ-Keyer, ein elektronischer Morsekeyer.
Morsekeyer für 3 Handtasten und 3 Paddle mit einem
Sinus Mithörton und Ausgängen für 2 Transceiver
OLED Funktionen von https://github.com/Sylaina/oled-display
Encoder Funktionen von https://www.mikrocontroller.net/articles/Drehgeber
History
------------------------------------------------------------------------------
2012-05-24 DL7BJ erste Version
2013-05-10 DL7BJ Generierung des Mithörtons als Sinus mit PWM/DDS
2013-07-15 DL7BJ Änderungen der Keyerfunktionen
2013-07-19 DL7BJ Beep/Boop (Spielkram)
2013-10-20 DL7BJ Änderungen der PWM Funktionen für besseren Sinus
2022-04-10 DL7BJ erste Leiterplatten für Prototyp (bisher Lochraster)
2022-09-02 DL7BJ viele Softwareänderungen, neuer Filter für PWM
2022-09-11 DL7BJ Encoder, LC-Display, Frontplatine "entsorgt"
2023-06-28 DL7BJ Port Anpassungen an neue Leiterplatte V1.01
2023-07-29 DL7BJ Menü für Einstellungen implementiert
2023-08-06 DL7BJ Quelltexte umstrukturiert, Aufteilung
2023-08-25 DL7BJ Code dokumentiert und aufgeräumt
2023-09-03 DL7BJ Funktionen für die Speichertasten hinzugefügt
2023-09-04 DL7BK Programmierung der Textspeicher über serielle Schnittstelle
ATMEGA328(P)
----------
(PCINT14/_RESET) PC6 -| 1 28|- PC5 (ADC5/SCL/PCINT13)
(PCINT16/RXD) PD0 -| 2 27|- PC4 (ADC4/SDA/PCINT12)
(PCINT17/TXT) PD1 -| 3 26|- PC3 (ADC3/PCINT11)
(PCINT18/INT0) PD2 -| 4 25|- PC2 (ADC2/PCINT10)
(PCINT19/OC2B/INT1) PD3 -| 5 24|- PC1 (ADC1/PCINT9)
(PCINT20/XCK/T0) PD4 -| 6 23|- PC0 (ADC0/PCINT8)
VCC -| 7 22|- GND
GND -| 8 21|- AREF
(PCINT6/XTAL1/TOSC1) PB6 -| 9 20|- AVCC
(PCINT7/XTAL2/TOSC2) PB7 -|10 19|- PB5 (SCK/PCINT5)
(PCINT21/OC0B/T1) PD5 -|11 18|- PB4 (MISO/PCINT4)
(PCINT22/OC0A/AIN0) PD6 -|12 17|- PB3 (MOSI/OC2A/PCINT3)
(PCINT23/AIN1) PD7 -|13 16|- PB2 (SS/OC1B/PCINT2)
(PCINT0/CLK0/ICP1) PB0 -|14 15|- PB1 (OC1A/PCINT1)
----------
Pin 1 - PC6 - Reset Pin 28 - PC5 - SCL Display
Pin 2 - PD0 - RxD Pin 27 - PC4 - SDA Display
Pin 3 - PD1 - TxD Pin 26 - PC3 - LED Key
Pin 4 - PD2 - Left Paddle Pin 25 - PC2 - TRX 2 Out
Pin 5 - PD3 - Right Paddle Pin 24 - PC1 - TRX 1 Out
Pin 6 - PD4 - Straight Key Pin 23 - PC0 - Mem 4
Pin 19 - PB5 - Mem 5
Pin 11 - PD5 - Mem 1 Pin 18 - PB4 - _Audio SD
Pin 12 - PD6 - Mem 2 Pin 17 - OC2A - Audio PWM output
Pin 13 - PD7 - Mem 3 Pin 16 - PB2 - Encoder Switch
Pin 14 - PB0 - Encoder A Pin 15 - PB1 - Encoder B | void Init | ( | void | ) |
Initialisierung aller Variablen, Timer.
| none |
| none |
| void InitTimer | ( | void | ) |
Initialsieren der Timer.
Alle Parameter der Timer basieren auf 16MHz Systemtakt.
Timer 0 - 8 Bit timer für 1ms
Timer 2 - 8 Bit timer für PWM zur Erzeugung des Sinustons
Timer 1A - 16 Bit timer zur Erzeugung der Hüllkurve
| none |
| none |
| ISR | ( | TIMER0_COMPA_vect | ) |
8 Bit Timer 0 ISR routine
Der Timer 0 mit CTC Interrupt läuft mit einem Takt
von einer Millisekunde Es werden mehrere Werte innerhalb
des Timerinterrupts verarbeitet.
| none |
| none |
| ISR | ( | TIMER1_COMPA_vect | ) |
8 Bit Timer 1 ISR routine
Der Timer 1 lädt die Sinuswerte für die PWM
| none |
| none |
| ISR | ( | USART_RX_vect | ) |
Interrupt RX serielle Schnittstelle.
| none |
| none |
| int main | ( | void | ) |
One Infinite Loop.
| none |
| none |
| void ReStart | ( | void | ) |
Initialisierung bei Reset und Power On.
| none |
| none |
| const unsigned char sinewave[] |