Вопрос про адреса регистров
- Войдите на сайт для отправки комментариев
Сб, 09/11/2019 - 10:55
Подскажите, кому известно, адрес регистра UDR0 из UCSART0 микроконтроллера.
Хочу сделать сравнение строк if(strcmp(UDR0, "МОЯ СТРОКА")==0) делать что-то. Но почему то "МОЯ СТРОКА" подчеркнута.
если попробовать if(strcmp *((char *) адрес UDR0), "МОЯ СТРОКА")==0) что то измениться или нельзя сравнивать UDR0 со строками?
размер регистров USART - 1 символ, что вы там собрались со строкой сравнивать?
Вы какую-то фигню городите. Почему не читать USART как все нормальные люди, через буфер?
да хочу считать надпись с терминала, сравнить эту надпись уже с заранее готовой строкой и если совпадают, делать какие-то действие.
да хочу считать надпись с терминала, сравнить эту надпись уже с заранее готовой строкой и если совпадают, делать какие-то действие.
ну и читайте надпись посимвольно в буфер - а уже буфер сравнивайте со строкой.
так и сделал. при вводе строки с терминала. ничего не происходит.
#include <avr/io.h> #include <string.h> #include <avr/interrupt.h> #include <avr/portpins.h> #define BUFFSIZERX 32 #define BUFMASKRX (BUFFSIZERX-1) volatile int rxIn=0; char bufrx[BUFFSIZERX]; ISR(USART_RX_vect) { bufrx[rxIn++]=UDR0; rxIn &=BUFMASKRX; UDR0=0; } void UART_Init(void) { UCSR0B|=(1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0); UCSR0C|=(1<<UCSZ01)|(1<<UCSZ00); UBRR0 = 103; } int main(void) { DDRB |=(1<<PB1); UART_Init(); sei(); while(1) { if(strcmp(bufrx, "xxx")==0) PORTB |=(1<<PB1); } }