Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "AT91SAM9263.h"
- #include "AT91SAM9263-EK.h"
- void dbgu_print_ascii(const char* string){}
- static void open_DBGU()
- {
- //strona 21 pdf 4
- //schemat dokumentacja str 402
- //wyłączamy przerwania od portu DBGU //ustawiamy jedynke na RXRDY i TXRDY
- AT91C_BASE_DBGU->DBGU_IDR = AT91C_US_RXRDY | AT91C_US_TXRDY;
- //reset i wyłączenie odbiornika oraz nadajnika //jedynka na Reset Receiver, Receiver Disable, Rest Transmitter oraz Transmitter Disable
- AT91C_BASE_DBGU->DBGU_CR = AT91C_US_RSTRX | AT91C_US_RXDIS | AT91C_US_RSTTX | AT91C_US_TXDIS;
- //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
- AT91C_BASE_PIOC->PIO_ASR = AT91C_PC30_DRXD | AT91C_PC31_DTXD; //Peripheral A Select Register //przypisuje szynę wejścia wyjścia do
- 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
- //konfiguracja szybkości transmisji //wzór strona 19 wykład 4
- AT91C_BASE_DBGU->DBGU_BRGR = (AT91B_MCK/(16*AT91B_DBGU_BAUD_RATE)); //115200 Clock Divisor podany na wykładzie //wynik=ok.54;
- AT91C_BASE_DBGU->DBGU_MR = AT91C_US_CHMODE_NORMAL | AT91C_US_PAR_NONE; //konfiguracja trybu pracy ->normalny oraz bez przystości (parity)
- AT91C_BASE_DBGU->DBGU_CR = AT91C_US_RXEN | AT91C_US_TXEN; //włączenie odbiornika i nadajnika
- }
- void print_ascii(const unsigned char z)
- {
- while (!(AT91C_BASE_DBGU->DBGU_CSR & AT91C_US_TXRDY)); //sprawdzamy flage TXRDY //jeśli 1 to..
- AT91C_BASE_DBGU->DBGU_THR = z; //zapisujemy znak do Transmiter Holding Register
- }
- unsigned char read_ascii()
- {
- while (!(AT91C_BASE_DBGU->DBGU_CSR & AT91C_US_RXRDY)); //sprawdzamy flage RXRDY - czy został odczytany chociaż jeden znak //jeśli 1 to..
- unsigned char z = AT91C_BASE_DBGU->DBGU_RHR; //odczytujemy znak z Receiver Holding Register
- return z;
- }
- unsigned char convert(unsigned char z)
- {
- if (z >= 'a' && z <= 'z')
- {
- return z - ' '; // zmianiamy małe na duże literki
- }
- else if (z >= 'A' && z <= 'Z')
- {
- return z + ' '; // zmieniamy duże na małe
- }
- return z;
- }
- void main()
- {
- open_DBGU();
- int temp = 1;
- volatile unsigned char z;
- while (1)
- {
- z = read_ascii();
- if(z=='*')
- {
- temp = -temp;
- continue;
- }
- if(temp == 1)
- print_ascii(convert(z));
- else if(temp==-1)
- {
- print_ascii(z);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement