www.kn34pc.com
http://www.kn34pc.com/forums/

Morse Code часовник
http://www.kn34pc.com/forums/viewtopic.php?f=52&t=1257
Страница 1 от 1

Автор:  LZ2WSG [ 08 Сеп 2026, 16:36 ]
Заглавие:  Morse Code часовник

В темата за нестандарните часовници (по-точно: часовникът с Морзов код) възникнаха допълнителни въпроси, дискусии, предложения и нови решения :biggrin.

Предлагам разглеждането на идеята да е в нова тема.

Цитат:
15:42
.---- ..... ....- ..---

При натискане на бутон, през зумера: на CW:
H15 M42
.... .---- ..... -- .---- .....

и на всеки час: пиу-пиу със зумера:
16:00 -> H16 -> .... ..... -....

Автор:  LZ2WSG [ 08 Сеп 2026, 16:43 ]
Заглавие:  Re: Morse Code часовник

STM32F401CCU6 за днес прави само ПИ-ПИ-ПИ-ПИ през 500ms / 500ms на RA6: :)

Код за потвърждение:
void TIM3_PWM_PA6_init(void) {
  // enable GPIOA, TIM3 clocks
  RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
  RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;

  // PA6 = AF push-pull
  GPIOA->MODER &= ~GPIO_MODER_MODER6;
  GPIOA->MODER |= GPIO_MODER_MODER6_1;         // alternate function
  GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR6_1;  // 50 MHz (fast speed)

  GPIOA->AFR[0] &= ~GPIO_AFRL_AFSEL6;
  GPIOA->AFR[0] |= GPIO_AFRL_AFSEL6_1;  // 0b0010 -> AF2 = TIM3_CH1

  // TIM3 PWM -> 750 Hz
  TIM3->PSC = 1120 - 1; // 84000000 Hz / 1120 = 75000 Hz
  TIM3->ARR = 100 - 1;  // 75000 Нz / 100 = 750 Hz
  TIM3->CCR1 = 50;      // 50 % duty

  TIM3->CCMR1 |= TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2;  // 0b110 -> PWM mode 1
  TIM3->CCMR1 |= TIM_CCMR1_OC1PE;
  TIM3->CCER |= TIM_CCER_CC1E;

  TIM3->EGR |= TIM_EGR_UG;   // update generation
  TIM3->CR1 |= TIM_CR1_CEN;  // counter enable
}

Код за потвърждение:
  while (1) {
    TIM3->CCER |= TIM_CCER_CC1E;   // tone
    delay_us(500000);

    TIM3->CCER &= ~TIM_CCER_CC1E;  // no tone
    delay_us(500000);
  }

Автор:  LZ2WSG [ 09 Сеп 2026, 15:21 ]
Заглавие:  Re: Morse Code часовник

Днес STM32F401CCU6 телеграфира в зумера (750 Hz) и намига с LED (към PC13) каквото му напишеш
(подобно на "Arduino Si5351 телеграфен радиофар") (без Si).

Код за потвърждение:
char *cw_message = "VVV ...";

Код за потвърждение:
const uint8_t s[39] = {
  0b00000001,  // A
  0b00001000,  // B
  0b00001010,  // C
  0b00000100,  // D
...

const uint8_t d[39] = {
  2, 4, 4, 3,
...

Автор:  LZ2WSG [ 10 Сеп 2026, 21:10 ]
Заглавие:  Re: Morse Code часовник

По-къс код: без масива за разрядността на символите.
Код за потвърждение:
const uint8_t morse_table[39] = {
  0b00000101,  // A .-
  0b00011000,  // B -...
  0b00011010,  // C -.-.
  0b00001100,  // D -..
  0b00000010,  // E .
  0b00010010,  // F ..-.
...
  0b00111110,  // 9 ----.
...

Символите започват след нули ... и първата намерена 1-ца (старши->младши):
Код за потвърждение:
0b00000101 -> 01 -> А
...
0b00010010 -> 0010 -> F
...
0b00111110 -> 11110 -> 9
...

Автор:  LZ2WSG [ 11 Сеп 2026, 23:18 ]
Заглавие:  Re: Morse Code часовник

Конструктивен въпрос: как да настройвам телеграфния часовник ??? :smt117
Механизъм, органи за настройка, реакция на изхода (зумер, светодиод)?

Автор:  LZ2WSG [ 12 Сеп 2026, 10:04 ]
Заглавие:  Re: Morse Code часовник

За пробата: сверяване "някак си" и последващото писане на код за часовника:
Че компилаторът е "умен"? - "умен" е :) - с вградените препроцесорни макроси дава времето при компилиране и
с него мога да сверя вътрешния часовник на STM32.

Ама аз си искам "Ръчен режим" на сверяване на "телеграфния часовник" ... :smt048

Код за потвърждение:
  uint32_t hours, minutes, seconds;
  uint32_t day, year;
  char month_str[4]; 
...
  // __TIME__  -> hh:mm:ss
  sscanf(__TIME__, "%d:%d:%d", &hours, &minutes, &seconds);

  // __DATE__  -> M mm dd yyyy
  sscanf(__DATE__, "%s %d %d", month_str, &day, &year);

и резултатът в дебъгера:

Прикачени файлове:
debug_date_time.jpg
debug_date_time.jpg [ 83.14 KiB | Прегледано 3399 пъти ]

Автор:  LZ2WSG [ 16 Сеп 2026, 13:14 ]
Заглавие:  Re: Morse Code часовник

вариант:
с вход-букса за електронен телеграфен ключ ( :mocking )

сверяване: от 12:25 на 15:25
----------------------------------
аз: бутон за сверяване ->
часовник: ти-ти-та-та-ти-ти (?)
аз: H15
часовник: ти-та-ти (R)
...

Автор:  LZ2WSG [ 19 Сеп 2026, 18:02 ]
Заглавие:  Re: Morse Code часовник

с ESP32, Wi-Fi самосверяване на часа по NTP сървър/и.

Но е много ... автоматизирано и без участие на оператора :smt069
(Винаги ще е точен, автоматично ще превключва зимно/лятно часово време. Скука ... :rolleyes ).

Автор:  DVS [ 21 Сеп 2026, 07:36 ]
Заглавие:  Re: Morse Code часовник

Тук май ще трябва и декодер :D

Прикачени файлове:
Morse Decoder.jpg
Morse Decoder.jpg [ 232.67 KiB | Прегледано 452 пъти ]

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/