www.kn34pc.com

Форум на силистренските радиолюбители
Дата и час: 24 Окт 2026, 06:28

Часовете са според зоната UTC + 2 часа [ DST ]




Напиши нова тема Отговори на тема  [ 9 мнения ] 
Автор Съобщение
 Заглавие: Morse Code часовник
МнениеПубликувано на: 08 Сеп 2026, 16:36 
Offline
Аватар

Регистриран на: 07 Дек 2006, 18:24
Мнения: 1710
Местоположение: Силистра
В темата за нестандарните часовници (по-точно: часовникът с Морзов код) възникнаха допълнителни въпроси, дискусии, предложения и нови решения :biggrin.

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

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

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

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


Върнете се в началото
 Профил  
 
МнениеПубликувано на: 08 Сеп 2026, 16:43 
Offline
Аватар

Регистриран на: 07 Дек 2006, 18:24
Мнения: 1710
Местоположение: Силистра
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);
  }


Върнете се в началото
 Профил  
 
МнениеПубликувано на: 09 Сеп 2026, 15:21 
Offline
Аватар

Регистриран на: 07 Дек 2006, 18:24
Мнения: 1710
Местоположение: Силистра
Днес 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,
...


Върнете се в началото
 Профил  
 
МнениеПубликувано на: 10 Сеп 2026, 21:10 
Offline
Аватар

Регистриран на: 07 Дек 2006, 18:24
Мнения: 1710
Местоположение: Силистра
По-къс код: без масива за разрядността на символите.
Код за потвърждение:
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
...


Върнете се в началото
 Профил  
 
МнениеПубликувано на: 11 Сеп 2026, 23:18 
Offline
Аватар

Регистриран на: 07 Дек 2006, 18:24
Мнения: 1710
Местоположение: Силистра
Конструктивен въпрос: как да настройвам телеграфния часовник ??? :smt117
Механизъм, органи за настройка, реакция на изхода (зумер, светодиод)?


Върнете се в началото
 Профил  
 
МнениеПубликувано на: 12 Сеп 2026, 10:04 
Offline
Аватар

Регистриран на: 07 Дек 2006, 18:24
Мнения: 1710
Местоположение: Силистра
За пробата: сверяване "някак си" и последващото писане на код за часовника:
Че компилаторът е "умен"? - "умен" е :) - с вградените препроцесорни макроси дава времето при компилиране и
с него мога да сверя вътрешния часовник на 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 | Прегледано 3391 пъти ]
Върнете се в началото
 Профил  
 
МнениеПубликувано на: 16 Сеп 2026, 13:14 
Offline
Аватар

Регистриран на: 07 Дек 2006, 18:24
Мнения: 1710
Местоположение: Силистра
вариант:
с вход-букса за електронен телеграфен ключ ( :mocking )

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


Върнете се в началото
 Профил  
 
МнениеПубликувано на: 19 Сеп 2026, 18:02 
Offline
Аватар

Регистриран на: 07 Дек 2006, 18:24
Мнения: 1710
Местоположение: Силистра
с ESP32, Wi-Fi самосверяване на часа по NTP сървър/и.

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


Върнете се в началото
 Профил  
 
МнениеПубликувано на: 21 Сеп 2026, 07:36 
Offline

Регистриран на: 11 Юни 2024, 15:10
Мнения: 145
Тук май ще трябва и декодер :D


Прикачени файлове:
Morse Decoder.jpg
Morse Decoder.jpg [ 232.67 KiB | Прегледано 444 пъти ]
Върнете се в началото
 Профил  
 
Покажи мненията от миналия:  Сортирай по  
Напиши нова тема Отговори на тема  [ 9 мнения ] 

Часовете са според зоната UTC + 2 часа [ DST ]


Кой е на линия

Потребители, разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
cron
Форумът се задвижва от phpBB® Forum Software © phpBB Group
Преведено от yarnaudov.com