Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <util/delay.h>
- #include <avr/io.h>
- #include <avr/interrupt.h>
- #include <avr/pgmspace.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdint.h>
- #include <string.h>
- #include "can.h"
- #include "uart.h"
- //-----UART-Setup-----
- #define PRINT(string, ...) printf_P(PSTR(string), ##__VA_ARGS__)
- static int putchar__(char c, FILE *stream) {
- uart_putc(c);
- return 0;
- }
- static FILE mystdout = FDEV_SETUP_STREAM(putchar__, 0, _FDEV_SETUP_WRITE);
- //--------------------
- void delay(int sleep);
- void init(void){
- uart_init(UART_BAUD_SELECT(9600, F_CPU));
- stdout = &mystdout;
- sei();
- PRINT("Trying to init CAN...");
- delay(1000);
- // Initialize MCP2515
- if (!can_init(BITRATE_125_KBPS)) {
- PRINT("ERROR!\n\rError: Could not init CAN! Check Config!\n\r");
- for (;;);
- }
- else {
- PRINT("OK!\n\r");
- }
- }
- int main(void)
- {
- init();
- PRINT("Initialization complete!\n\r\n\r");
- PRINT("°°° Olimex AVR-CAN with UART, CAN and I2C-Connectivity °°°\n\r");
- can_t msg;
- msg.id = 0x12;
- msg.length = 2;
- msg.data[0] = 0xAB;
- msg.data[1] = 0xCD;
- can_filter_t filter = {
- .id = 0,
- .mask = 0,
- .flags = {
- .rtr = 0
- }
- };
- can_set_filter(0, &filter);
- can_set_mode(LOOPBACK_MODE);
- for(;;) {
- if(!can_send_message(&msg)) PRINT("Could not send!\n\r");
- delay(300);
- if(can_check_message()) {
- PRINT("\n\rGot Something...\n\r");
- } else PRINT(".");
- }
- return 0;
- }
- void delay(int sleep)
- {
- for(int x=0; x<=sleep; x++) {
- _delay_ms(1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement