Advertisement
MagnusArias

SW | DBGU

Jun 1st, 2016
387
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.45 KB | None | 0 0
  1. #include "AT91SAM9263.h"
  2.  
  3. void dbgu_print_ascii(const char *Buffer){
  4.     int i = 0;
  5.     while ( Buffer[i]) {
  6.        
  7.         while ( !(AT91C_BASE_DBGU->DBGU_CSR & (AT91C_US_TXRDY) ) ){};
  8.        
  9.         AT91C_BASE_DBGU->DBGU_THR = Buffer[i];
  10.         i++;
  11.     }
  12. }
  13.  
  14. void dbgu_read_ascii (char *Buffer){
  15.         while ( !(AT91C_BASE_DBGU->DBGU_CSR & (AT91C_US_RXRDY)) ){};
  16.        
  17.        
  18.         *Buffer = AT91C_BASE_DBGU->DBGU_RHR;
  19.         if (*Buffer == 0x0D){
  20.             *Buffer = 0x0D;
  21.             *(Buffer+1) = 0x0A;
  22.             *(Buffer+2) = '\0';
  23.         }
  24.         else { *(Buffer+1) = '\0';}
  25. }
  26.  
  27. static void Open_DBGU (void){
  28.     //Wyłącz przerwania od portu DBGU
  29.     AT91C_BASE_DBGU->DBGU_IDR = 0xFFFFFFFF;
  30.  
  31.    
  32.     //Resetuj i wyłącz odbiornik
  33.     AT91C_BASE_DBGU->DBGU_CR = (AT91C_US_RSTRX | AT91C_US_RSTTX | AT91C_US_RXDIS | AT91C_US_TXDIS);
  34.    
  35.     //Konfiguracja portów wejścia-wyjścia jako porty RxD i TxD DBGU
  36.     AT91C_BASE_PIOC->PIO_ASR = (1<<30 | 1<<31);
  37.     AT91C_BASE_PIOC->PIO_PDR = (1<<30 | 1<<31);
  38.  
  39.     //Konfiguracja szybkości transmisji portu szeregowego
  40.     AT91C_BASE_DBGU->DBGU_BRGR = 651;
  41.    
  42.     //Konfiguracja trybu pracy, tryb normalny bez przystości (8N1)
  43.     AT91C_BASE_DBGU->DBGU_MR = (AT91C_US_CHMODE_NORMAL | AT91C_US_PAR_NONE);
  44.        
  45.     //Włącz odbiornik
  46.     AT91C_BASE_DBGU->DBGU_CR = (AT91C_US_RXEN | AT91C_US_TXEN);
  47. }
  48.  
  49. int main(void){
  50.     char Tekst[1];
  51.    
  52.     Open_DBGU();
  53.    
  54.     dbgu_print_ascii("123456789-123456789-123456789-123456789-123456789 \n");
  55.  
  56.    
  57.     while (1){
  58.         dbgu_read_ascii(Tekst);
  59.         dbgu_print_ascii(&Tekst);
  60.     }  
  61.  
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement