Advertisement
Mary_99

ebeddddyyyy

Dec 5th, 2020 (edited)
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.90 KB | None | 0 0
  1. #include <stdint.h>
  2. #include <stdio.h>
  3. #include <stdbool.h>
  4. #include <string.h>
  5. #include <ctype.h>
  6. #include "include/AT91SAM9263.h"
  7.  
  8. //-------------------------DBGU_IDR-----------------------------------//
  9. #define DISABLE_RXRDY_INTERRUPT AT91C_US_RXRDY
  10. #define DISABLE_TXRDY_INTERRUPT AT91C_US_TXRDY
  11. #define DISABLE_END_OF_RECIVE_TRANSFER_INPUT AT91C_US_ENDRX
  12. #define DISBLE_END_OF_TRNASMIT_INTERRUPT AT91C_US_ENDTX
  13. #define DISABLE_OVERRUN_INTERRUPT AT91C_US_OVRE
  14. #define DISABLE_FRAMING_ERROR_INTERUPT AT91C_US_FRAME
  15. #define DISABLE_PARITY_ERROR_INTERRUPT AT91C_US_PARE
  16. #define DISABLE_TXEMPTY_INTERRUPT AT91C_US_TXEMPTY
  17. #define DISABLE_TXBUFE_INTERRUPT AT91C_US_TXBUFE
  18. #define DISABLE_RXBUFF_INTERUPT AT91C_US_RXBUFF
  19. #define DISABLE_COMM_TX_INTERRUPT AT91C_US_COMM_TX //30
  20. #define DISABLE_COMM_RX_INTERRUPT AT91C_US_COMM_RX //31
  21. #define DISABLE_RECIVER AT91C_US_RXDIS
  22. #define DISABLE_TRANSIMTER AT91C_US_TXDIS
  23.  
  24. #define CAPITAL_A_ASCII 65
  25. #define LOWER_A_ASCII 97
  26. #define CAPITAL_Z_ASCII 90
  27. #define LOWER_Z_ASCII 122
  28.  
  29. void disableInterrupts(void)
  30. {
  31.   AT91C_BASE_DBGU->DBGU_IDR = (DISABLE_RXRDY_INTERRUPT|DISABLE_TXRDY_INTERRUPT|DISABLE_END_OF_RECIVE_TRANSFER_INPUT|DISBLE_END_OF_TRNASMIT_INTERRUPT|
  32.                               DISABLE_OVERRUN_INTERRUPT|DISABLE_FRAMING_ERROR_INTERUPT|DISABLE_PARITY_ERROR_INTERRUPT|DISABLE_TXEMPTY_INTERRUPT|
  33.                               DISABLE_TXBUFE_INTERRUPT|DISABLE_RXBUFF_INTERUPT|DISABLE_COMM_TX_INTERRUPT|DISABLE_COMM_RX_INTERRUPT); //desactivate debug interrupt
  34. }
  35.  
  36. void configurePeripheralPorts(void)
  37. {
  38.   AT91C_BASE_PIOC->PIO_ASR |= AT91C_PIO_PC30; // debug receiver data RxD//Pio Periherial A select Register//reciver
  39.   AT91C_BASE_PIOC->PIO_PDR |= AT91C_PIO_PC30; //PIO Disable Register
  40.  
  41.   AT91C_BASE_PIOC->PIO_ASR |= AT91C_PIO_PC31; //debug receiver data TXD //transmitter
  42.   AT91C_BASE_PIOC->PIO_PDR |= AT91C_PIO_PC31;
  43. }
  44.  
  45. void turnOffReciver(void)
  46. {
  47.   AT91C_BASE_DBGU->DBGU_CR |= AT91C_US_RSTRX; //reset and turn off/disable receiver
  48. }
  49.  
  50. void turnOffTransmitter(void)
  51. {
  52.     AT91C_BASE_DBGU->DBGU_CR |= AT91C_US_RSTTX; // reset and turn off/disable treansmitter
  53. }
  54.  
  55. void disabeReciver(void)
  56. {
  57.   AT91C_BASE_DBGU->DBGU_CR |= DISABLE_RECIVER; //reset and turn off/disable receiver
  58. }
  59.  
  60. void disableTransmitter(void)
  61. {
  62.     AT91C_BASE_DBGU->DBGU_CR |= DISABLE_TRANSIMTER; // reset and disable treansmitter
  63. }
  64.  
  65. void configureThroughput(void)
  66. {
  67.   AT91C_BASE_DBGU->DBGU_BRGR = 115200; // MCK mster CLock/ (CD //clock Divisor *16) //baud Rate Generator Register //speed of transmiition
  68. }
  69.  
  70. void configureOperationMode(void)
  71. {
  72.     AT91C_BASE_DBGU->DBGU_MR = AT91C_US_CHMODE_NORMAL| AT91C_US_PAR_NONE ; // set nomral mode 14 15 bit 0 0 // set no parity
  73. }
  74.  
  75. void turnOnReciver(void)
  76. {
  77.     AT91C_BASE_DBGU->DBGU_CR |= AT91C_US_RXEN;
  78. }
  79.  
  80. void turnOnTransmitter(void)
  81. {
  82.   AT91C_BASE_DBGU->DBGU_CR |= AT91C_US_TXEN;
  83. }
  84.  
  85. void dbguInit(void)
  86. {
  87.   disableInterrupts();
  88.   turnOffReciver();
  89.   turnOffTransmitter();
  90.   disabeReciver();
  91.   disableTransmitter();
  92.   configurePeripheralPorts();
  93.   configureThroughput();
  94.   configureOperationMode();
  95.   turnOnReciver();
  96.   turnOnTransmitter();
  97. }
  98.  
  99.  
  100. void dbguPrintAscii(const char buffer)
  101. {
  102.     while(!(AT91C_BASE_DBGU->DBGU_CSR & DISABLE_TXRDY_INTERRUPT)){}; //wait until Tx buffer busy - checj TXRDY flag
  103.     //CSR channel status regster //TXRDY Interrupt
  104.     AT91C_BASE_DBGU->DBGU_THR = buffer; //write a singel char to Transmitter Holding Register
  105. }
  106.  
  107. void dbguReadAscii(char* buffer)
  108. {
  109.     while(!(AT91C_BASE_DBGU->DBGU_CSR & DISABLE_RXRDY_INTERRUPT)){}//data avaible
  110.     buffer = (char*)AT91C_BASE_DBGU->DBGU_THR;
  111. }
  112.  
  113. bool isCapital(char letter)
  114. {
  115.   return (letter >= CAPITAL_A_ASCII && letter <= CAPITAL_Z_ASCII);
  116. }
  117.  
  118. bool isLower(char letter)
  119. {
  120.   return (letter >= LOWER_A_ASCII  && letter <= LOWER_Z_ASCII );
  121. }
  122.  
  123. char letterConversion(char letter)
  124. {
  125.   if(isCapital(letter))
  126.   {
  127.     return tolower(letter);
  128.   }
  129.   else if(isLower(letter))
  130.   {
  131.     return toupper(letter);
  132.   }
  133.   else
  134.   {
  135.     return letter;
  136.   }
  137. }
  138.  
  139. void printChars()
  140. {
  141.   char upper;
  142.   char lower;
  143.   char space = '\t';
  144.   for(upper ='A'; upper<= 'Z';++upper)
  145.   {
  146.     dbguPrintAscii(upper);
  147.     dbguPrintAscii(space);
  148.   }
  149.   for (lower ='a'; lower<= 'z';++lower)
  150.   {
  151.     dbguPrintAscii(lower);
  152.     dbguPrintAscii(space);
  153.   }
  154. }
  155. void printMessage(char*StringToPrint)
  156. {
  157.   int iterrator = 0;
  158.   while(StringToPrint[iterrator] != '\0')
  159.   {
  160.     while(!(AT91C_BASE_DBGU->DBGU_CSR & DISABLE_TXRDY_INTERRUPT)){}; //wait until Tx buffer busy - checj TXRDY flag
  161.     //CSR channel status regster //TXRDY Interrupt
  162.     AT91C_BASE_DBGU->DBGU_THR = StringToPrint[iterrator]; //write a singel char to Transmitter Holding Register
  163.     iterrator++;
  164.   }
  165. }
  166.  
  167. int main()
  168. {
  169.   dbguInit();
  170.   char newLine = '\n';
  171.   printChars();
  172.   dbguPrintAscii(newLine);
  173.   char input2;
  174.  
  175.   char* text = "My String to print";#include <stdint.h>
  176. #include <stdio.h>
  177. #include <stdbool.h>
  178. #include <string.h>
  179. #include <ctype.h>
  180. #include "include/AT91SAM9263.h"
  181.  
  182. //-------------------------DBGU_IDR-----------------------------------//
  183. #define DISABLE_RXRDY_INTERRUPT AT91C_US_RXRDY
  184. #define DISABLE_TXRDY_INTERRUPT AT91C_US_TXRDY
  185. #define DISABLE_END_OF_RECIVE_TRANSFER_INPUT AT91C_US_ENDRX
  186. #define DISBLE_END_OF_TRNASMIT_INTERRUPT AT91C_US_ENDTX
  187. #define DISABLE_OVERRUN_INTERRUPT AT91C_US_OVRE
  188. #define DISABLE_FRAMING_ERROR_INTERUPT AT91C_US_FRAME
  189. #define DISABLE_PARITY_ERROR_INTERRUPT AT91C_US_PARE
  190. #define DISABLE_TXEMPTY_INTERRUPT AT91C_US_TXEMPTY
  191. #define DISABLE_TXBUFE_INTERRUPT AT91C_US_TXBUFE
  192. #define DISABLE_RXBUFF_INTERUPT AT91C_US_RXBUFF
  193. #define COMM_TX_INTERRUPT AT91C_US_COMM_TX //30
  194. #define COMM_RX_INTERRUPT AT91C_US_COMM_RX //31
  195.  
  196. #define CAPITAL_A_ASCII 65
  197. #define LOWER_A_ASCII 97
  198. #define CAPITAL_Z_ASCII 90
  199. #define LOWER_Z_ASCII 122
  200.  
  201. void disableInterrupts(void)
  202. {
  203.   AT91C_BASE_DBGU->DBGU_IDR = (DISABLE_RXRDY_INTERRUPT|DISABLE_TXRDY_INTERRUPT|DISABLE_END_OF_RECIVE_TRANSFER_INPUT|DISBLE_END_OF_TRNASMIT_INTERRUPT|
  204.                               DISABLE_OVERRUN_INTERRUPT|DISABLE_FRAMING_ERROR_INTERUPT|DISABLE_PARITY_ERROR_INTERRUPT|DISABLE_TXEMPTY_INTERRUPT|
  205.                               DISABLE_TXBUFE_INTERRUPT|DISABLE_RXBUFF_INTERUPT|COMM_TX_INTERRUPT|COMM_RX_INTERRUPT); //desactivate debug interrupt
  206. }
  207.  
  208. void configurePeripheralPorts(void)
  209. {
  210.   AT91C_BASE_PIOC->PIO_ASR |= AT91C_PIO_PC30; // debug receiver data RxD//Pio Periherial A select Register//reciver
  211.   AT91C_BASE_PIOC->PIO_PDR |= AT91C_PIO_PC30; //PIO Disable Register
  212.  
  213.   AT91C_BASE_PIOC->PIO_ASR |= AT91C_PIO_PC31; //debug receiver data TXD //transmitter
  214.   AT91C_BASE_PIOC->PIO_PDR |= AT91C_PIO_PC31;
  215. }
  216.  
  217. void turnOffReciver(void)
  218. {
  219.   AT91C_BASE_DBGU->DBGU_CR |= AT91C_US_RSTRX; //reset and turn off/disable receiver
  220. }
  221.  
  222. void turnOffTransmitter(void)
  223. {
  224.     AT91C_BASE_DBGU->DBGU_CR |= AT91C_US_RSTTX; // reset and turn off/disable treansmitter
  225. }
  226.  
  227. void configureThroughput(void)
  228. {
  229.   AT91C_BASE_DBGU->DBGU_BRGR = 115200; // MCK mster CLock/ (CD //clock Divisor *16) //baud Rate Generator Register //speed of transmiition
  230. }
  231.  
  232. void configureOperationMode(void)
  233. {
  234.     AT91C_BASE_DBGU->DBGU_MR = AT91C_US_CHMODE_NORMAL| AT91C_US_PAR_NONE ; // set nomral mode 14 15 bit 0 0 // set no parity
  235. }
  236.  
  237. void turnOnReciver(void)
  238. {
  239.     AT91C_BASE_DBGU->DBGU_CR |= AT91C_US_RXEN;
  240. }
  241.  
  242. void turnOnTransmitter(void)
  243. {
  244.   AT91C_BASE_DBGU->DBGU_CR |= AT91C_US_TXEN;
  245. }
  246.  
  247. void dbguInit(void)
  248. {
  249.   disableInterrupts();
  250.   turnOffReciver();
  251.   turnOffTransmitter();
  252.   configurePeripheralPorts();
  253.   configureThroughput();
  254.   configureOperationMode();
  255.   turnOnReciver();
  256.   turnOnTransmitter();
  257. }
  258.  
  259.  
  260. void dbguPrintAscii(const char buffer)
  261. {
  262.     while(!(AT91C_BASE_DBGU->DBGU_CSR & DISABLE_TXRDY_INTERRUPT)){}; //wait until Tx buffer busy - checj TXRDY flag
  263.     //CSR channel status regster //TXRDY Interrupt
  264.     AT91C_BASE_DBGU->DBGU_THR = buffer; //write a singel char to Transmitter Holding Register
  265. }
  266.  
  267. void dbguReadAscii(char* buffer)
  268. {
  269.     while(!(AT91C_BASE_DBGU->DBGU_CSR & DISABLE_RXRDY_INTERRUPT)){}//data avaible
  270.     buffer = (char*)AT91C_BASE_DBGU->DBGU_THR;
  271. }
  272.  
  273. bool isCapital(char letter)
  274. {
  275.   return (letter >= CAPITAL_A_ASCII && letter <= CAPITAL_Z_ASCII);
  276. }
  277.  
  278. bool isLower(char letter)
  279. {
  280.   return (letter >= LOWER_A_ASCII  && letter <= LOWER_Z_ASCII );
  281. }
  282.  
  283. char letterConversion(char letter)
  284. {
  285.   if(isCapital(letter))
  286.   {
  287.     return tolower(letter);
  288.   }
  289.   else if(isLower(letter))
  290.   {
  291.     return toupper(letter);
  292.   }
  293.   else
  294.   {
  295.     return letter;
  296.   }
  297. }
  298.  
  299. void printChars()
  300. {
  301.   char upper;
  302.   char lower;
  303.   char space = '\t';
  304.   for(upper ='A'; upper<= 'Z';++upper)
  305.   {
  306.     dbguPrintAscii(upper);
  307.     dbguPrintAscii(space);
  308.   }
  309.   for (lower ='a'; lower<= 'z';++lower)
  310.   {
  311.     dbguPrintAscii(lower);
  312.     dbguPrintAscii(space);
  313.   }
  314. }
  315. void printMessage(char*StringToPrint)
  316. {
  317.   int iterrator = 0;
  318.   while(StringToPrint[iterrator] != '\0')
  319.   {
  320.     while(!(AT91C_BASE_DBGU->DBGU_CSR & DISABLE_TXRDY_INTERRUPT)){}; //wait until Tx buffer busy - checj TXRDY flag
  321.     //CSR channel status regster //TXRDY Interrupt
  322.     AT91C_BASE_DBGU->DBGU_THR = StringToPrint[iterrator]; //write a singel char to Transmitter Holding Register
  323.     iterrator++;
  324.   }
  325. }
  326.  
  327. int main()
  328. {
  329.   dbguInit();
  330.   char newLine = '\n';
  331.   printChars();
  332.   dbguPrintAscii(newLine);
  333.  
  334.   char* text = "My String to print";
  335.   dbguPrintAscii(newLine);
  336.   dbguPrintAscii(newLine);
  337.   printMessage(text);
  338.   dbguPrintAscii(newLine);
  339.   dbguPrintAscii(newLine);
  340.   char input = 't';
  341.   input = letterConversion(input);
  342.   dbguPrintAscii(input);
  343.   dbguReadAscii(&input);
  344.   return 0;
  345. }
  346.  
  347.   dbguPrintAscii(newLine);
  348.   dbguPrintAscii(newLine);
  349.   printMessage(text);
  350.   dbguPrintAscii(newLine);
  351.   dbguPrintAscii(newLine);
  352.   char input = 't';
  353.   input = letterConversion(input);
  354.   dbguPrintAscii(input);
  355.   dbguReadAscii(&input);
  356.   /*dbguPrintAscii(input2);
  357.   input2 = letterConversion(input2);
  358.   dbguPrintAscii(input2);*/
  359.  
  360.   return 0;
  361. }
  362.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement