C:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <string.h>
#define buffer_size 64
void usart_init(unsigned int value);
void transmit_char(char cmd);
void transmit_string(char * cmd);
void blinkLed();
char buffer[buffer_size];
uint8_t readpos = 0;
uint8_t writepos = 0;
int main(void)
{
_delay_ms(1000);
DDRB = 0x01;
blinkLed();
usart_init(103);
sei();
readpos = 0;
writepos = 0;
while (1)
{
if (strstr(buffer,"2200BE2EE052"))
{blinkLed(); writepos=0;}
}
}
void blinkLed()
{
PORTB=0xfe;
_delay_ms(1000);
PORTB=0x01;
_delay_ms(1000);
}
void usart_init(unsigned int value)
{
UBRRH = (value>>8);
UBRRL = value;
UCSRB |= (1<<RXEN) | (1<<RXCIE);
UCSRC |= (1<<UCSZ0) | (1<<UCSZ1) | (1<<URSEL);
}
ISR(USART_RXC_vect)
{
buffer[writepos] = UDR;
writepos++;
if(writepos>=buffer_size)
{
writepos = 0;
for(int i=0;i<buffer_size;i++)
buffer[I] = 0;
}
}
whats going wrong?
Moderators note : used code tags
Last edited by a moderator: