Subversion Repositories HomeAutomation

Rev

Rev 268 | Blame | Last modification | View Log | SVN | RSS feed

  1. #include <inttypes.h>
  2. #include <avr/interrupt.h>
  3. #include <stdio.h>
  4. #include <bios.h>
  5.  
  6. static int app_putchar(char c, FILE *stream);
  7. static int app_getchar(FILE *stream);
  8.  
  9. static FILE mystdio = FDEV_SETUP_STREAM(app_putchar, app_getchar,
  10.                                          _FDEV_SETUP_RW);
  11.  
  12. static int app_putchar(char c, FILE *stream) {
  13.     bios->debug_putchar(c);
  14.     return 0;
  15. }
  16.    
  17. static int app_getchar(FILE *stream) {
  18.     return bios->debug_getchar();
  19. }
  20.  
  21. void can_receive(Can_Message_t *msg) {
  22.     printf("candata!\n");
  23. }
  24.  
  25. int main(void)
  26. {
  27.     unsigned long time;
  28.     unsigned long time1 = bios->timebase_get();
  29.     unsigned long time2 = bios->timebase_get();
  30.    
  31.     sei();
  32.    
  33.     stdout = &mystdio;
  34.     stdin = &mystdio;
  35.  
  36.     Can_Message_t txMsg;
  37.     txMsg.Id = 100;
  38.     txMsg.DataLength = 0;
  39.     txMsg.RemoteFlag = 0;
  40.     txMsg.ExtendedFlag = 1;
  41.    
  42.     //set up callback for candata
  43.     bios->can_callback = &can_receive;
  44.    
  45.     printf("AVR Test Application\n");
  46.     printf("Using AVR BIOS version %x\n", bios->version);
  47.    
  48.     while (1) {
  49.         time = bios->timebase_get();
  50.         if ((time - time1) >= 2000) {
  51.             //test-send a canmessage
  52.             bios->can_send(&txMsg);
  53.             time1 = time;
  54.             printf("Two seconds passed, time is now %d.\n", (int)time);
  55.         }
  56.  
  57.         if ((time - time2) >= 20000) {
  58.             time2 = time;
  59.             printf("Will now hang node.\n");
  60.             cli();
  61.         }
  62.     }
  63.    
  64.     return 0;
  65. }
  66.