Таймер "Один импульс" режим

Rogerclark
Сб 10 февраля 2018 г., 6:32
Ребята

Если кто-то использовал режим однопулса, не могли бы вы сообщить мне

Мне нужно это для одного из моих личных проектов, поэтому я пытаюсь написать код для него и добавить в ядро

В одном режиме импульса можно использовать внешний сигнал для запуска одного из таймеров, что, в свою очередь, создает импульс после определенной задержки, с определенной продолжительностью


O sketch usa 149884 bytes (28%) de espaço de armazenamento para programas. O máximo são 524288 bytes. Variáveis globais usam 14000 bytes de memória dinâmica. SiiRoom_STM32.ino.elf: file format ELF32-arm-little Sections: Idx Name Size Address Type 0 00000000 0000000000000000 1 .text 0001eb2c 0000000008000000 TEXT DATA 2 .text.align 00000004 000000000801eb2c TEXT BSS 3 .ARM.exidx 000001d0 000000000801eb30 4 .data 00001170 0000000020000000 DATA 5 .rodata 00004b0c 000000000801fe70 DATA 6 .bss 00002540 0000000020001170 BSS 7 .debug_aranges 000020c8 0000000000000000 8 .debug_info 00060916 0000000000000000 9 .debug_abbrev 0000966e 0000000000000000 10 .debug_line 000166aa 0000000000000000 11 .debug_frame 00007b94 0000000000000000 12 .debug_str 000127e8 0000000000000000 13 .debug_loc 00118c6d 0000000000000000 14 .ARM.attributes 00000029 0000000000000000 15 .debug_ranges 00004788 0000000000000000 16 .comment 00000070 0000000000000000 17 .shstrtab 000000ca 0000000000000000 18 .symtab 0000d1e0 0000000000000000 19 .strtab 000067ab 0000000000000000 SiiRoom_STM32.ino.elf: file format ELF32-arm-little SYMBOL TABLE: 00000000 *UND* 00000000 08000000 l d .text 00000000 .text 0801eb2c l d .text.align 00000000 .text.align 0801eb30 l d .ARM.exidx 00000000 .ARM.exidx 20000000 l d .data 00000000 .data 0801fe70 l d .rodata 00000000 .rodata 20001170 l d .bss 00000000 .bss 00000000 l d .debug_aranges 00000000 .debug_aranges 00000000 l d .debug_info 00000000 .debug_info 00000000 l d .debug_abbrev 00000000 .debug_abbrev 00000000 l d .debug_line 00000000 .debug_line 00000000 l d .debug_frame 00000000 .debug_frame 00000000 l d .debug_str 00000000 .debug_str 00000000 l d .debug_loc 00000000 .debug_loc 00000000 l d .ARM.attributes 00000000 .ARM.attributes 00000000 l d .debug_ranges 00000000 .debug_ranges 00000000 l d .comment 00000000 .comment 00000000 l df *ABS* 00000000 crtstuff.c 0801eaf0 l .text 00000000 __EH_FRAME_BEGIN__ 20000008 .data 00000000 $d 08000130 .text 00000000 $t 08000130 l F .text 00000000 __do_global_dtors_aux 08000148 .text 00000000 $d 20001170 .bss 00000000 completed.7857 0801eb28 .text 00000000 $d 0801eb28 l .text 00000000 __do_global_dtors_aux_fini_array_entry 08000154 .text 00000000 $t 08000154 l F .text 00000000 frame_dummy 08000170 .text 00000000 $d 20001174 .bss 00000000 object.7862 0801eb04 .text 00000000 $d 0801eb04 l .text 00000000 __frame_dummy_init_array_entry 20001170 .bss 00000000 $d 00000000 l df *ABS* 00000000 SiiRoom_STM32.ino.cpp 08000184 .text 00000000 $t 0800019c .text 00000000 $d 080001a4 .text 00000000 $t 080001a4 l F .text 0000001c __tcf_6 080001bc .text 00000000 $d 080001c0 .text 00000000 $t 080001c0 l F .text 0000001c __tcf_5 080001d8 .text 00000000 $d 080001dc .text 00000000 $t 080001dc l F .text 0000000c __tcf_4 080001e4 .text 00000000 $d 080001e8 .text 00000000 $t 080001e8 l F .text 0000000c __tcf_3 080001f0 .text 00000000 $d 080001f4 .text 00000000 $t 080001f4 l F .text 0000001c __tcf_1 0800020c .text 00000000 $d 08000210 .text 00000000 $t 08000210 l F .text 0000001c __tcf_0 08000228 .text 00000000 $d 0800022c .text 00000000 $t 0800024a .text 00000000 $t 0800025c .text 00000000 $t 08000280 .text 00000000 $d 08000288 .text 00000000 $t 080002ac .text 00000000 $d 080002b4 .text 00000000 $t 080002c0 .text 00000000 $t 080002d4 .text 00000000 $d 080002e0 .text 00000000 $t 080002fc .text 00000000 $t 080002fc l F .text 0000001c __tcf_2 08000314 .text 00000000 $d 08000318 .text 00000000 $t 08000324 .text 00000000 $t 0800046c .text 00000000 $d 08000478 .text 00000000 $t 0800050c .text 00000000 $d 08000524 .text 00000000 $t 080005e4 .text 00000000 $d 08000604 .text 00000000 $t 080006a0 .text 00000000 $d 080006c4 .text 00000000 $t 080006e8 .text 00000000 $d 080006ec .text 00000000 $t 080006f8 .text 00000000 $d 080006fc .text 00000000 $t 08000720 .text 00000000 $d 08000730 .text 00000000 $t 08000750 .text 00000000 $d 0800075c .text 00000000 $t 08000790 .text 00000000 $d 0800079c .text 00000000 $t 080007c4 .text 00000000 $d 080007c8 .text 00000000 $t 08000830 .text 00000000 $d 0800084c .text 00000000 $t 08000864 .text 00000000 $d 08000870 .text 00000000 $t 080008e0 .text 00000000 $d 080008e8 .text 00000000 $t 08000960 .text 00000000 $d 08000978 .text 00000000 $t 08000980 .text 00000000 $t 080009cc .text 00000000 $d 080009dc .text 00000000 $t 08000a00 .text 00000000 $d 08000a04 .text 00000000 $t 08000ad0 .text 00000000 $d 08000afc .text 00000000 $t 08000b24 .text 00000000 $d 08000b2c .text 00000000 $t 08000be0 .text 00000000 $d 08000bfc .text 00000000 $t 08000c28 .text 00000000 $d 08000c38 .text 00000000 $t 08000c40 .text 00000000 $t 08000cd8 .text 00000000 $d 08000cfc .text 00000000 $t 08000d9c .text 00000000 $d 08000dc0 .text 00000000 $t 08000e14 .text 00000000 $d 08000e18 .text 00000000 $t 08000e2c .text 00000000 $t 08000e58 .text 00000000 $d 08000e64 .text 00000000 $t 08000e74 .text 00000000 $t 08000f14 .text 00000000 $d 08000f30 .text 00000000 $t 08001000 .text 00000000 $d 08001014 .text 00000000 $t 08001034 .text 00000000 $t 08001084 .text 00000000 $d 08001090 .text 00000000 $t 080010c4 .text 00000000 $d 080010d0 .text 00000000 $t 080010d6 .text 00000000 $t 080010f4 .text 00000000 $t 08001100 .text 00000000 $t 08001168 .text 00000000 $d 0800117c .text 00000000 $t 080012c4 .text 00000000 $d 080012f0 .text 00000000 $t 08001318 .text 00000000 $d 08001324 .text 00000000 $t 08001360 .text 00000000 $t 080013c0 .text 00000000 $d 080013c4 .text 00000000 $t 080013d8 .text 00000000 $t 08001540 .text 00000000 $d 080015a8 .text 00000000 $t 0800163c .text 00000000 $d 0800164c .text 00000000 $t 08001668 .text 00000000 $d 08001670 .text 00000000 $t 08001700 .text 00000000 $d 08001720 .text 00000000 $t 08001740 .text 00000000 $t 08001774 .text 00000000 $d 0800177c .text 00000000 $t 080018d4 .text 00000000 $d 08001904 .text 00000000 $t 0800191e .text 00000000 $t 0800192c .text 00000000 $t 0800196c .text 00000000 $d 08001974 .text 00000000 $t 080019c8 .text 00000000 $d 080019d8 .text 00000000 $t 08001a0c .text 00000000 $t 08001a44 .text 00000000 $t 08001aa4 .text 00000000 $d 08001aa8 .text 00000000 $t 08001b28 .text 00000000 $d 08001b3c .text 00000000 $t 08001b68 .text 00000000 $t 08001bb0 .text 00000000 $d 08001bbc .text 00000000 $t 08001bcc .text 00000000 $t 08001d20 .text 00000000 $d 08001d4c .text 00000000 $t 08001dbc .text 00000000 $d 08001dcc .text 00000000 $t 08001e30 .text 00000000 $d 08001e3c .text 00000000 $t 08001e94 .text 00000000 $d 08001eb0 .text 00000000 $t 08001f1c .text 00000000 $d 08001f2c .text 00000000 $t 08001f80 .text 00000000 $d 08001f90 .text 00000000 $t 08001fe4 .text 00000000 $d 08001ff4 .text 00000000 $t 08002048 .text 00000000 $d 08002058 .text 00000000 $t 08002098 .text 00000000 $d 080020a4 .text 00000000 $t 08002180 .text 00000000 $d 080021a0 .text 00000000 $t 0800220c .text 00000000 $d 08002224 .text 00000000 $t 0800222c .text 00000000 $t 08002270 .text 00000000 $d 0800227c .text 00000000 $t 080022b8 .text 00000000 $d 080022c8 .text 00000000 $t 080022d0 .text 00000000 $d 080022d8 .text 00000000 $t 080022f4 .text 00000000 $d 08002300 .text 00000000 $t 0800238c .text 00000000 $d 0800239c .text 00000000 $t 0800240c .text 00000000 $d 0800241c .text 00000000 $t 0800245c .text 00000000 $d 08002470 .text 00000000 $t 080024a0 .text 00000000 $t 08002524 .text 00000000 $d 08002540 .text 00000000 $t 08002570 .text 00000000 $d 08002574 .text 00000000 $t 080025a4 .text 00000000 $d 080025a8 .text 00000000 $t 08002674 .text 00000000 $d 08002690 .text 00000000 $t 080026bc .text 00000000 $d 080026c0 .text 00000000 $t 080027dc .text 00000000 $d 080027f8 .text 00000000 $t 080028c0 .text 00000000 $d 080028e0 .text 00000000 $t 08002918 .text 00000000 $d 08002924 .text 00000000 $t 08002a08 .text 00000000 $d 08002a34 .text 00000000 $t 08002abc .text 00000000 $d 08002ac4 .text 00000000 $t 08002acc .text 00000000 $t 08002af0 .text 00000000 $d 08002b00 .text 00000000 $t 08002c3c .text 00000000 $d 08002c60 .text 00000000 $t 08002cec .text 00000000 $d 08002cf0 .text 00000000 $t 08002cf6 .text 00000000 $t 08002d10 .text 00000000 $t 08002dbc .text 00000000 $d 08002de8 .text 00000000 $t 08002f0c .text 00000000 $d 08002f38 .text 00000000 $t 08002f84 .text 00000000 $d 08002f98 .text 00000000 $t 08002fd8 .text 00000000 $d 08002fe8 .text 00000000 $t 08002ff0 .text 00000000 $d 08002ff4 .text 00000000 $t 08003010 .text 00000000 $d 08003014 .text 00000000 $t 08003030 .text 00000000 $d 08003034 .text 00000000 $t 08003060 .text 00000000 $d 0800306c .text 00000000 $t 080030a8 .text 00000000 $d 080030b8 .text 00000000 $t 08003150 .text 00000000 $d 08003164 .text 00000000 $t 080031fc .text 00000000 $d 08003210 .text 00000000 $t 08003258 .text 00000000 $d 0800326c .text 00000000 $t 080032e8 .text 00000000 $d 080032ec .text 00000000 $t 08003350 .text 00000000 $d 08003358 .text 00000000 $t 080033b4 .text 00000000 $d 080033c8 .text 00000000 $t 0800343c .text 00000000 $d 08003454 .text 00000000 $t 08003484 .text 00000000 $d 08003488 .text 00000000 $t 08003540 .text 00000000 $d 08003550 .text 00000000 $t 080035ec .text 00000000 $d 080035fc .text 00000000 $t 080036dc .text 00000000 $d 080036fc .text 00000000 $t 08003738 .text 00000000 $d 08003744 .text 00000000 $t 080037e4 .text 00000000 $d 08003804 .text 00000000 $t 080038d8 .text 00000000 $d 080038f4 .text 00000000 $t 080039bc .text 00000000 $d 080039dc .text 00000000 $t 08003b2c .text 00000000 $d 08003b40 .text 00000000 $t 08003b74 .text 00000000 $d 08003b80 .text 00000000 $t 08003c94 .text 00000000 $d 08003cb0 .text 00000000 $t 08003cfc .text 00000000 $d 08003d00 .text 00000000 $t 08003d08 .text 00000000 $t 08003dc4 .text 00000000 $d 08003dec .text 00000000 $t 08003ed4 .text 00000000 $d 08003f04 .text 00000000 $t 08003f3c .text 00000000 $t 08003f6a .text 00000000 $t 08003f98 .text 00000000 $t 08003fcc .text 00000000 $d 08003fd8 .text 00000000 $t 080042d4 .text 00000000 $d 08004308 .text 00000000 $t 080045c8 .text 00000000 $d 08004610 .text 00000000 $t 080048c4 .text 00000000 $d 08004904 .text 00000000 $t 08004ab8 .text 00000000 $d 08004af8 .text 00000000 $t 08004be8 .text 00000000 $d 08004c0c .text 00000000 $t 08004c1e .text 00000000 $t 08004c8c .text 00000000 $t 08004d44 .text 00000000 $d 08004d58 .text 00000000 $t 08004e14 .text 00000000 $d 08004e38 .text 00000000 $t 08004ec4 .text 00000000 $d 08004ed0 .text 00000000 $t 08004f64 .text 00000000 $d 08004f70 .text 00000000 $t 08004fa0 .text 00000000 $t 080050ec .text 00000000 $d 08005104 .text 00000000 $t 08005164 .text 00000000 $d 0800516c .text 00000000 $t 0800532c .text 00000000 $d 08005388 .text 00000000 $t 080054e4 .text 00000000 $d 0800552c .text 00000000 $t 08005534 .text 00000000 $t 08005558 .text 00000000 $d 08005560 .text 00000000 $t 08005598 .text 00000000 $d 080055a0 .text 00000000 $t 080056bc .text 00000000 $d 08005700 .text 00000000 $t 08005810 .text 00000000 $d 08005848 .text 00000000 $t 080059cc .text 00000000 $d 08005a14 .text 00000000 $t 08005bfc .text 00000000 $d 08005c44 .text 00000000 $t 08005d5c .text 00000000 $d 08005d7c .text 00000000 $t 08005dac .text 00000000 $d 08005db4 .text 00000000 $t 08005f28 .text 00000000 $d 08005f64 .text 00000000 $t 08006100 .text 00000000 $d 08006130 .text 00000000 $t 08006208 .text 00000000 $d 08006224 .text 00000000 $t 08006270 .text 00000000 $d 08006284 .text 00000000 $t 0800654c .text 00000000 $d 080065a0 .text 00000000 $t 080066b4 .text 00000000 $d 080066d0 .text 00000000 $t 08006704 .text 00000000 $t 08006714 .text 00000000 $t 08006770 .text 00000000 $d 08006774 .text 00000000 $t 08006794 .text 00000000 $t 080067c8 .text 00000000 $d 080067d4 .text 00000000 $t 08006838 .text 00000000 $d 0800684c .text 00000000 $t 080068d8 .text 00000000 $d 080068ec .text 00000000 $t 08006aac .text 00000000 $d 08006ac0 .text 00000000 $t 08006ad0 .text 00000000 $t 08006bd8 .text 00000000 $d 08006be4 .text 00000000 $t 08006c04 .text 00000000 $t 08006c24 .text 00000000 $t 08006c90 .text 00000000 $d 08006c9c .text 00000000 $t 08006e40 .text 00000000 $d 08006e64 .text 00000000 $t 08006e8c .text 00000000 $d 08006e90 .text 00000000 $t 08006f34 .text 00000000 $d 08006f54 .text 00000000 $t 08006f74 .text 00000000 $d 08006f78 .text 00000000 $t 0800700c .text 00000000 $d 08007014 .text 00000000 $t 08007032 .text 00000000 $t 08007092 .text 00000000 $t 080070b0 .text 00000000 $t 08007168 .text 00000000 $d 0800716c .text 00000000 $t 08007188 .text 00000000 $t 080071b8 .text 00000000 $d 080071bc .text 00000000 $t 0800725e .text 00000000 $t 080072d6 .text 00000000 $t 080073a4 .text 00000000 $t 08007494 .text 00000000 $d 080074c0 .text 00000000 $t 08007550 .text 00000000 $d 0800756c .text 00000000 $t 0800756c l F .text 0000038c _GLOBAL__sub_I_DEBUG 080077dc .text 00000000 $d 0801eb08 .text 00000000 $d 080078f8 .text 00000000 $t 0800793c .text 00000000 $d 08007950 .text 00000000 $t 08007998 .text 00000000 $d 080079ac .text 00000000 $t 08007a00 .text 00000000 $d 08007a1c .text 00000000 $t 08007c50 .text 00000000 $d 08007c84 .text 00000000 $t 08007ed0 .text 00000000 $d 08007f00 .text 00000000 $t 08008120 .text 00000000 $d 08008138 .text 00000000 $t 0800835c .text 00000000 $d 0800837c .text 00000000 $t 08008590 .text 00000000 $d 080085a4 .text 00000000 $t 08008934 .text 00000000 $d 08008984 .text 00000000 $t 08008be0 .text 00000000 $d 08008c28 .text 00000000 $t 08008ec0 .text 00000000 $d 08008f1c .text 00000000 $t 0800915c .text 00000000 $d 08009194 .text 00000000 $t 08009410 .text 00000000 $d 08009468 .text 00000000 $t 080096e4 .text 00000000 $d 0800971c .text 00000000 $t 080099b4 .text 00000000 $d 08009a00 .text 00000000 $t 08009c90 .text 00000000 $d 08009cd4 .text 00000000 $t 08009f58 .text 00000000 $d 08009fac .text 00000000 $t 0800a220 .text 00000000 $d 0800a264 .text 00000000 $t 0800a4f4 .text 00000000 $d 0800a540 .text 00000000 $t 0800a7b8 .text 00000000 $d 0800a7f4 .text 00000000 $t 0800aa68 .text 00000000 $d 0800aab4 .text 00000000 $t 0800ad5c .text 00000000 $d 0800ada4 .text 00000000 $t 0800b024 .text 00000000 $d 0800b060 .text 00000000 $t 0800b2e0 .text 00000000 $d 0800b334 .text 00000000 $t 0800b5d0 .text 00000000 $d 0800b638 .text 00000000 $t 0800b8a0 .text 00000000 $d 0800b8bc .text 00000000 $t 0800b9ec .text 00000000 $d 0800ba04 .text 00000000 $t 0800bafc .text 00000000 $d 0800bb20 .text 00000000 $t 0800bd6c .text 00000000 $d 0800bdcc .text 00000000 $t 0800c0a4 .text 00000000 $d 2000118c .bss 00000000 $d 20001194 .bss 00000000 $d 0801fe70 .rodata 00000000 $d 2000119c .bss 00000000 $d 200011a0 .bss 00000000 $d 0801fe80 .rodata 00000000 $d 200011a4 .bss 00000000 $d 200011a5 .bss 00000000 $d 200011a6 .bss 00000000 $d 200011a7 .bss 00000000 $d 200011a8 .bss 00000000 $d 200011ac .bss 00000000 $d 200011b0 .bss 00000000 $d 200011b4 .bss 00000000 $d 200011c0 .bss 00000000 $d 0801fe94 .rodata 00000000 $d 0801fe94 l .rodata 00000010 _ZL8io_relay 20001298 .bss 00000000 $d 20001299 .bss 00000000 $d 2000129c .bss 00000000 $d 2000000c .data 00000000 $d 200012a0 .bss 00000000 $d 0801fea4 l .rodata 0000000d _ZL15adEEbtLastState 20000054 .data 00000000 $d 200012a4 .bss 00000000 $d 20000064 .data 00000000 $d 200000b4 .data 00000000 $d 200012b0 .bss 00000000 $d 200012b1 .bss 00000000 $d 200012b4 .bss 00000000 $d 200012b8 .bss 00000000 $d 200012c8 .bss 00000000 $d 200012cc .bss 00000000 $d 200000bc .data 00000000 $d 200012d8 .bss 00000000 $d 200000c0 .data 00000000 $d 200012e4 .bss 00000000 $d 200012f0 .bss 00000000 $d 200013e0 .bss 00000000 $d 080219b1 l .rodata 00000f00 _ZL7varName 080219be .rodata 00000000 $d 200000c8 .data 00000000 $d 200013e4 .bss 00000000 $d 200013e5 .bss 00000000 $d 200013e6 .bss 00000000 $d 200013e8 .bss 00000000 $d 200013ec .bss 00000000 $d 200013f0 .bss 00000000 $d 200013f4 .bss 00000000 $d 200000cc .data 00000000 $d 080228b4 .rodata 00000000 $d 080228b4 l .rodata 00000048 _ZL6io_led 200013f8 .bss 00000000 $d 200013f9 .bss 00000000 $d 200013fc .bss 00000000 $d 200000d0 .data 00000000 $d 20001400 .bss 00000000 $d 080228fc .rodata 00000000 $d 080228fc l .rodata 0000002c _ZL15adEEtimeraction 20001410 .bss 00000000 $d 20001460 .bss 00000000 $d 20001464 .bss 00000000 $d 08022928 .rodata 00000000 $d 08022928 l .rodata 00000048 _ZL8io_input 08022970 .rodata 00000000 $d 08022970 l .rodata 00000138 _ZL12adEEbtaction 20001470 .bss 00000000 $d 2000147c .bss 00000000 $d 20001480 .bss 00000000 $d 200000e4 .data 00000000 $d 20001484 .bss 00000000 $d 20001488 .bss 00000000 $d 2000148c .bss 00000000 $d 20001490 .bss 00000000 $d ....

Rogerclark
Сб 10 февраля 2018 г., 6:40
Обновлять

Шар работает нормально, потому что я могу проверить значения, используя
boot1 boot0 boot x 0 flash memory 0 1 system memory (i.e. uart boot loader) 1 1 sram

Стивестронг
Сб 10 февраля 2018 г., 17:33
Роджер, вы забыли настроить счетчик для одного режима импульса, и для подчиненного, вызванного Ti1. #define SYSTICK_RELOAD_VAL (F_CPU/1000) - 1

Rogerclark
Сб 10 февраля 2018 г., 21:04
Стив

Ух ты...

Спасибо
Я протестирую это на своей линии диммерной доски.


КСТАТИ.
На немного другой предмете...

Я не уверен, может ли захват ввода не функционировать абсолютно правильно

На данный момент мне нужно сохранить последнее значение счетчика, записанное ISR, и вычесть его из текущего значения.

Так что счетчик может быть свободным, runnnig.

Я использую код, поставляемый @Cesco, но, возможно, он пропустил что -то, чтобы удержать количество, а также для перезагрузки с 0 в начале входного импульса.

Rogerclark
Сб 10 февраля 2018 11:12
Стив

Я попробовал код, но он не делает то, что должно быть :-(

На восходящем краю PA0, PA1 переключает государство

Я попытался изменить SetCompare и Setoverflow, но это не имело никакого значения

Я думаю, что это ближе к тому, что он должен делать, но это пока не работает ;-)

Стивестронг
Сб 10 февраля 2018 11:21
Ну, это как бы делает это для меня:
ВЫХОДИТЕЛЬ ВИНДА ТРИМА - Один импульсный режим.jpg
ВЫХОД ВЫХОД.JPG (45.1 киб) просмотрено 2203 раза

Rogerclark
Сб 10 февраля 2018 г., 23:30
Стив

КСТАТИ.

Я вижу, что вы имеете в виду, не настраивая режим вообще

Timer2_base->Cr1 = (timer_cr1_opm); // один режим импульса

Инструкции, которые должны были быть в совершенно другом абзаце в руководстве


Также.

Я вижу, что вы использовали выход Timer3 на PA6

Я смену свое оборудование и попробую

Дэнниф
Солнце 11 февраля 2018 г. 12:35
Может быть проще просто пробить регистры. Таймер должен быть в режиме сравнения выхода, а не в собственном режиме.

Я до сих пор не вижу много преимуществ в том, чтобы пойти на один импульс здесь. Старый добрый тайм -аут подойдет.

Rogerclark
Солнце 11 февраля 2018 г., 3:03
Стив

Я получил это работа
void set_clock(uint32_t clk_khz, uint32_t baudrate) { set_cpu_clk(clk_khz); // see core set_ticks(clk_khz); // see core set_baudrate(baudrate); // see core } .. #define baudrate 115200; set_clock(8000, baudrate); set_clock(128000, baudrate); set_clock(48000, baudrate); set_clock(72000, baudrate); set_clock(96000, baudrate); ..

Пито
Солнце 11 февраля 2018 г. 11:19
Вне по теме:
Я думаю, что вы запускаете нагрузку «на» при нулевом переходе, и в определенное время вы выключаете нагрузку (с импульсом). На основании времени, которое вы управляете властью.
Создает ли это EMI при отключении в течение активного периода (от нуля)?
Не было бы лучше регулировать питание, включив/выключив при нулевом пересечении? Я имею в виду под подсчетом периодов синуса (примерно 100 периодов = 1 кВт, 1 период = 10 Вт)..

Дэнниф
Солнце 11 февраля 2018 г. 14:16
Вероятно, это не должно быть таким сложным.

Я бы сделал это таким образом, предполагая, что ты хочешь Пэм:

1) Инициализировать таймер в один режим импульса и прерывать вверху.
2) Установите сравнение как 1 (или 0, если оно работает), а вершина - это значение, предназначенное для правильного количества мощности;
3) В ISR, нулевой его счетчик и обновите верхнюю часть.

Таким образом, таймер будет запущен с помощью сигнала с нулевым пересечением, штифт OC сразу же запускается и снижается наверху.

Как вы можете видеть, режим однопульсного режима не так полезен: то же самое можно сделать с помощью пин-пинка + таймер в режиме переполнения.

Дэнниф
Солнце 11 февраля 2018 г. 14:18
Кстати, причина установить значение сравнения на 1 (или 0, если возможно), заключается в том, что OC сразу же стреляет.

Fredbox
Солнце 11 февраля 2018 г., 17:31
Я думаю, что вы запускаете нагрузку «на» при нулевом переходе, и в определенное время вы выключаете нагрузку (с импульсом). Для TRIAC, это наоборот. Triac выключается при нулевом пересечении и нуждается в еще одном триггере после некоторого времени задержки, чтобы установить фазовый угол. Новый триггер необходим для каждого полупродажа.

Rogerclark
Солнце 11 февраля 2018 г., 21:25
@dannyf

Один пульс работает для меня нормально.

Одним дополнительным преимуществом одного импульса является то, что с периодом импульса также можно контролировать.

Итак, в моем случае, с диммером переменного тока, период включена в 100us.

Светодиод в опто-триака, используемый в качестве драйвера для «Power Triac», на самом деле имеет ограниченный срок службы (согласно спецификации некоторых производителей). Они рекомендуют вам использовать такой низкий ток, как вы можете разумно уйти, чтобы максимизировать срок службы светодиодов.
Для MOC3021 я думаю, что это значение около 10 - 15 мА, я.e По крайней мере 10 мА, но они не рекомендуют вам запускать светодиод на уровне 50 или 60 мА, так как это сократит оперативную жизнь.

Следовательно, только использование короткого »на« Пульсе будет сохранять срок службы светодиода.


Первоначально я включил TRIAC после периода задержки, а затем выключил выход, когда STM32 получил следующий нулевой пересечение ISR.
Это связано с тем, что импульс с нулевым детектором пересечения на самом деле довольно широкий в моем случае.
Пульс снижается около 600us до нуля и снова поднимается около 600us после нуля.

Но у этого есть 2 недостатки...

Я не могу запустить триаки за последние 600us каждого цикла, так как это после того, как я уже выключил триака...

Использование на Pulse позволяет мне включить его, до 101US перед реальной точкой пересечения нуля.

Это обеспечивает очень низкую работу мощности, e.g Менее 5 Вт при грузе 4 кВт.

Я признаю, что это, супер низкая работа мощности, не так важно, но я получаю его бесплатно, используя One-Pulse...

Дэнниф
Пн 12 февраля 2018 г. 1:25
Не было бы лучше регулировать питание, включив/выключив при нулевом пересечении? Я имею в виду под подсчетом периодов синуса (примерно 100 периодов = 1 кВт, 1 период = 10 Вт).. Интересная концепция. Я не видел, чтобы люди пробовали это, однако. Я вижу, что это очень полезно, когда EMI имеет первостепенное беспокойство.

nicolas_soundforce
Сб, 3 марта 2018 г., 13:26
Это прекрасно работает, я только что попробовал это.
Мне нужен этот однопулс, чтобы начать с прерывания таймера, я думаю, мне нужно изменить входные данные этой линии:

Timer2_base->Smcr = (timer_smcr_ts_etrf | timer_smcr_sms_trigger);

Я нашел список настроек в таймере.H для регистра SMCR, но я не могу найти описание того, что они делают.

Rogerclark
Сб 3 марта 2018 г., 20:54
Я думаю, Стив’S исходный код использовал Timer1, чтобы запустить импульс на Timer2, поэтому вы сможете получить настройки режима рабов из ядра, который он разместил

КСТАТИ.

Сейчас я использую внешнюю версию пульс -триггера в одном из моих проектов, и это она’S работает хорошо, кроме двух небольших оговорков

1. Похоже, что имеет значение, какой заказ вы устанавливаете переполнение и значение сравнения . Я не уверен, почему это. Это’возможно что -то в функциях Libmaple.
Проблема, по -видимому, возникла, если я увеличил период задержки до того, как импульс был запущен, и ширина импульса необходима была шириной суммы, на которую я увеличил задержку.

Изменение порядка, в котором я установил эти значения, исправило это.

2.Ты можешь’T Измените значения сравнения или переполнения, пока таймер на самом деле считается, я не буду’Это даже думает, что приостановить это помогло

В моем случае, когда триггер для импульса является внешним сигналом, я использую цикл Whink, чтобы ждать, пока счетчик вернется в ноль, я.E, когда это’S не считается, и я меняю значения в то время.

Это может связать код в худшем случае 10 мс, но в моем проекте это не проблема

Я предполагаю, что потенциально ISR может быть настроен для запуска, когда таймер возвращается в ноль, но в идеале ISR будет настроен только для выполнения только при обновлении значений.

Кодирование нижнего уровня