/* * File: citace.c * Author: kubalik * * Created on 20. prosince 2015, 16:43 */ #include "p33EV32GM002.h" // je to v C:\Program Files (x86)\Microchip\xc16\v1.24\support\dsPIC33E\h // od radky 8852 je definovani tech TRIS // dale si udelejte CntrlF a hledejet ve file *.h /* nasledujici makra nastavuji oscilator * hledame v header file * * Macros for setting device configuration registers * pin OSC1 jako I/O pin * vypinaji Watchdog - opet se podivejte do header file, co vsecno se da nastavit * */ _FOSCSEL( FNOSC_FRC ) _FOSC( OSCIOFNC_ON & IOL1WAY_OFF) _FWDT( FWDTEN_OFF ) /* * */ int main() { int i; i = 0; /* sem si dejte breakpoint ! */ TRISA = 0x0; // zapisujeme do celeho registru najednou TRISB = 0x00; PORTB = 0; PORTA = 0; ANSELB = 0; ANSELA = 0; /* TIMER T2 * T2CON 1X1- ---- -010 0-0- * | | ||| | | * | | ||| | internal clock - FRC oscil F je 7.37 / 2 * | | ||| T32 - mame 16bitoc\ve citace * | | ||| * | | |TCKPS 10 - delime 64 u preddelicky * | | TGATE je vypnuto * | TSIDLE pracujeme i v idle stavu - to je ted dost jedno * TON citac zapnut * * chceme periodu 0.5 sec - 2 Hz * do citace leze 7.37 / 2 = 3.685MHz = 3685000 Hz * na vystupu chceme 2 Hz, takye delime celkem 3685000 / 2 = 1842500 krat * tento delici pomer se posklada z delicky a vlastniho citace * delicka deli 64, na citac tedy zbyva 1842500 / 64 = 28346,15384 * do registru PR vlozime 28346 * */ PR2 = 28346; T2CON = 0xA020; while(1) { asm(" btg PORTA, #0 " ); asm(" btg PORTA, #1 " ); asm(" btg PORTA, #2 " ); if( IFS0bits.T2IF ) { // pretekl citac ? asm(" bclr IFS0, #7 " ); // nuluji bit pro preteceni citace i = ! i; if( i ) PORTB = 0xffff; else PORTB = 0; } } return 0; }