Salve a tutti,
sto cercando di leggere un GPS.
Main:
#define STDIO_UART1
volatile bool contr_GPS = false;
volatile char GPS_buff[3000];
volatile int i=0;
#ifdef STDIO_UART1
// enable GPS connector to be used as external UART connection
PTC->PSOR = (1u << 1);
uart_enable(1, 9600, false, true);
printf("ready.\r\n");
#endif
for(;;)
{
if (contr_GPS)
{
for (int i=0; ;i++)
printf("%c", GPS_buff[i]);
}
}
Per quanto riguarda il funzionamento dell'interrupt è:
extern volatile char GPS_buff[];
volatile char *data=GPS_buff;
volatile bool contr_write = true;
extern volatile bool contr_GPS;
extern volatile int i;
static void process_irq(uint8_t dev) {
UART_Type *uart = uart_reg[dev];
//UART_Trans *buffer;
if (uart->S1 & UART_S1_TDRE_MASK) {
// NON C'E' NULLA PERCHE' TEORICAMENTE DOVREBBE DARE QUALCUSA DI DEFAULT
}
if (uart->S1 & UART_S1_RDRF_MASK) {
if (i<3000){
*data++ = uart->D;
i++;
}
else
{
uart->C2 &= ~UART_C2_RIE_MASK;
uart->C2 &= ~UART_C2_RE_MASK;
contr_GPS = true;
}
}
}
Se tolgo contr_GPS e stampo a random qualcosa esce ma sono simboli senza senso..esempio:
çm‚t?À"6½UùÄuG0?¾m8ëWÞÑæ+› W®ÝU⇂¦ùõ[‚ˆÞÓÙú
hŽ$:bQŸˆZø”×Å·§ºö†Ñ ߧĺ6Ë¢aÜ÷Á‚–¡Ê°ú-^J¤†Æ÷ÓÇHå ÂîÑÍ7ØU¤½ü%Œ\ä¼0ñ¢›Ýº–ù9Têæ y÷Ÿ£
Se lascio la condizione contr_GPS non stampa nulla.
Avete dei consigli o suggerimenti per capire l'errore?
Grazie