BJ-Keyer  1.03
Morsekeyer für 2 TRX und 6 Morsetasten
main.c-Dateireferenz

BJ-Keyer, ein elektronischer Morsekeyer. Mehr ...

#include "main.h"
Include-Abhängigkeitsdiagramm für main.c:

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 []
 

Ausführliche Beschreibung

BJ-Keyer, ein elektronischer Morsekeyer.

Datum
2023-09-05
Autor
Tom, DL7BJ
Version
1.03
        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

Dokumentation der Funktionen

◆ Init()

void Init ( void  )

Initialisierung aller Variablen, Timer.

Parameter
none
Rückgabewerte
none

◆ InitTimer()

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 
Parameter
none
Rückgabewerte
none

◆ ISR() [1/3]

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.
Parameter
none
Rückgabewerte
none

◆ ISR() [2/3]

ISR ( TIMER1_COMPA_vect  )

8 Bit Timer 1 ISR routine

    Der Timer 1 lädt die Sinuswerte für die PWM
Parameter
none
Rückgabewerte
none

◆ ISR() [3/3]

ISR ( USART_RX_vect  )

Interrupt RX serielle Schnittstelle.

Parameter
none
Rückgabewerte
none

◆ main()

int main ( void  )

One Infinite Loop.

Parameter
none
Rückgabewerte
none

◆ ReStart()

void ReStart ( void  )

Initialisierung bei Reset und Power On.

Parameter
none
Rückgabewerte
none

Variablen-Dokumentation

◆ sinewave

const unsigned char sinewave[]
Initialisierung:
= {
0x00, 0x01, 0x02, 0x05, 0x0a, 0x0f, 0x15, 0x1d, 0x25, 0x2f, 0x39, 0x43, 0x4f, 0x5a, 0x67, 0x73,
0x80, 0x8c, 0x98, 0xa5, 0xb0, 0xbc, 0xc6, 0xd0, 0xda, 0xe2, 0xea, 0xf0, 0xf5, 0xfa, 0xfd, 0xfe,
0xff, 0xfe, 0xfd, 0xfa, 0xf5, 0xf0, 0xea, 0xe2, 0xda, 0xd0, 0xc6, 0xbc, 0xb0, 0xa5, 0x98, 0x8c,
0x80, 0x73, 0x67, 0x5a, 0x4f, 0x43, 0x39, 0x2f, 0x25, 0x1d, 0x15, 0x0f, 0x0a, 0x05, 0x02, 0x01
}