diff --git a/Mainboard/Mainboard.atsuo b/Mainboard/Mainboard.atsuo index 095d318..a52161b 100644 Binary files a/Mainboard/Mainboard.atsuo and b/Mainboard/Mainboard.atsuo differ diff --git a/Mainboard/Mainboard/Can.h b/Mainboard/Mainboard/Can.h index dcb755a..12a9751 100644 --- a/Mainboard/Mainboard/Can.h +++ b/Mainboard/Mainboard/Can.h @@ -6,19 +6,13 @@ */ #include "config.h" -#include #include #include "mcp2515_defs.h" -#include "Led.h" #include "Spi.h" #ifndef CAN_H_ #define CAN_H_ -//#define DDR_CS DDRB -//#define PORT_CS PORTB -//#define P_CS 2 - typedef struct { uint16_t id; diff --git a/Mainboard/Mainboard/Debug/Can.d b/Mainboard/Mainboard/Debug/Can.d index 9216409..8ac21a5 100644 --- a/Mainboard/Mainboard/Debug/Can.d +++ b/Mainboard/Mainboard/Debug/Can.d @@ -1,27 +1,26 @@ Can.d Can.o: .././Can.cpp .././Can.h .././config.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/sfr_defs.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/inttypes.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdint.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdint.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h \ + .././mcp2515_defs.h .././Spi.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/sfr_defs.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/iom32u2.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/portpins.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/common.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/version.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h \ - .././mcp2515_defs.h .././Led.h .././Spi.h + .././pin.hpp .././portb.hpp .././Can.h: .././config.h: -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h: - -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/sfr_defs.h: +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h: c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/inttypes.h: @@ -29,6 +28,18 @@ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8- c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdint.h: +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h: + +.././mcp2515_defs.h: + +.././Spi.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/sfr_defs.h: + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/iom32u2.h: c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/portpins.h: @@ -41,14 +52,6 @@ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8- c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h: -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h: +.././pin.hpp: -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h: - -c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h: - -.././mcp2515_defs.h: - -.././Led.h: - -.././Spi.h: +.././portb.hpp: diff --git a/Mainboard/Mainboard/Debug/Led.d b/Mainboard/Mainboard/Debug/Led.d index ff93166..766f986 100644 --- a/Mainboard/Mainboard/Debug/Led.d +++ b/Mainboard/Mainboard/Debug/Led.d @@ -1,4 +1,4 @@ -Led.d Led.o: .././Led.cpp .././Led.h \ +Led.d Led.o: .././Led.cpp .././Led.h .././portc.hpp \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/sfr_defs.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/inttypes.h \ @@ -9,10 +9,13 @@ Led.d Led.o: .././Led.cpp .././Led.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/common.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/version.h \ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h \ - c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h \ + .././pin.hpp .././Led.h: +.././portc.hpp: + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h: c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/sfr_defs.h: @@ -34,3 +37,5 @@ c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8- c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h: c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h: + +.././pin.hpp: diff --git a/Mainboard/Mainboard/Led.cpp b/Mainboard/Mainboard/Led.cpp index b1bdadb..f14e3c0 100644 --- a/Mainboard/Mainboard/Led.cpp +++ b/Mainboard/Mainboard/Led.cpp @@ -1,49 +1,41 @@ /* - * CPPFile1.cpp + * Led.cpp * * Created: 03.11.2013 17:24:58 * Author: netz */ #include "Led.h" -#define LEDPORT PORTB -#define LEDDDR DDRB -#define LEDPINR PINC5 -#define LEDPING PINC6 -#define LEDPINB PINC7 -#define LEDPINM PINC5 -Led::Led() { +/*Led::Led() { init(); -} +}*/ -void Led::init() { - LEDDDR |= (1< +#include "portc.hpp" +#include "pin.hpp" #ifndef LED_H_ #define LED_H_ - +template class Led { public: - Led(); + Led() { + init(); + } inline Led(int) {} - //virtual ~Led(); - void color(uint8_t mask); - void rainbow(uint8_t time); - void fade(int from, int to, int dur); + void color(uint8_t mask) { + (mask & (1<<0)) ? blue::make_high() : blue::make_low(); + (mask & (1<<1)) ? green::make_high() : green::make_low(); + (mask & (1<<2)) ? red::make_high() : red::make_low(); + } + void rainbow(uint8_t time) { + fade(RED, YELLOW, time); + fade(YELLOW, GREEN, time); + fade(GREEN, CYAN, time); + fade(CYAN, BLUE, time); + fade(BLUE, MAGENTA, time); + fade(MAGENTA, RED, time); + } + void fade(uint8_t from, uint8_t to, uint8_t dur) { + for (uint8_t i=0;i<0xFF;i++) { + for(uint8_t k=0;k red; + const typedef avrlib::pin green; + const typedef avrlib::pin blue; }; diff --git a/Mainboard/Mainboard/Mainboard.cpp b/Mainboard/Mainboard/Mainboard.cpp index 86d12f8..a921cff 100644 --- a/Mainboard/Mainboard/Mainboard.cpp +++ b/Mainboard/Mainboard/Mainboard.cpp @@ -10,15 +10,18 @@ #include "Rs232.h" #include "Can.h" #include "Spi.h" +#include "portc.hpp" #include -Led l; +//Led l; +typedef Led l; Rs232 r; Can c(Spi(0)); int main(void) { - l.color(Led::YELLOW); + //l.color(Led::YELLOW); + l::color(l::YELLOW); r.send("bla\n"); CANMessage m; m.id = 0x0123; @@ -28,7 +31,7 @@ int main(void) m.data[1] = 0xFE; while(1) { - l.color(Led::GREEN); + //l.color(Led::GREEN); _delay_ms(100); //r.send("Text\n"); //_delay_ms(500); @@ -39,10 +42,10 @@ int main(void) //c.can_send_message(&m); uint8_t r = c.can_get_message(&m); if(r == 0xFF) { - l.color(Led::RED); + //l.color(Led::RED); _delay_ms(100); } else { - l.color(Led::BLUE); + //l.color(Led::BLUE); _delay_ms(1000); } } diff --git a/Mainboard/Mainboard/Mainboard.cppproj b/Mainboard/Mainboard/Mainboard.cppproj index 70af7c5..c1f711d 100644 --- a/Mainboard/Mainboard/Mainboard.cppproj +++ b/Mainboard/Mainboard/Mainboard.cppproj @@ -165,6 +165,15 @@ compile + + compile + + + compile + + + compile + compile diff --git a/Mainboard/Mainboard/Spi.cpp b/Mainboard/Mainboard/Spi.cpp index a0b521f..4ef00e5 100644 --- a/Mainboard/Mainboard/Spi.cpp +++ b/Mainboard/Mainboard/Spi.cpp @@ -18,20 +18,23 @@ void Spi::init() { } } -#define CANDDR_SPI DDRB +/*#define CANDDR_SPI DDRB #define CANPORT_SPI PORTB #define CANPIN_SPI PINB #define CANP_MISO PINB3 #define CANP_MOSI PINB2 #define CANP_SCK PINB1 -#define CANP_CS PINB4 +#define CANP_CS PINB4*/ void Spi::init_port() { - CANDDR_SPI |= (1<0; a--){ //das Byte wird Bitweise nacheinander Gesendet MSB zuerst + datain<<=1; //Schieben um das Richtige Bit zusetzen + sck::make_low(); // Clock auf LOW + if (data & 0x80) { //Ist Bit a in Byte gesetzt + mosi::make_high(); //Set Output High + } + else{ + mosi::make_low(); //Set Output Low + } + _delay_us(1); + if(miso::read()) //Lesen des Pegels + { + datain |= 1; + } + _delay_us(1); + sck::make_high(); // Clock auf High + _delay_us(2); + data<<=1; //Schiebe um nächstes Bit zusenden + } + return datain; + /*uint8_t werti = 0; for (uint8_t i = 8; i != 0; i--) { CANPORT_SPI = (CANPORT_SPI & (~(1 << CANP_MOSI))) | ((data & 1) << CANP_MOSI); @@ -79,26 +103,5 @@ uint8_t Spi::send_soft(uint8_t data) { asm volatile ("nop"); werti = (werti << 1) | ((CANPIN_SPI >> CANP_MISO) & 1); } - //RF_PORT &= ~(1< +#include +#include "pin.hpp" +#include "portb.hpp" + class Spi { public: @@ -19,8 +24,10 @@ class Spi { uint8_t send(uint8_t data); private: const uint8_t mode; //0 Hardware, 1 Software - volatile uint8_t *canport; - //static uint8_t spiport = PORTB; + const typedef avrlib::pin cs; + const typedef avrlib::pin miso; + const typedef avrlib::pin mosi; + const typedef avrlib::pin sck; void init(); void init_port(); void init_spi(); diff --git a/Mainboard/Mainboard/pin.hpp b/Mainboard/Mainboard/pin.hpp new file mode 100644 index 0000000..f0427b6 --- /dev/null +++ b/Mainboard/Mainboard/pin.hpp @@ -0,0 +1,48 @@ +#ifndef AVRLIB_PIN_HPP +#define AVRLIB_PIN_HPP + +namespace avrlib { + + template + struct pin + { + static void set(bool value = true) + { + if (value) + Port::port(Port::port() | (1< + +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + }; + +} + +#endif diff --git a/Mainboard/Mainboard/portc.hpp b/Mainboard/Mainboard/portc.hpp new file mode 100644 index 0000000..017e95b --- /dev/null +++ b/Mainboard/Mainboard/portc.hpp @@ -0,0 +1,22 @@ +#ifndef AVRLIB_PORTC_HPP +#define AVRLIB_PORTC_HPP + +#include + +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + }; + +} + +#endif