logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[LPC2142] [LPC2142][C++/Eclipse] Jak użyć przerwań sprzętowych do obsługi Uart0?

maoopa 07 Cze 2010 07:29 1044 2
REKLAMA
  • #1 8163847
    maoopa
    Poziom 10  
    Posty: 10
    Witam, mam taką funkcję (z książki Bryndzy):
    static void Uart0Gets(char *str) //Odbior znaku przez rs232 z terminalu
    {
    	char c;
    	do
    	{
    
    		while(!(U0LSR & U0LSR_RDR)); //Czekaj na znak
    		c = U0RBR; //Odbierz znak
    		*str++ = c; //Zapisz znak do bufora
    		while(!(U0LSR & U0LSR_THRE)); //Czekaj na nadajnik
    		//U0THR = c; Nadaj zwrotnie znak
    	}
    	while(c != '\r');
    	*(str-1) = 0;
    }


    Wywołuje ją:
     Uart0Gets(buf);

    I tu jest problem jak ją wywołam czeka na ten znak i nie robi nic innego, przez co cały program stoi. Chciałbym żeby czytał z portu tylko jak mu coś wyślę.
    Słyszałem coś o sprzętowych przerwaniach do obsługi portu.. Byłbym wdzięczny za sugestie.
  • REKLAMA
  • #2 8164183
    gaskoin
    Poziom 38  
    Posty: 4159
    Pomógł: 436
    Ocena: 102
    nic nie robi bo w tej funkcji masz pętlę while, która wykonuje się dopóki nie zostanie ustawiony odpowiedni bit (a ten z kolei się ustawi dopiero jak coś przyślesz) w datasheecie jest co nieco o przerwaniach
  • #3 8165969
    OlekM
    Poziom 17  
    Posty: 105
    Pomógł: 32
    Ocena: 8
    Dokumentacja jest święta, ale bezpieczniej zacząć od gotowca :-)

    Tutaj dostępne są przykłady dla środowiska Keil, które o ile pamiętam dość łatwo dawało się pod GCC odpalić.
REKLAMA