Advertisement
Guest User

main.c

a guest
May 3rd, 2011
664
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.52 KB | None | 0 0
  1. #include    <util/delay.h>
  2. #include    <avr/io.h>
  3. #include    <avr/interrupt.h>
  4. #include    <avr/pgmspace.h>
  5. #include    <stdio.h>
  6. #include    <stdlib.h>
  7. #include    <stdint.h>
  8. #include    <string.h>
  9. #include    "can.h"
  10. #include    "uart.h"
  11.  
  12. //-----UART-Setup-----
  13. #define PRINT(string, ...)      printf_P(PSTR(string), ##__VA_ARGS__)
  14. static int putchar__(char c, FILE *stream) {
  15.     uart_putc(c);
  16.     return 0;
  17. }
  18. static FILE mystdout = FDEV_SETUP_STREAM(putchar__, 0, _FDEV_SETUP_WRITE);
  19. //--------------------
  20.  
  21. void delay(int sleep);
  22.  
  23. void init(void){
  24.     uart_init(UART_BAUD_SELECT(9600, F_CPU));
  25.     stdout = &mystdout;
  26.     sei();
  27.    
  28.     PRINT("Trying to init CAN...");
  29.     delay(1000);
  30.    
  31.     // Initialize MCP2515
  32.     if (!can_init(BITRATE_125_KBPS)) {
  33.         PRINT("ERROR!\n\rError: Could not init CAN! Check Config!\n\r");
  34.         for (;;);
  35.     }
  36.     else {
  37.         PRINT("OK!\n\r");
  38.     }  
  39. }
  40.  
  41. int main(void)
  42. {
  43.     init();
  44.     PRINT("Initialization complete!\n\r\n\r");
  45.     PRINT("°°° Olimex AVR-CAN with UART, CAN and I2C-Connectivity °°°\n\r");
  46.    
  47.     can_t msg;
  48.     msg.id = 0x12;
  49.     msg.length = 2;
  50.     msg.data[0] = 0xAB;
  51.     msg.data[1] = 0xCD;
  52.     can_filter_t filter = {
  53.         .id = 0,
  54.         .mask = 0,
  55.         .flags = {
  56.             .rtr = 0
  57.         }
  58.     };
  59.    
  60.     can_set_filter(0, &filter);
  61.     can_set_mode(LOOPBACK_MODE);
  62.    
  63.    
  64.     for(;;) {
  65.        
  66.         if(!can_send_message(&msg)) PRINT("Could not send!\n\r");
  67.         delay(300);
  68.         if(can_check_message()) {
  69.             PRINT("\n\rGot Something...\n\r");
  70.         } else PRINT(".");
  71.        
  72.     }
  73.     return 0;
  74. }
  75.  
  76. void delay(int sleep)
  77. {
  78.     for(int x=0; x<=sleep; x++) {
  79.         _delay_ms(1);
  80.     }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement