Obr. 1. Generátor impulsů
Fig. 1. Pulse generator
Zapojení je velmi jednoduché. Generátor používá mikrokontrolér PIC12F629 s taktovacím kmitočtem nastaveným externím článkem RC. Výstupní kmitočet lze nastavit trimrem P1 v rozsahu asi 2 až 170 Hz. Změnou součástek v obvodu oscilátoru (C1) lze kmitočet upravit. Impulsy jsou generovány s periodou 200 strojových taktů, všechny impulsy jsou stejně dlouhé. Výstupní kmitočet je tedy 800x nižší, než kmitočet oscilátoru.
Protože předpokládám, že mikrokontrolér budete chtít později použít i na něco jiného, uložte si před prvním programováním jeho kalibrační údaje. Jedná se především o konstantu pro nastavení oscilátoru OSCCAL, která je z výroby uložena na konci programové paměti na adrese 3FFh. V programu UP pro programátor Presto lze tuto akci zvolit v menu, jak je to s jinými programy nevím. Vždy si však můžete před naprogramováním obsah paměti přečíst a nastavení si opsat na papír. Programátor před naprogramováním součástku maže a informace o nastavení by se ztratila. Nastavení OSCCAL je pro každý kus IO jiné.
Změnou konstant v programu lze nastavit libovolný počet impulsů až do asi 65 000 (2^16). Potřebujete-li vygenerovat jiný počet impulsů, stačí změnit konstanty v programu. Myslím, že vše je zřejmé z obr. 2. Tento úsek programu je tam s malou obměnou 2x, pro každé tlačítko zvlášť.
Program v asembleru a přeložený hex soubor. Program můžete libovolně upravovat a šířit.
Circuit is very simple. The generator uses a PIC12F629 microcontroller with clock frequency set by an external RC. Output frequency can be set trimmer P1 in the range of about 2 to 170 Hz. Oscillator frequency can be adjusted if you change C1 capacitance. Pulses are generated with a period of 200 Tcy. All pulses are of equal length. Output frequency is 800 times lower than the frequency of the oscillator.
For later use save calibration data before programming device. This is essentially OSCCAL constant, which is stored on the production at the end of the program memory at 3FFh. Programmer before programming erase program memory and calibration data would be lost. OSCCAL settings is different for each piece of IC.
By changing the constants in the program can be set any number of pulses up to about 65 000 (2^16). If you need to generate a different number of pulses, just change the constants in the program. I think that everything is clear from figure 2. This segment of the program there with a small variation twice for each key separately.
Assembler source code and translated program in hex file are here. The program can be freely edited and distributed.
Obr. 2. Změna počtu impulsů N
Fig. 2. Custom set number of pulses (N)
Jaroslav Belza
18. 10. 2009