Advertisement
steschm0712

Untitled

Dec 1st, 2015
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.39 KB | None | 0 0
  1. #include <stdbool.h>
  2. #include <inc/hw_memmap.h>
  3.  
  4.  
  5. #include <time.h>
  6. #include <stdlib.h>
  7.  
  8. #include <xdc/std.h>
  9. #include <xdc/runtime/System.h>
  10. #include <xdc/runtime/Error.h>
  11.  
  12. #include <ti/sysbios/BIOS.h>
  13. #include <ti/sysbios/knl/Clock.h>
  14. #include <ti/sysbios/knl/Task.h>
  15. #include <ti/sysbios/knl/Event.h>
  16. #include <ti/sysbios/knl/Semaphore.h>
  17. #include <ti/sysbios/knl/Queue.h>
  18.  
  19. #include <driverlib/gpio.h>
  20. #include <driverlib/pin_map.h>/*supplies GPIO_PIN_x*/
  21. #include <driverlib/sysctl.h>
  22. #include <EK_TM4C1294XL.h>
  23. #include <ti/drivers/SPI.h>
  24. #include <driverlib/ssi.h>
  25. #include <inc/hw_ssi.h>
  26. #include <inc/hw_memmap.h>
  27.  
  28. #include "8X8 FONT.h"
  29. #include "EK_TM4C1294XL.h"
  30. #include "Board.h"
  31.  
  32. #define DELAY 50
  33. #define IMG_SIZE 20
  34.  
  35.  
  36. void click_init(char mikrobus);
  37.  
  38. void display_image_const(char *image);
  39. void display_image(char *image);
  40.  
  41. void slide_text_double(char *slide);
  42. extern void EK_TM4C1294XL_initSPI(void);
  43.  
  44.  
  45.  
  46.  
  47. void blinkled();
  48.  
  49. char transImage1[8], transImage2[8], transImage3[8], transImage4[8];
  50. uint16_t lineAdresses[] =   { 0x100, 0x200, 0x300, 0x400, 0x500, 0x600, 0x700, 0x800 };
  51. uint8_t dataMemory[] =      { 255, 255, 255, 255, 255, 255, 255, 255 };
  52.  
  53. extern char font[];
  54.  
  55. // Serial 7-seg Display connections
  56. char i;
  57. char intro[] =  "  FUCK JAVA  ";       // Text to display
  58. uint32_t ui32SysClkFreq;
  59.  
  60.  
  61. void initGPIO();
  62.  
  63. void SSI_write(uint16_t address, uint16_t data);
  64. void SSI_write_data(uint8_t data[8]);
  65.  
  66. /*
  67.  *  ======== main ========
  68.  */
  69. Int main()
  70.  {
  71.  
  72.     Task_Params tskParams;
  73.  
  74.     ui32SysClkFreq=Board_initGeneral(120000000);
  75.     initGPIO();
  76.  
  77.  
  78.     /* create a ledblink task */
  79.     Task_Params_init(&tskParams);
  80.     tskParams.priority = 15;
  81.     tskParams.arg0 = NULL;
  82.     Task_create(&blinkled, &tskParams, NULL);
  83.  
  84.     BIOS_start();    /* does not return */
  85.     return(0);
  86. }
  87.  
  88. void initGPIO()
  89. {
  90.  
  91.     SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); /* ist das obere booster board GPIOQ ist das untere */
  92.     SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);
  93.     SPI_init();
  94.  
  95.     GPIOPinConfigure(GPIO_PD3_SSI2CLK);/*hier nur Clock, RX und TX. Slave Select wird manuell gemacht */
  96.     GPIOPinConfigure(GPIO_PD1_SSI2XDAT0);
  97.     GPIOPinConfigure(GPIO_PD0_SSI2XDAT1);
  98.  
  99.     GPIOPinTypeSSI(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_3); /*SPI aktivieren wichtig PIN 2 für SS auslassen */
  100.  
  101.     SysCtlPeripheralEnable(GPIO_PORTH_BASE); /*H2 ist der Pin für Slave select beim unteren platz waere es P5 */
  102.     GPIOPinTypeGPIOOutput(GPIO_PORTH_BASE, GPIO_PIN_2);
  103.  
  104.     SSIClockSourceSet(SSI2_BASE,SSI_CLOCK_SYSTEM); /*Clock festlegen für SPI */
  105.     SSIConfigSetExpClk(SSI2_BASE, 120000000, SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 10000000, 16); /*CPU ist auf 120 Mhz, Click board/ SPI läuft auf 10 Mhz */
  106.     SSIEnable(SSI2_BASE);
  107.  
  108.     //--init CLICK 8x8--------------------------
  109.     SSI_write(0x900, 0x00); //no decode
  110.     SSI_write(0xA00, 0x0F); //luminosity
  111.     SSI_write(0xB00, 0x07); //activate all leds
  112.     SSI_write(0xC00, 0x01); //Turn on the display
  113.     SSI_write(0xF00, 0x00); //Set test off
  114.     //----------------------------------------
  115.  
  116.  
  117.     return;
  118. }
  119. void SSI_write(uint16_t address, uint16_t data)
  120. {
  121.     GPIOPinWrite(GPIO_PORTH_BASE, GPIO_PIN_2, 0);           //set cs low
  122.     SSIDataPut(SSI2_BASE, address | data);  //send address
  123.     while (SSIBusy(SSI2_BASE));                 //finish operation
  124.     GPIOPinWrite(GPIO_PORTH_BASE, GPIO_PIN_2, GPIO_PIN_2);          //send cs high
  125. }
  126. void SSI_write_data(uint8_t data[8])
  127. {
  128.     uint8_t line;
  129.     for(line = 0; line < 8; line++)
  130.     {
  131.         if(dataMemory[line] != data[line])
  132.         {
  133.             SSI_write(lineAdresses[line], data[line]);
  134.             dataMemory[line] = data[line];
  135.         }
  136.     }
  137. }
  138.  
  139. void blinkled()
  140. {
  141.  
  142.  
  143.       slide_text_double(intro);       // Text slide animation
  144.  
  145.       while(1){
  146.         for(i = 0 ; i < IMG_SIZE ; i++){               // Play graphical sequence  forward
  147.           display_image_const(img1[i]);
  148.           display_image_const(img2[i]);
  149.           Task_sleep(120);
  150.         }
  151.         Task_sleep(200);
  152.         slide_text_double(intro);
  153.  
  154.         Task_sleep(600);
  155.         for(i = IMG_SIZE-1 ; i > 0 ; i--){             // Play graphical sequence  backward
  156.           display_image_const(img1[IMG_SIZE-1-i]);  // Reverse and play forward 8x8 R click in first mikroBUS socket
  157.           display_image_const(img2[i]);
  158.           Task_sleep(120);
  159.         }
  160.       }
  161.  
  162. }
  163.  
  164. void display_image_const(char *image) {
  165.  
  166.   SSI_write_data((int)image);
  167. }
  168.  
  169. void display_image(char *image) {
  170.  
  171.   SSI_write_data((int)image);
  172. }
  173.  
  174. void slide_text_double(char *slide) {
  175.   int i, j;
  176.   int cntr;
  177.   int tmp;
  178.   char image1, image2, image3;
  179.  
  180.   display_image_const(font+(*slide << 3));
  181.   display_image_const(font+(*(slide+1) << 3));
  182.   Task_sleep(DELAY);
  183.  
  184.   cntr = 0;
  185.   while (slide[cntr+1]) {
  186.     image1 = *(slide+cntr);
  187.     image2 = *(slide+cntr+1);
  188.     image3 = *(slide+cntr+2);
  189.  
  190.     for (i=0; i<8; i++) {
  191.       tmp = (image1 << 3) + i;
  192.       transImage1[i] = *(font+tmp);
  193.       tmp = (image2 << 3) + i;
  194.       transImage2[i] = *(font+tmp);
  195.       transImage4[i] = *(font+tmp);
  196.       tmp = (image3 << 3) + i;
  197.       transImage3[i] = *(font+tmp);
  198.     }
  199.  
  200.     for (j=7; j>=0; j--){
  201.       for (i=7; i>=1; i--){
  202.         transImage1[i] = transImage1[i-1];
  203.         transImage2[i] = transImage2[i-1];
  204.       }
  205.       transImage1[0] = transImage4[j];
  206.       transImage2[0] = transImage3[j];
  207.       display_image(transImage1);
  208.       display_image(transImage2);
  209.       Task_sleep(DELAY);
  210.     }
  211.     cntr++;
  212.   }
  213. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement