stankovic96

Prijem

Mar 6th, 2019
393
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.25 KB | None | 0 0
  1. //PRIJEMNI DEO
  2. //Baudrate 1200 za serijsku komunikaciju
  3. #include<p30fxxxx.h>
  4. #include "outcompare.h" //naknadno ubacen h fajl za PWM
  5. #include "timer2.h"
  6. _FOSC(CSW_FSCM_OFF & XT_PLL4);//instruction takt je isti kao i kristal
  7. _FWDT(WDT_OFF);
  8.  
  9. unsigned char tempRX,prevRX;
  10. unsigned int broj1,broj2,r;
  11. unsigned char poruka[10]="";
  12. unsigned char i=0,br=0;
  13. unsigned char enable=1;
  14. unsigned char num_of_zeros=0;
  15. unsigned char stop=1;
  16. unsigned char turbo=0;
  17.  
  18. void __attribute__((__interrupt__)) _T2Interrupt(void)
  19. {
  20.     TMR2 =0;
  21.     IFS0bits.T2IF = 0;
  22. }
  23.  
  24. void initUART1(void)
  25. {
  26. U1BRG=0x0207;//ovim odredjujemo baudrate 1200
  27.                
  28. U1MODEbits.ALTIO=0;//biramo koje pinove koristimo za komunikaciju osnovne ili alternativne
  29.  
  30. IEC0bits.U1RXIE=1;//omogucavamo rx1 interupt
  31.  
  32. U1STA&=0xfffc;
  33.  
  34. U1MODEbits.UARTEN=1;//ukljucujemo ovaj modul
  35.  
  36. U1STAbits.UTXEN=1;//ukljucujemo predaju
  37. }
  38.  
  39.  
  40. void __attribute__((__interrupt__)) _U1RXInterrupt(void)
  41. {
  42.     //prima 000abcde (tri nule i 5 karaktera u zavisnosti od pritisnutog tastera)
  43.     IFS0bits.U1RXIF = 0;
  44.     prevRX=tempRX;
  45.     tempRX=U1RXREG;
  46.     if(tempRX=='0' && prevRX=='0'){
  47.         num_of_zeros++;//broji koliko puta se pojavljuje "00"
  48.         LATDbits.LATD2=~LATDbits.LATD2;//signalna LED dioda treperi
  49.     }
  50.     if(num_of_zeros>=2){
  51.         poruka[i]=tempRX;//smesta u niz karakter po karakter kada detektuje 3 nule
  52.         i++;//brojac za niz
  53.         if(i>5){//kada smesti 5 karaktera prekida unos u niz
  54.             num_of_zeros=0;
  55.             i=0;  
  56.         }
  57.     }  
  58. }
  59.  
  60. void WriteUART1(unsigned int data)
  61. {
  62.       while(!U1STAbits.TRMT);
  63.  
  64.     if(U1MODEbits.PDSEL == 3)
  65.         U1TXREG = data;
  66.     else
  67.         U1TXREG = data & 0xFF;
  68. }
  69. void RS232_putst(register const char *str)
  70. {
  71.   while((*str)!=0)
  72.   {
  73.     WriteUART1(*str);
  74.     if (*str==13) WriteUART1(10);
  75.     if (*str==10) WriteUART1(13);
  76.     str++;
  77.   }
  78. }
  79.  
  80.  
  81. int main(void)
  82.     {
  83.         initUART1();
  84.         WriteUART1('t');
  85.        
  86.         for(broj1=0;broj1<10000;broj1++);
  87.         //LED bele i crvene RB0,RB1,RB2,RB3
  88.         ADPCFGbits.PCFG0=1;//digitalni
  89.         ADPCFGbits.PCFG1=1;
  90.         ADPCFGbits.PCFG2=1;
  91.         ADPCFGbits.PCFG3=1;
  92.        
  93.         TRISBbits.TRISB0=0;//izlazni
  94.         TRISBbits.TRISB1=0;
  95.         TRISBbits.TRISB2=0;
  96.         TRISBbits.TRISB3=0;
  97.         //----------------------------------
  98.     //Za drajver L298N in1,in2,in3,in4
  99.         ADPCFGbits.PCFG9=1;//digitalni
  100.         ADPCFGbits.PCFG10=1;
  101.         ADPCFGbits.PCFG11=1;
  102.         ADPCFGbits.PCFG12=1;
  103.        
  104.         TRISBbits.TRISB9=0;//izlazni
  105.         TRISBbits.TRISB10=0;
  106.         TRISBbits.TRISB11=0;
  107.         TRISBbits.TRISB12=0;
  108.         //-----------------------------------
  109.  
  110.         TRISDbits.TRISD2=0;//LED signalna RD2
  111.         TRISDbits.TRISD3=0;//sirena RD3
  112.         //-----------------------------------
  113.  
  114.     //postavljamo default vrednosti
  115.         LATBbits.LATB9=0;//RB9,RB10,RB11,RB12 za upravljanje L298
  116.         LATBbits.LATB10=0;
  117.         LATBbits.LATB11=0;
  118.         LATBbits.LATB12=0;
  119.        
  120.         LATBbits.LATB0=0;//LED diode ugasene
  121.         LATBbits.LATB1=0;
  122.         LATBbits.LATB2=0;
  123.         LATBbits.LATB3=0;
  124.        
  125.         TRISDbits.TRISD0=0;//konfigurisemo kao izlaz za pwm
  126.  
  127.         //za PWM koristimo RD0 i RD1
  128.         PR2=2499;//odredjuje frekvenciju po formuli
  129.        
  130.         OC1RS=20;//postavimo pwm
  131.         OC1R=1000;//inicijalni pwm pri paljenju samo
  132.         OC1CON =OC_IDLE_CON & OC_TIMER2_SRC & OC_PWM_FAULT_PIN_DISABLE& T2_PS_1_256;//konfiguracija pwma
  133.        
  134.         OC2RS=20;//postavimo pwm
  135.         OC2R=1000;//inicijalni pwm pri paljenju samo
  136.         OC2CON =OC_IDLE_CON & OC_TIMER2_SRC & OC_PWM_FAULT_PIN_DISABLE& T2_PS_1_256;//konfiguracija pwma
  137.        
  138.        
  139.         T2CONbits.TON=1;//ukljucujemo timer koji koristi
  140.        
  141.         //r=2500;
  142.         r=2500;
  143.         OC1RS=r;//ovim postavljamo faktor ispune
  144.         OC2RS=r;
  145.        
  146.         for(broj1=0;broj1<700;broj1++)
  147.         for(broj2=0;broj2<3000;broj2++);
  148.        
  149.  
  150.     while(1)
  151.     {
  152.         if(stop==1){
  153.            stop=0;
  154.            
  155.            WriteUART1('s');
  156.         }
  157.            
  158.            
  159.            
  160.         if(poruka[1]=='n' && poruka[2]=='a' && poruka[3]=='p' && poruka[4]=='r'&& poruka[5]=='e' && stop==0){
  161.             WriteUART1('1');
  162.            
  163.            
  164.             LATBbits.LATB9=1;
  165.             LATBbits.LATB10=0;
  166.             LATBbits.LATB11=1;
  167.             LATBbits.LATB12=0;
  168.             poruka[1]=' ';
  169.             poruka[2]=' ';
  170.             poruka[3]=' ';
  171.             poruka[4]=' ';
  172.             poruka[5]=' ';
  173.             stop=1;
  174.         }//000napred
  175.            
  176.         else if(poruka[1]=='n' && poruka[2]=='a' && poruka[3]=='z' && poruka[4]=='a'&& poruka[5]=='d'&& stop==0){  
  177.                  
  178.             WriteUART1('2');      
  179.             LATBbits.LATB9=0;  
  180.             LATBbits.LATB10=1;  
  181.             LATBbits.LATB11=0;  
  182.             LATBbits.LATB12=1;
  183.             poruka[1]=' ';
  184.             poruka[2]=' ';
  185.             poruka[3]=' ';
  186.             poruka[4]=' ';
  187.             poruka[5]=' ';
  188.             stop=1;
  189.         }
  190.        
  191.         else if(poruka[1]=='l' && poruka[2]=='e' && poruka[3]=='v' && poruka[4]=='o'&& poruka[5]=='m'&& stop==0){
  192.            WriteUART1('3');
  193.            LATBbits.LATB9=0;
  194.            LATBbits.LATB10=1;
  195.            LATBbits.LATB11=1;
  196.            LATBbits.LATB12=0;
  197.            poruka[1]=' ';
  198.            poruka[2]=' ';
  199.            poruka[3]=' ';
  200.            poruka[4]=' ';
  201.            poruka[5]=' ';
  202.            stop=1;
  203.         }
  204.         else if(poruka[1]=='d' && poruka[2]=='e' && poruka[3]=='s' && poruka[4]=='n'&& poruka[5]=='o'&& stop==0){
  205.            WriteUART1('4');
  206.            LATBbits.LATB9=1;
  207.            LATBbits.LATB10=0;
  208.            LATBbits.LATB11=0;
  209.            LATBbits.LATB12=1;
  210.            poruka[1]=' ';
  211.            poruka[2]=' ';
  212.            poruka[3]=' ';
  213.            poruka[4]=' ';
  214.            poruka[5]=' ';
  215.            stop=1;
  216.         }
  217.        
  218.         else if(poruka[1]=='t' && poruka[2]=='u' && poruka[3]=='r' && poruka[4]=='b'&& poruka[5]=='o'&& stop==0){
  219.             if(turbo==1){
  220.                 turbo=0;
  221.                 OC1RS=2500;//ovim postavljamo pwm
  222.                 OC2RS=2500;
  223.                
  224.             }
  225.                
  226.             else{
  227.                 turbo=1;
  228.                 OC1RS=1900;//ovim postavljamo pwm
  229.                 OC2RS=1900;
  230.                
  231.             }
  232.             poruka[1]=' ';
  233.             poruka[2]=' ';
  234.             poruka[3]=' ';
  235.             poruka[4]=' ';
  236.             poruka[5]=' ';
  237.             WriteUART1('5');
  238.             for(broj1=0;broj1<1000;broj1++)
  239.             for(broj2=0;broj2<600;broj2++);
  240.            
  241.         }
  242.         else if(poruka[1]=='l' && poruka[2]=='i' && poruka[3]=='g' && poruka[4]=='h'&& poruka[5]=='t'&& stop==0){
  243.             WriteUART1('6');
  244.             LATBbits.LATB0=~LATBbits.LATB0;
  245.             LATBbits.LATB1=~LATBbits.LATB1;
  246.             LATBbits.LATB2=~LATBbits.LATB2;
  247.             LATBbits.LATB3=~LATBbits.LATB3;
  248.             for(broj1=0;broj1<1000;broj1++)
  249.             for(broj2=0;broj2<600;broj2++);
  250.             poruka[1]=' ';
  251.             poruka[2]=' ';
  252.             poruka[3]=' ';
  253.             poruka[4]=' ';
  254.             poruka[5]=' ';
  255.            
  256.         }  
  257.         else if(poruka[1]=='s' && poruka[2]=='i' && poruka[3]=='r' && poruka[4]=='e'&& poruka[5]=='n'&& stop==0){
  258.             LATDbits.LATD3=1;
  259.             WriteUART1('7');
  260.             poruka[1]=' ';
  261.             poruka[2]=' ';
  262.             poruka[3]=' ';
  263.             poruka[4]=' ';
  264.             poruka[5]=' ';
  265.             for(broj1=0;broj1<1000;broj1++)
  266.             for(broj2=0;broj2<500;broj2++);
  267.         }
  268.        
  269.        for(broj1=0;broj1<1000;broj1++)
  270.             for(broj2=0;broj2<200;broj2++);//200
  271.        LATDbits.LATD3=0;//sirena
  272.            
  273.        LATBbits.LATB9=0;  
  274.        LATBbits.LATB10=0;
  275.        LATBbits.LATB11=0;
  276.        LATBbits.LATB12=0;    
  277. //WriteUART1('s');
  278. /*
  279. if(tempRX){
  280.     WriteUART1(tempRX);
  281.     tempRX=0;
  282. }  
  283.                 WriteUART1(poruka[1]);
  284.                 WriteUART1(poruka[2]);
  285.                 WriteUART1(poruka[3]);
  286.                 WriteUART1(poruka[4]);
  287.                 WriteUART1(poruka[5]);
  288. */
  289.            
  290.     }//od whilea
  291. return 0;
  292. }//od maina
Advertisement
Add Comment
Please, Sign In to add comment