Main.c


1
#include <avr/io.h>
2
#include <stdlib.h>
3
#include <regs.h>
4
#include <spi.h>
5
#include <can2515.h>
6
#include <stdint.h>
7
#include <avr/interrupt.h>
8
#include "can_interface.h"
9
10
11
int main(){
12
  DDRD &= ~(1<<PD7);
13
  DDRD &= ~(1<<PD2);
14
  PORTD |= (1<<PD7);
15
  PORTD |= (1<<PD2);
16
17
  init_spi();
18
  controller_reset();
19
  init_bittiming();
20
     init_transmitter();
21
  init_receiver();
22
  controller_normal_mode();
23
24
  modify_register(CANCTRL, 0b111,0b101);
25
  modify_register(BFPCTRL, 0b00101010, 0b00101000);
26
27
  uint8_t PD2_pressed_flag = 0;
28
29
  while(1==1){
30
    if((PIND & (1<<PD7)) == 0){
31
      modify_register(BFPCTRL, 0b00101010, 0b00001000);
32
      Message *message;
33
      handle_interrupt(message);
34
      handle_can_message(message);
35
      modify_register(BFPCTRL, 0b00101010, 0b00101000);
36
    }
37
    
38
    if((PIND & (1<<PD2)) == 0 && (PD2_pressed_flag == 0)){
39
      PD2_pressed_flag = 1;
40
      modify_register(BFPCTRL, 0b00101010, 0b00001000);
41
      char data[] = " :100010000C9454000C9454000C9454000C94540010 ";
42
      write_bootloader_message_buffered_to_can(strlen(data),data);
43
    }
44
    if((PIND & (1<<PD2))!=0){
45
      modify_register(BFPCTRL, 0b00101010, 0b00101000);
46
      PD2_pressed_flag = 0;
47
    }
48
49
      
50
  }
51
  return 0;
52
}