Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 9th, 2012  |  syntax: None  |  size: 1.07 KB  |  hits: 10  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. array in C/C   for AVR keeps appending
  2. unsigned char responseFrame[300];
  3.  
  4. int main(void) {
  5.    UART_init();
  6.    while(1) {
  7.        receive(responseFrame);
  8.        myLog(responseFrame, sizeof(responseFrame));
  9.    }
  10. }
  11.        
  12. void receive(unsigned char *rcv_buff) {
  13.     uint8_t recv_data;
  14.  
  15.     for (int i=0; i<300; i++){
  16.             USART1_Flush();
  17.         rcv_buff[i] = USART1_RX();
  18.     }
  19. }
  20.        
  21. // Logs this output to the serial port; used for debugging
  22. void myLog(unsigned char *msg, int size) {
  23.     for (int i=0; i<size; i++) {
  24.         USART0_TX(msg[i]);
  25.     }
  26. }
  27.        
  28. 0xFF 0xFF, 0x00, 0x00 ... 0x00
  29.        
  30. 0xFF, 0xFF, 0x0A, 0x0A, 0x00, 0x00 ... 0x00
  31.        
  32. void USART0_TX(uint8_t myData) {
  33.     // Wait if a byte is being transmitted
  34.     while( !(UCSR0A & (1<<UDRE0)) );
  35.     // Transmit data
  36.     UDR0 = myData;
  37. };
  38. uint8_t USART1_RX(void) {
  39.     // Wait until recv buffer is full
  40.     while( !(UCSR1A & (1<<RXC1)) );
  41.     // Return recvd data
  42.     return UDR1;
  43. };
  44.        
  45. //USART1 flush, clears USART1 buffer
  46. void USART1_Flush( void )
  47. {
  48.     unsigned char dummy;
  49.     while ( UCSR1A & (1<<RXC1) ) dummy = UDR1;
  50. }