int main(void) { uint8_t buf; usart_init(9600); sei(); usart_transmit_char_block('\r'); usart_transmit_char_block('\n'); usart_transmit_char_block('B'); usart_transmit((uint8_t *)"\r\nSTRING\r\n", 10); buf = 'K'; usart_transmit(&buf, 1); usart_transmit(&buf, 1); usart_transmit(&buf, 1); usart_transmit_char('I'); buf = '\r'; usart_transmit(&buf, 1); usart_transmit_char('\n'); /*usart_transmit_block('I');*/ /*usart_transmit_block('L');*/ /*usart_transmit_block('L');*/ /* And the rest is handled by interrupts. */ for (;;); }
void bt_init( void ) { uint8_t num_baudrates = sizeof(baudrates)/sizeof(uint32_t); uint8_t i = 0; int16_t received; /* first set BT module AT mode pin */ io_on( HC05_CMD_PORT, HC05_CMD_PIN); /* now wait 100ms */ delay(100); /* iterate through baudrates */ do { usart_config_baudrate( baudrates[i]); usart_flush(); /* send AT command */ usart_transmit( (uint8_t *)BTCMD_AT, BTCMD_AT_LEN); /* wait for response */ received = usart_receive( response_buffer, 4, RESPONSE_TIMEOUT); /* we found a valid answer */ if( received > 0) { break; } i++; }while(i < num_baudrates); if( i > 0) { /* module seems to be configured for default -> reprogram */ usart_transmit( (uint8_t *)BTCMD_SET_NAME, BTCMD_SET_NAME_LEN); received = usart_receive( response_buffer, RESPONSE_LENGTH, RESPONSE_TIMEOUT); /* module seems to be configured for default -> reprogram */ usart_transmit( (uint8_t *)BTCMD_SET_PW, BTCMD_SET_PW_LEN); received = usart_receive( response_buffer, RESPONSE_LENGTH, RESPONSE_TIMEOUT); /* module seems to be configured for default -> reprogram */ usart_transmit( (uint8_t *)BTCMD_SET_BAUD, BTCMD_SET_BAUD_LEN); received = usart_receive( response_buffer, RESPONSE_LENGTH, RESPONSE_TIMEOUT); } /* send reset */ usart_transmit( (uint8_t *)BTCMD_RESET, BTCMD_RESET_LEN); received = usart_receive( response_buffer, RESPONSE_LENGTH, RESPONSE_TIMEOUT); /* leave AT mode */ io_off( HC05_CMD_PORT, HC05_CMD_PIN); /* wait a bit */ delay( 100); usart_config_baudrate( baudrates[0]); usart_flush(); bt_ready = 1; }
int _write(int file, char *ptr, int len) { int i; char *p = ptr; switch (file) { case STDOUT_FILENO: for (i = 0; i < len; i++) { if (*p == '\n') usart_transmit(USART1, (uint8_t)'\r'); usart_transmit(USART1, (uint8_t)*(p++)); } break; default: break; } return i; }
/* Function called by printf to send data to created stream */ int stream_printf(unsigned char var, FILE *stream) { if (var == '\n') { stream_printf('\r', 0); // Translate \n to \r for terminal } usart_transmit(var); // Transmit data return 0; }
void SetupCC1020PD(void) { uint8_t x; char bufff[100]; // Put CC1020 into power-down WriteToCC1020Register(CC1020_MAIN,0x1F); x = ReadFromCC1020Register(CC1020_MAIN); sprintf(bufff,"Wake up complete : %d a\r\n",x); usart_transmit(bufff); // Turn off PA to minimise current draw WriteToCC1020Register(CC1020_PA_POWER,0x00); }
void WriteToCC1020Register(unsigned char addr, unsigned char data) { cbi(PORTB,SS_bar); // Clear SS_bar to enable slave char array1[25]; unsigned char dummy; dummy=SPDR; SPDR=(addr<<1)|0x01; // Write address to CC1020, left shift,write bit is always 1 // Wait until data is written while (! (SPSR & (1<<SPIF))); if(WCOL==1) { sprintf(array1,"\nCollision detected!!!"); usart_transmit(array1); } dummy=SPDR; SPDR=data; while (! (SPSR & (1<<SPIF))); //PORTD |=0x01; sbi(PORTB,SS_bar); //PSEL must be made high for atleast 50ns after each read/write operation }
void rs485_transmit(uint8_t data) { rs485_switch_transmitter(ON); usart_transmit(data); rs485_switch_transmitter(OFF); }
void ctrl_send_state(char state) { usart_init(); usart_transmit(state); }
/* Transmit the given data over the serial port */ void transmit_data(unsigned char *data) { while (*data) { // Loop through and transmit entire string usart_transmit(*data); data++; } }