Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdint.h>
- #include "tm4c123gh6pm.h"
- //#include "emp_type.h"
- #include "string.h"
- #define SYSTICK_RELOAD_VALUE 80000 // 5 mS
- #define NVIC_INT_CTRL_PEND_SYST 0x04000000 // Pend a systick int
- #define NVIC_INT_CTRL_UNPEND_SYST 0x02000000 // Unpend a systick int
- #define SYSTICK_PRIORITY 0x7E
- static int a,b;
- static int aa,or,sw,n,b,xd,i;
- void SysTick_Handler(void)
- {
- a++;
- //auto
- if(a>=400)
- {
- aa=1;
- }
- if(aa==1 && a>50)
- {
- if(n>=0)aa=0;
- a=0;
- switch (i)
- {
- case 0:
- GPIO_PORTF_DATA_R=0x00;
- i++;
- break;
- case 1:
- GPIO_PORTF_DATA_R=0x02;
- break;
- case 2:
- GPIO_PORTF_DATA_R=0x04;
- break;
- case 3:
- GPIO_PORTF_DATA_R=0x06;
- break;
- case 4:
- GPIO_PORTF_DATA_R=0x08;
- break;
- case 5:
- GPIO_PORTF_DATA_R=0x0A;
- break;
- case 6:
- GPIO_PORTF_DATA_R=0x0C;
- break;
- case 7:
- GPIO_PORTF_DATA_R=0x0E;
- i=0;
- break;
- }
- if (i!=0)i++;
- }
- if(0)
- {
- // counting buttons
- //if (a>30 && b==1)
- //{
- // n++;
- // xd=1;
- // a=0;
- //}
- //activating switfh
- if(aa==0 && or==0)sw=1;
- //activing order reverse
- if(n==2)or==1;
- //switch
- if (sw==1 && b==1)
- {
- if(GPIO_PORTF_DATA_R!=0x0E) //if it is at the end, goes to 0x00;
- {
- GPIO_PORTF_DATA_R=0x00;
- }
- else
- {
- GPIO_PORTF_DATA_R++; //next diode
- }
- }
- //reverse
- if (or==1 && b==1)
- {
- if(GPIO_PORTF_DATA_R!=0x00) //if it is at the end, goes to 0x0E;
- {
- GPIO_PORTF_DATA_R=0x0E;
- }
- else
- {
- GPIO_PORTF_DATA_R--; //next diode
- }
- }
- }
- }
- void enable_global_int()
- {
- // enable interrupts.
- __asm("cpsie i");
- }
- void disable_global_int()
- {
- // disable interrupts.
- __asm("cpsid i");
- }
- void SysTickInit()
- {
- // Disable systick timer
- NVIC_ST_CTRL_R &= ~(NVIC_ST_CTRL_ENABLE);
- // Set current systick counter to reload value
- NVIC_ST_CURRENT_R = SYSTICK_RELOAD_VALUE;
- // Set Reload value, Systick reload register
- NVIC_ST_RELOAD_R = SYSTICK_RELOAD_VALUE;
- // NVIC systick setup, vector number 15
- // Clear pending systick interrupt request
- NVIC_INT_CTRL_R |= NVIC_INT_CTRL_UNPEND_SYST;
- // Set systick priority to 0x10, first clear then set.
- NVIC_SYS_PRI3_R &= ~(NVIC_SYS_PRI3_TICK_M);
- NVIC_SYS_PRI3_R |= (NVIC_SYS_PRI3_TICK_M & (SYSTICK_PRIORITY<<NVIC_SYS_PRI3_TICK_S));
- // Select systick clock source, Use core clock
- NVIC_ST_CTRL_R |= NVIC_ST_CTRL_CLK_SRC;
- // Enable systick interrupt
- NVIC_ST_CTRL_R |= NVIC_ST_CTRL_INTEN;
- // Enable and start timer
- NVIC_ST_CTRL_R |= NVIC_ST_CTRL_ENABLE;
- }
- void Reset()
- {
- // Disable systick timer
- NVIC_ST_CTRL_R &= ~(NVIC_ST_CTRL_ENABLE);
- // Set current systick counter to reload value
- NVIC_ST_CURRENT_R = 0;
- NVIC_ST_RELOAD_R = SYSTICK_RELOAD_VALUE;
- NVIC_INT_CTRL_R |= NVIC_INT_CTRL_UNPEND_SYST;
- NVIC_ST_CTRL_R |= NVIC_ST_CTRL_ENABLE;
- }
- void Off()
- {
- // Disable systick timer
- NVIC_ST_CTRL_R &= ~(NVIC_ST_CTRL_ENABLE);
- }
- int main(void)
- {
- enable_global_int();
- int dummy;
- SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOF;
- dummy = SYSCTL_RCGC2_R;
- GPIO_PORTF_DIR_R=0x0E; //DDRA
- GPIO_PORTF_DEN_R=0x1E; //like PORTA
- GPIO_PORTF_LOCK_R = 0x4C4F434B; // Unlock the CR register
- GPIO_PORTF_CR_R = 0xFF; // Enable overwrite of PUR to FP0
- GPIO_PORTF_PUR_R=0x10; //PULL UP HERE
- int i=0;
- aa=or=sw=n=b=xd=i=a=0;
- GPIO_PORTF_DATA_R=0x00;
- sw=1;
- //GPIO_PORTF_DATA_R=0xFF;
- SysTickInit();
- Off();
- while(1)
- {
- if (GPIO_PORTF_DATA_R & 0x10) //nie wciskam
- {
- if(aa==0)
- {
- Off();
- a=0;
- }
- b=0;
- }
- else //wciskam xd
- {
- if(b==0)
- {
- //n++;
- b=1;
- Reset();
- }
- //if(a>399)GPIO_PORTF_DATA_R=0x0E;
- //else
- // GPIO_PORTF_DATA_R=0x02;
- // if(xd==0)
- // {
- // b=1;
- // }
- }
- }
- return(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement