Advertisement
Monika__

dbgu embedded

Dec 6th, 2020 (edited)
682
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.78 KB | None | 0 0
  1. #include <stdint.h>
  2. #include <stdbool.h>
  3. #include "include/AT91SAM9263.h"
  4.  
  5. #define RXRDY AT91C_US_RXRDY  // (DBGU) RXRDY Interrupt
  6. #define TXRDY AT91C_US_TXRDY   // (DBGU) TXRDY Interrupt
  7. #define ENDRX AT91C_US_ENDRX // (DBGU) End of Receive Transfer Interrupt
  8. #define ENDTX AT91C_US_ENDTX  // (DBGU) End of Transmit Interrupt
  9. #define OVRE AT91C_US_OVRE // (DBGU) Overrun Interrupt
  10. #define FRAME AT91C_US_FRAME  // (DBGU) Framing Error Interrupt
  11. #define PARE AT91C_US_PARE // (DBGU) Parity Error Interrupt
  12. #define TXEMPTY AT91C_US_TXEMPTY // (DBGU) TXEMPTY Interrupt
  13. #define TXBUFE AT91C_US_TXBUFE  // (DBGU) TXBUFE Interrupt
  14. #define RXBUFF AT91C_US_RXBUFF  // (DBGU) RXBUFF Interrupt
  15. #define COMM_TX AT91C_US_COMM_TX // (DBGU) COMM_TX Interrupt
  16. #define COMM_RX AT91C_US_COMM_RX  // (DBGU) COMM_RX Interrupt
  17.  
  18. #define RSTRX  AT91C_US_RSTRX // (DBGU) Reset Receiver
  19. #define RSTTX AT91C_US_RSTTX// (DBGU) Reset Transmitter
  20.  
  21. #define RESET_REC (1<<2)
  22. #define RESET_TRAN (1<<3)
  23. #define ENABLE_REC (1<<4)
  24. #define DISABLE_REC (1<<5)
  25. #define ENABLE_TRAN (1<<6)
  26. #define DISABLE_TRAN (1<<7)
  27.  
  28.  
  29.  
  30. #define PIOC_PDR AT91C_PIOC_PDR
  31. #define PIOC_ASR AT91C_PIOC_ASR
  32. #define RxD (1<<30)
  33. #define TxD (1<<31)
  34. #define CD (115200) //clock divisor
  35.  
  36. #define RXEN AT91C_US_RXEN
  37. #define TXEN AT91C_US_TXEN
  38.  
  39. #define DBGU_THR (volatile unsigned int *) (0xFFFFEE1C)
  40.  
  41.  
  42. static void Open_DBGU(void) {
  43.     AT91C_BASE_DBGU->DBGU_IDR = (RXRDY | TXRDY | ENDRX | ENDTX | OVRE | FRAME | PARE | TXEMPTY | TXBUFE | RXBUFF | COMM_TX | COMM_RX ); //disable interrupts
  44.     AT91C_BASE_DBGU->DBGU_CR = (RESET_REC | RESET_TRAN | DISABLE_REC | DISABLE_TRAN); // reset and turn off receiver and transmiter
  45.     *PIOC_PDR = (RxD | TxD); //disable PIO from controlling the pins
  46.     *PIOC_ASR = (RxD | TxD); //assign line to the peripherial function
  47.     AT91C_BASE_DBGU->DBGU_BRGR = CD; //unit baud rate generator register
  48.     AT91C_BASE_DBGU->DBGU_MR = (1<<11); //no parity and normal mode
  49.     AT91C_BASE_DBGU->DBGU_CR = (ENABLE_REC | ENABLE_TRAN); //enable receiver and transmiter
  50.  
  51.    
  52. }
  53.  
  54. void printChar(char buffer) {
  55.    
  56.     while( !( (*AT91C_DBGU_CSR) & (1<<1)) ) {}
  57.     *DBGU_THR = buffer;
  58. }
  59.  
  60. char readChar(char buffer) {
  61.    
  62.         while( ~(*AT91C_DBGU_CSR & RXRDY)  ){}
  63.         buffer = (char)*AT91C_DBGU_RHR;
  64.        
  65.         return buffer;
  66. }
  67.  
  68. void printAlphabet(void) {
  69.    
  70.     char lowerChar, upperChar;
  71.    
  72.     for(lowerChar = 'a' ; lowerChar <= 'z' ; lowerChar++) {
  73.         printChar(lowerChar);
  74.     }
  75.     for(upperChar = 'A' ; upperChar <= 'Z'; upperChar++){
  76.         printChar(upperChar);
  77.     }
  78.    
  79. }
  80.  
  81. void printString(char* string) {
  82.    
  83.     int counter = 0;
  84.     while(string[counter] != '\0') {
  85.         printChar(string[counter]);
  86.         counter++;
  87.     }
  88. }
  89.  
  90. int main(void) {
  91.    
  92.     Open_DBGU();
  93.     printAlphabet();
  94.     char* string = "Sentence to print";
  95.     printString(string);
  96.    
  97.  
  98.     //char letter =
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement