Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  1. #include "AT91SAM9263.h"
  2. #include "AT91SAM9263-EK.h"
  3.  
  4. void dbgu_print_ascii(const char* string){}
  5.  
  6. static void open_DBGU()
  7. {
  8. //strona 21 pdf 4
  9. //schemat dokumentacja str 402
  10.  
  11.  
  12. //wyłączamy przerwania od portu DBGU //ustawiamy jedynke na RXRDY i TXRDY
  13. AT91C_BASE_DBGU->DBGU_IDR = AT91C_US_RXRDY | AT91C_US_TXRDY;
  14.  
  15. //reset i wyłączenie odbiornika oraz nadajnika //jedynka na Reset Receiver, Receiver Disable, Rest Transmitter oraz Transmitter Disable
  16. AT91C_BASE_DBGU->DBGU_CR = AT91C_US_RSTRX | AT91C_US_RXDIS | AT91C_US_RSTTX | AT91C_US_TXDIS;
  17.  
  18.  
  19. //konfiguracja portów wejścia-wyjścia(urzadzenia peryferyjne) jako porty RxD i TxD w rejestrach ASR i PDR, Debug Receiver Data, Debug Transmitter Data
  20.  
  21. AT91C_BASE_PIOC->PIO_ASR = AT91C_PC30_DRXD | AT91C_PC31_DTXD; //Peripheral A Select Register //przypisuje szynę wejścia wyjścia do
  22.  
  23. AT91C_BASE_PIOC->PIO_PDR = AT91C_PC30_DRXD | AT91C_PC31_DTXD; //PIO Desible Register //blokuje kontrole PIO nad pinami i umożliwia urządzeniom peryferyjnym
  24.  
  25.  
  26. //konfiguracja szybkości transmisji //wzór strona 19 wykład 4
  27. AT91C_BASE_DBGU->DBGU_BRGR = (AT91B_MCK/(16*AT91B_DBGU_BAUD_RATE)); //115200 Clock Divisor podany na wykładzie //wynik=ok.54;
  28.  
  29.  
  30. AT91C_BASE_DBGU->DBGU_MR = AT91C_US_CHMODE_NORMAL | AT91C_US_PAR_NONE; //konfiguracja trybu pracy ->normalny oraz bez przystości (parity)
  31.  
  32. AT91C_BASE_DBGU->DBGU_CR = AT91C_US_RXEN | AT91C_US_TXEN; //włączenie odbiornika i nadajnika
  33.  
  34. }
  35.  
  36. void print_ascii(const unsigned char z)
  37. {
  38. while (!(AT91C_BASE_DBGU->DBGU_CSR & AT91C_US_TXRDY)); //sprawdzamy flage TXRDY //jeśli 1 to..
  39. AT91C_BASE_DBGU->DBGU_THR = z; //zapisujemy znak do Transmiter Holding Register
  40. }
  41.  
  42. unsigned char read_ascii()
  43. {
  44. while (!(AT91C_BASE_DBGU->DBGU_CSR & AT91C_US_RXRDY)); //sprawdzamy flage RXRDY - czy został odczytany chociaż jeden znak //jeśli 1 to..
  45. unsigned char z = AT91C_BASE_DBGU->DBGU_RHR; //odczytujemy znak z Receiver Holding Register
  46. return z;
  47. }
  48.  
  49. unsigned char convert(unsigned char z)
  50. {
  51. if (z >= 'a' && z <= 'z')
  52. {
  53. return z - ' '; // zmianiamy małe na duże literki
  54. }
  55. else if (z >= 'A' && z <= 'Z')
  56. {
  57. return z + ' '; // zmieniamy duże na małe
  58. }
  59. return z;
  60. }
  61.  
  62. void main()
  63. {
  64. open_DBGU();
  65. int temp = 1;
  66.  
  67. volatile unsigned char z;
  68. while (1)
  69. {
  70. z = read_ascii();
  71.  
  72. if(z=='*')
  73. {
  74. temp = -temp;
  75. continue;
  76. }
  77.  
  78. if(temp == 1)
  79. print_ascii(convert(z));
  80. else if(temp==-1)
  81. {
  82. print_ascii(z);
  83. }
  84.  
  85.  
  86. }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement