20131104-184551

This commit is contained in:
2013-11-04 17:45:46 +00:00
parent 001e0be085
commit 95817ec8b2
106 changed files with 12070 additions and 3939 deletions
Binary file not shown.
+20 -17
View File
@@ -5,32 +5,35 @@
* Author: netz
*/
#define F_CPU 16000000
#include "config.h"
#include "Led.h"
#include "Output.h"
#include "Can.h"
#include <avr/io.h>
#include <util/delay.h>
#include "Led.h"
Led l;
Output o;
Can c;
int main(void)
{
Led l;
DDRC |= (1<<PINC5);
l.color(Led::YELLOW);
CANMessage m;
m.id = 0x0123;
m.rtr = 0;
m.length = 2;
m.data[0] = 0xAF;
m.data[1] = 0xFE;
l.fade(Led::YELLOW, Led::RED, 10);
while(1)
{
o.AudioOn();
c.can_send_message(&m);
_delay_ms(1);
o.AudioOff();
l.rainbow(5);
/*PORTC ^= (1<<PINC0);
_delay_ms(150);
PORTC ^= (1<<PINC0);
PORTC ^= (1<<PINC1);
_delay_ms(150);
PORTC ^= (1<<PINC1);
PORTC ^= (1<<PINC2);
_delay_ms(150);
PORTC ^= (1<<PINC2);*/
//PORTC ^= (1<<PINC5);
}
}
+18
View File
@@ -157,12 +157,30 @@
<Compile Include="Button.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="Can.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="Can.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="config.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="Led.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="Led.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="mcp2515_defs.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="Output.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="Output.h">
<SubType>compile</SubType>
</Compile>
</ItemGroup>
<Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
</Project>
+336
View File
@@ -0,0 +1,336 @@
/*
* Can.cpp
*
* Created: 03.11.2013 22:09:17
* Author: netz
*/
#include "Can.h"
#define CANDDR_SPI DDRB
#define CANPORT_SPI PORTB
#define CANP_MISO PINB6
#define CANP_MOSI PINB5
#define CANP_SCK PINB7
#define CANDDR_CS DDRB
#define CANPORT_CS PORTB
#define CANP_CS PINB4
Can::Can() {
init_pin();
init_spi();
init_can();
}
void Can::init_pin() {
//SPI Pins
CANDDR_SPI |= (1<<CANP_SCK) | (1<<CANP_MOSI);
CANPORT_SPI &= ~((1<<CANP_SCK) | (1<<CANP_MOSI) | (1<<CANP_MISO));
//CS Pins
CANDDR_CS |= (1<<CANP_CS);
CANPORT_CS |= (1<<CANP_CS);
}
void Can::init_spi() {
SPCR = (1<<SPE) | (1<<MSTR);
SPSR = (1<<SPI2X);
}
void Can::init_can() {
// MCP2515 per Software Reset zuruecksetzten,
// danach ist der MCP2515 im Configuration Mode
CANPORT_CS &= ~(1<<CANP_CS);
spi_putc( SPI_RESET );
_delay_ms(1);
CANPORT_CS |= (1<<CANP_CS);
// etwas warten bis sich der MCP2515 zurueckgesetzt hat
_delay_ms(10);
/*
* Einstellen des Bit Timings
*
* Fosc = 16MHz
* BRP = 7 (teilen durch 8)
* TQ = 2 * (BRP + 1) / Fosc (=> 1 uS)
*
* Sync Seg = 1TQ
* Prop Seg = (PRSEG + 1) * TQ = 1 TQ
* Phase Seg1 = (PHSEG1 + 1) * TQ = 3 TQ
* Phase Seg2 = (PHSEG2 + 1) * TQ = 3 TQ
*
* Bus speed = 1 / (Total # of TQ) * TQ
* = 1 / 8 * TQ = 125 kHz
*/
// BRP = 7
mcp2515_write_register( CNF1, (1<<BRP0)|(1<<BRP1)|(1<<BRP2) );
// Prop Seg und Phase Seg1 einstellen
mcp2515_write_register( CNF2, (1<<BTLMODE)|(1<<PHSEG11) );
// Wake-up Filter deaktivieren, Phase Seg2 einstellen
mcp2515_write_register( CNF3, (1<<PHSEG21) );
// Aktivieren der Rx Buffer Interrupts
mcp2515_write_register( CANINTE, (1<<RX1IE)|(1<<RX0IE) );
/*
* Einstellen der Filter
*/
// Buffer 0 : Empfangen aller Nachrichten
mcp2515_write_register( RXB0CTRL, (1<<RXM1)|(1<<RXM0) );
// Buffer 1 : Empfangen aller Nachrichten
mcp2515_write_register( RXB1CTRL, (1<<RXM1)|(1<<RXM0) );
// Alle Bits der Empfangsmaske loeschen,
// damit werden alle Nachrichten empfangen
mcp2515_write_register( RXM0SIDH, 0 );
mcp2515_write_register( RXM0SIDL, 0 );
mcp2515_write_register( RXM0EID8, 0 );
mcp2515_write_register( RXM0EID0, 0 );
mcp2515_write_register( RXM1SIDH, 0 );
mcp2515_write_register( RXM1SIDL, 0 );
mcp2515_write_register( RXM1EID8, 0 );
mcp2515_write_register( RXM1EID0, 0 );
/*
* Einstellen der Pin Funktionen
*/
// Deaktivieren der Pins RXnBF Pins (High Impedance State)
mcp2515_write_register( BFPCTRL, 0 );
// TXnRTS Bits als Inputs schalten
mcp2515_write_register( TXRTSCTRL, 0 );
// Device zurueck in den normalen Modus versetzten
mcp2515_bit_modify( CANCTRL, 0xE0, 0);
}
uint8_t Can::spi_putc( uint8_t data ) {
// Sendet ein Byte
SPDR = data;
// Wartet bis Byte gesendet wurde
while( !( SPSR & (1<<SPIF) ) );
return SPDR;
}
void Can::mcp2515_write_register( uint8_t adress, uint8_t data )
{
// /CS des MCP2515 auf Low ziehen
CANPORT_CS &= ~(1<<CANP_CS);
spi_putc(SPI_WRITE);
spi_putc(adress);
spi_putc(data);
// /CS Leitung wieder freigeben
CANPORT_CS |= (1<<CANP_CS);
}
uint8_t Can::mcp2515_read_register(uint8_t adress)
{
uint8_t data;
// /CS des MCP2515 auf Low ziehen
CANPORT_CS &= ~(1<<CANP_CS);
spi_putc(SPI_READ);
spi_putc(adress);
data = spi_putc(0xff);
// /CS Leitung wieder freigeben
CANPORT_CS |= (1<<CANP_CS);
return data;
}
void Can::mcp2515_bit_modify(uint8_t adress, uint8_t mask, uint8_t data)
{
// /CS des MCP2515 auf Low ziehen
CANPORT_CS &= ~(1<<CANP_CS);
spi_putc(SPI_BIT_MODIFY);
spi_putc(adress);
spi_putc(mask);
spi_putc(data);
// /CS Leitung wieder freigeben
CANPORT_CS |= (1<<CANP_CS);
}
uint8_t Can::can_send_message(CANMessage *p_message)
{
uint8_t status, address;
// Status des MCP2515 auslesen
CANPORT_CS &= ~(1<<CANP_CS);
spi_putc(SPI_READ_STATUS);
status = spi_putc(0xff);
spi_putc(0xff);
CANPORT_CS |= (1<<CANP_CS);
/* Statusbyte:
*
* Bit Funktion
* 2 TXB0CNTRL.TXREQ
* 4 TXB1CNTRL.TXREQ
* 6 TXB2CNTRL.TXREQ
*/
if (bit_is_clear(status, 2)) {
address = 0x00;
}
else if (bit_is_clear(status, 4)) {
address = 0x02;
}
else if (bit_is_clear(status, 6)) {
address = 0x04;
}
else {
/* Alle Puffer sind belegt,
Nachricht kann nicht verschickt werden */
return 0;
}
CANPORT_CS &= ~(1<<CANP_CS); // CS Low
spi_putc(SPI_WRITE_TX | address);
// Standard ID einstellen
spi_putc((uint8_t) (p_message->id>>3));
spi_putc((uint8_t) (p_message->id<<5));
// Extended ID
spi_putc(0x00);
spi_putc(0x00);
uint8_t length = p_message->length;
if (length > 8) {
length = 8;
}
// Ist die Nachricht ein "Remote Transmit Request" ?
if (p_message->rtr)
{
/* Ein RTR hat zwar eine Laenge,
aber enthaelt keine Daten */
// Nachrichten Laenge + RTR einstellen
spi_putc((1<<RTR) | length);
}
else
{
// Nachrichten Laenge einstellen
spi_putc(length);
// Daten
for (uint8_t i=0;i<length;i++) {
spi_putc(p_message->data[i]);
}
}
CANPORT_CS |= (1<<CANP_CS); // CS auf High
asm volatile ("nop");
/* CAN Nachricht verschicken
die letzten drei Bit im RTS Kommando geben an welcher
Puffer gesendet werden soll */
CANPORT_CS &= ~(1<<CANP_CS); // CS wieder Low
if (address == 0x00) {
spi_putc(SPI_RTS | 0x01);
} else {
spi_putc(SPI_RTS | address);
}
CANPORT_CS |= (1<<CANP_CS); // CS auf High
return 1;
}
uint8_t Can::can_get_message(CANMessage *p_message)
{
// Status auslesen
uint8_t status = mcp2515_read_rx_status();
if (bit_is_set(status,6))
{
// Nachricht in Puffer 0
CANPORT_CS &= ~(1<<CANP_CS); // CS Low
spi_putc(SPI_READ_RX);
}
else if (bit_is_set(status,7))
{
// Nachricht in Puffer 1
CANPORT_CS &= ~(1<<CANP_CS); // CS Low
spi_putc(SPI_READ_RX | 0x04);
}
else {
/* Fehler: Keine neue Nachricht vorhanden */
return 0xff;
}
// Standard ID auslesen
p_message->id = (uint16_t) spi_putc(0xff) << 3;
p_message->id |= (uint16_t) spi_putc(0xff) >> 5;
spi_putc(0xff);
spi_putc(0xff);
// Laenge auslesen
uint8_t length = spi_putc(0xff) & 0x0f;
p_message->length = length;
// Daten auslesen
for (uint8_t i=0;i<length;i++) {
p_message->data[i] = spi_putc(0xff);
}
CANPORT_CS |= (1<<CANP_CS);
if (bit_is_set(status,3)) {
p_message->rtr = 1;
} else {
p_message->rtr = 0;
}
// Interrupt Flag loeschen
if (bit_is_set(status,6)) {
mcp2515_bit_modify(CANINTF, (1<<RX0IF), 0);
} else {
mcp2515_bit_modify(CANINTF, (1<<RX1IF), 0);
}
return (status & 0x07);
}
uint8_t Can::mcp2515_read_rx_status(void)
{
uint8_t data;
// /CS des MCP2515 auf Low ziehen
CANPORT_CS &= ~(1<<CANP_CS);
spi_putc(SPI_RX_STATUS);
data = spi_putc(0xff);
// Die Daten werden noch einmal wiederholt gesendet,
// man braucht also nur eins der beiden Bytes auswerten.
spi_putc(0xff);
// /CS Leitung wieder freigeben
CANPORT_CS |= (1<<CANP_CS);
return data;
}
+45
View File
@@ -0,0 +1,45 @@
/*
* Can.h
*
* Created: 03.11.2013 21:52:03
* Author: netz
*/
#include "config.h"
#include <avr/io.h>
#include <util/delay.h>
#include "mcp2515_defs.h"
#ifndef CAN_H_
#define CAN_H_
//#define DDR_CS DDRB
//#define PORT_CS PORTB
//#define P_CS 2
typedef struct
{
uint16_t id;
uint8_t rtr;
uint8_t length;
uint8_t data[8];
} CANMessage;
class Can {
private:
void init_spi();
void init_can();
void init_pin();
uint8_t spi_putc( uint8_t data );
void mcp2515_write_register( uint8_t adress, uint8_t data );
uint8_t mcp2515_read_register(uint8_t adress);
void mcp2515_bit_modify(uint8_t adress, uint8_t mask, uint8_t data);
uint8_t mcp2515_read_rx_status(void);
public:
Can();
uint8_t can_send_message(CANMessage *p_message);
uint8_t can_get_message(CANMessage *p_message);
};
#endif /* CAN_H_ */
+12 -3
View File
@@ -1,4 +1,4 @@
Button.d Button.o: .././Button.cpp \
Button.d Button.o: .././Button.cpp .././config.h .././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/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 \
@@ -10,10 +10,15 @@ Button.d Button.o: .././Button.cpp \
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 \
.././Output.h .././Can.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 \
.././Led.h
.././mcp2515_defs.h
.././config.h:
.././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/io.h:
@@ -37,10 +42,14 @@ 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:
.././Output.h:
.././Can.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:
.././Led.h:
.././mcp2515_defs.h:
Binary file not shown.
+87 -32
View File
@@ -1,33 +1,88 @@
:100000000C942A000C9434000C9434000C943400AA
:100010000C9434000C9434000C9434000C94340090
:100020000C9434000C9434000C9434000C94340080
:100030000C9434000C9434000C9434000C94340070
:100040000C9434000C9434000C9434000C94340060
:100050000C94340011241FBECFE5D8E0DEBFCDBF25
:100060000E9436000C94F7000C940000CF93DF93AD
:100070001F92CDB7DEB7CE0101960E944A00A59A25
:1000800065E0CE0101960E94B600FACF84B3876086
:1000900084BB08950E944600089585B3887F85BB80
:1000A00085B3962F9370892B6470682B65BB089578
:1000B0002F923F924F925F926F927F928F929F9278
:1000C000AF92BF92CF92DF92EF92FF920F931F9366
:1000D000CF93DF935C01862E942E690100E010E03F
:1000E000212C312C422C532C2AC0C62DD72D682D03
:1000F000C5010E944D002196CF3FD105C1F71016D2
:10010000110654F4C42DD52D692DC5010E944D0052
:100110002196C017D107C1F78FEFE81AF80AEC143F
:10012000FD0421F407C07101602E712E0F3F1105EF
:10013000E4F2E5CF0F5F1F4F0F3F110521F01C14B4
:100140001D048CF3F7CFDF91CF911F910F91FF909A
:10015000EF90DF90CF90BF90AF909F908F907F9067
:100160006F905F904F903F902F900895EC01162F65
:100170002AE030E044E050E067E070E00E94580080
:10018000212F30E046E050E064E070E0CE010E94B4
:100190005800212F30E042E050E066E070E0CE01F0
:1001A0000E945800212F30E043E050E062E070E010
:1001B000CE010E945800212F30E041E050E063E082
:1001C00070E0CE010E945800212F30E045E050E061
:1001D00061E070E0CE010E945800212F30E044E041
:1001E00050E065E070E0CE010E945800C9CFF8945D
:0201F000FFCF3F
:100000000C942B000C9448000C9448000C9448006D
:100010000C9448000C9448000C9448000C94480040
:100020000C9448000C9448000C9448000C94480030
:100030000C9448000C9448000C9448000C94480020
:100040000C9448000C9448000C9448000C94480010
:100050000C944800890011241FBECFE5D8E0DEBF14
:10006000CDBF20E0A0E6B0E001C01D92A336B207EC
:10007000E1F710E0C6E5D0E004C02297FE010E943F
:10008000B102C435D107C9F70E944A000C94B502E9
:100090000C940000CF93DF93CDB7DEB72C970FB64B
:1000A000F894DEBF0FBECDBF66E082E690E00E940E
:1000B000000283E291E09A8389831B8282E08C8331
:1000C0008FEA8D838EEF8E832AE030E044E050E0AB
:1000D00066E070E082E690E00E940B0281E690E02C
:1000E0000E94AD02BE016F5F7F4F80E690E00E94EC
:1000F0005D018FE99FE00197F1F700C0000081E604
:1001000090E00E94AB0265E082E690E00E94690206
:10011000E5CF82E690E00E94FD0181E690E00E943A
:10012000A70280E690E00E944F01089587B3806A9D
:1001300087BB88B38F7188BBBC9AC49A089580E549
:100140008DB981E08EB908956FB9779BFECF8FB1DD
:1001500008950F931F93CF93DF93EC01062F142F75
:10016000C49862E00E94A400602FCE010E94A40007
:10017000612FCE010E94A400C49ADF91CF911F91FC
:100180000F910895FF920F931F93CF93DF93EC018C
:10019000F62E042F122FC49865E00E94A4006F2D44
:1001A000CE010E94A400602FCE010E94A400612F06
:1001B000CE010E94A400C49ADF91CF911F910F91AC
:1001C000FF900895CF93DF93EC01C49860EC0E94F8
:1001D000A4008FE99FE00197F1F700C00000C49AE6
:1001E0008FE39CE90197F1F700C0000047E06AE265
:1001F000CE010E94A90040E969E2CE010E94A90057
:1002000042E068E2CE010E94A90043E06BE2CE0129
:100210000E94A90040E660E6CE010E94A90040E6E7
:1002200060E7CE010E94A90040E060E2CE010E949A
:10023000A90040E061E2CE010E94A90040E062E234
:10024000CE010E94A90040E063E2CE010E94A90015
:1002500040E064E2CE010E94A90040E065E2CE01E8
:100260000E94A90040E066E2CE010E94A90040E0A1
:1002700067E2CE010E94A90040E06CE0CE010E943E
:10028000A90040E06DE0CE010E94A90020E040EE10
:100290006FE0CE010E94C200DF91CF910895CF930D
:1002A000DF93EC010E949600CE010E949F00CE01D8
:1002B0000E94E200DF91CF910895AF92BF92CF925A
:1002C000DF92EF92FF920F931F93CF93DF931F92D2
:1002D000CDB7DEB78C016B01C49860EA0E94A40020
:1002E0006FEFC8010E94A40089836FEFC8010E94CC
:1002F000A400C49A898182FF0AC0898184FF09C051
:10030000898186FD69C06894BB24B2F805C0B12C10
:1003100003C06894BB24B1F8C4986B2D6064C80115
:100320000E94A400F60180819181BC0176956795B9
:100330007695679576956795C8010E94A400F601A9
:1003400060816295660F607EC8010E94A40060E033
:10035000C8010E94A40060E0C8010E94A400F60148
:10036000A380F8E0FA1518F46894AA24A3F8F6011B
:100370008281882331F06A2D6064C8010E94A40044
:1003800019C06A2DC8010E94A400AA2099F0760124
:10039000F4E0EF0EF11CAA948A2D90E00596C80EA9
:1003A000D91EF70161917F01C8010E94A400EC14DD
:1003B000FD04B9F7C49A0000C498B11005C061E803
:1003C000C8010E94A40005C06B2D6068C8010E948E
:1003D000A400C49A81E001C080E00F90DF91CF912A
:1003E0001F910F91FF90EF90DF90CF90BF90AF9053
:1003F000089584B3876084BB08950E94F90108952D
:1004000085B3887F85BB85B3962F9370892B6470E5
:10041000682B65BB08952F923F924F925F926F9227
:100420007F928F929F92AF92BF92CF92DF92EF9284
:10043000FF920F931F93CF93DF935C01862E942E30
:10044000690100E010E0212C312C422C532C2AC0F1
:10045000C62DD72D682DC5010E9400022196CF3FE1
:10046000D105C1F71016110654F4C42DD52D692DF0
:10047000C5010E9400022196C017D107C1F78FEF76
:10048000E81AF80AEC14FD0421F407C07101602E8B
:10049000712E0F3F1105E4F2E5CF0F5F1F4F0F3FA5
:1004A000110521F01C141D048CF3F7CFDF91CF91BF
:1004B0001F910F91FF90EF90DF90CF90BF90AF9082
:1004C0009F908F907F906F905F904F903F902F9074
:1004D00008951F93CF93DF93EC01162F262F30E062
:1004E00046E050E064E070E00E940B02212F30E013
:1004F00042E050E066E070E0CE010E940B02212F46
:1005000030E043E050E062E070E0CE010E940B0278
:10051000212F30E041E050E063E070E0CE010E9426
:100520000B02212F30E045E050E061E070E0CE01A9
:100530000E940B02212F30E044E050E065E070E0C3
:10054000CE010E940B02DF91CF911F91089584B3D9
:10055000806384BB0895AD980895AD9A0895EE0F19
:0E056000FF1F0590F491E02D0994F894FFCF51
:00000001FF
File diff suppressed because it is too large Load Diff
+221 -86
View File
@@ -2,16 +2,35 @@ Archive member included because of file (symbol)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o)
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/lib/avr5/crtm32a.o (exit)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_clear_bss.o)
Button.o (__do_clear_bss)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o)
Button.o (__do_global_ctors)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o) (__tablejump__)
Discarded input sections
.bss 0x00000000 0x0 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/lib/avr5/crtm32a.o
.text 0x00000000 0x0 Button.o
.bss 0x00000000 0x0 Button.o
.text 0x00000000 0x0 Can.o
.bss 0x00000000 0x0 Can.o
.text._ZN3Can21mcp2515_read_registerEh
0x00000000 0x2c Can.o
.text._ZN3Can22mcp2515_read_rx_statusEv
0x00000000 0x2e Can.o
.text._ZN3Can15can_get_messageEP10CANMessage
0x00000000 0x124 Can.o
.text 0x00000000 0x0 Led.o
.bss 0x00000000 0x0 Led.o
.text._ZN3Led6uninitEv
0x00000000 0x2 Led.o
.text 0x00000000 0x0 Output.o
.bss 0x00000000 0x0 Output.o
.text._ZN6Output8MotorOffEv
0x00000000 0x4 Output.o
.text._ZN6Output7MotorOnEv
0x00000000 0x4 Output.o
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o)
.text.libgcc.mul
@@ -25,6 +44,44 @@ Discarded input sections
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o)
.text.libgcc.fmul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_clear_bss.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_clear_bss.o)
.text.libgcc.mul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_clear_bss.o)
.text.libgcc.div
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_clear_bss.o)
.text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_clear_bss.o)
.text.libgcc.prologue
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_clear_bss.o)
.text.libgcc.builtins
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_clear_bss.o)
.text.libgcc.fmul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_clear_bss.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o)
.text.libgcc.mul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o)
.text.libgcc.div
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o)
.text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o)
.text.libgcc.prologue
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o)
.text.libgcc.builtins
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o)
.text.libgcc.fmul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o)
.text.libgcc.mul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o)
.text.libgcc.div
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o)
.text.libgcc.prologue
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o)
.text.libgcc.builtins
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o)
.text.libgcc.fmul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o)
Memory Configuration
@@ -42,7 +99,9 @@ Linker script and memory map
LOAD 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/lib/avr5/crtm32a.o
LOAD Button.o
LOAD Can.o
LOAD Led.o
LOAD Output.o
START GROUP
LOAD 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/lib/avr5\libm.a
END GROUP
@@ -142,7 +201,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8
.rela.plt
*(.rela.plt)
.text 0x00000000 0x1f2
.text 0x00000000 0x56e
*(.vectors)
.vectors 0x00000000 0x54 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/lib/avr5/crtm32a.o
0x00000000 __vector_default
@@ -162,84 +221,129 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8
*(.lowtext*)
0x00000054 __ctors_start = .
*(.ctors)
0x00000054 __ctors_end = .
0x00000054 __dtors_start = .
.ctors 0x00000054 0x2 Button.o
0x00000056 __ctors_end = .
0x00000056 __dtors_start = .
*(.dtors)
0x00000054 __dtors_end = .
0x00000056 __dtors_end = .
SORT(*)(.ctors)
SORT(*)(.dtors)
*(.init0)
.init0 0x00000054 0x0 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/lib/avr5/crtm32a.o
0x00000054 __init
.init0 0x00000056 0x0 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/lib/avr5/crtm32a.o
0x00000056 __init
*(.init0)
*(.init1)
*(.init1)
*(.init2)
.init2 0x00000054 0xc 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/lib/avr5/crtm32a.o
.init2 0x00000056 0xc 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/lib/avr5/crtm32a.o
*(.init2)
*(.init3)
*(.init3)
*(.init4)
.init4 0x00000062 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_clear_bss.o)
0x00000062 __do_clear_bss
*(.init4)
*(.init5)
*(.init5)
*(.init6)
.init6 0x00000072 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o)
0x00000072 __do_global_ctors
*(.init6)
*(.init7)
*(.init7)
*(.init8)
*(.init8)
*(.init9)
.init9 0x00000060 0x8 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/lib/avr5/crtm32a.o
.init9 0x00000088 0x8 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/lib/avr5/crtm32a.o
*(.init9)
*(.text)
.text 0x00000068 0x4 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/lib/avr5/crtm32a.o
0x00000068 __vector_1
0x00000068 __vector_12
0x00000068 __bad_interrupt
0x00000068 __vector_6
0x00000068 __vector_3
0x00000068 __vector_11
0x00000068 __vector_13
0x00000068 __vector_17
0x00000068 __vector_19
0x00000068 __vector_7
0x00000068 __vector_5
0x00000068 __vector_4
0x00000068 __vector_9
0x00000068 __vector_2
0x00000068 __vector_15
0x00000068 __vector_8
0x00000068 __vector_14
0x00000068 __vector_10
0x00000068 __vector_16
0x00000068 __vector_18
0x00000068 __vector_20
0x0000006c . = ALIGN (0x2)
.text 0x00000090 0x4 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/lib/avr5/crtm32a.o
0x00000090 __vector_1
0x00000090 __vector_12
0x00000090 __bad_interrupt
0x00000090 __vector_6
0x00000090 __vector_3
0x00000090 __vector_11
0x00000090 __vector_13
0x00000090 __vector_17
0x00000090 __vector_19
0x00000090 __vector_7
0x00000090 __vector_5
0x00000090 __vector_4
0x00000090 __vector_9
0x00000090 __vector_2
0x00000090 __vector_15
0x00000090 __vector_8
0x00000090 __vector_14
0x00000090 __vector_10
0x00000090 __vector_16
0x00000090 __vector_18
0x00000090 __vector_20
0x00000094 . = ALIGN (0x2)
*(.text.*)
.text.main 0x0000006c 0x20 Button.o
0x0000006c main
.text.main 0x00000094 0x7e Button.o
0x00000094 main
.text._GLOBAL__sub_I_l
0x00000112 0x1a Button.o
.text._ZN3Can8init_pinEv
0x0000012c 0x12 Can.o
0x0000012c _ZN3Can8init_pinEv
.text._ZN3Can8init_spiEv
0x0000013e 0xa Can.o
0x0000013e _ZN3Can8init_spiEv
.text._ZN3Can8spi_putcEh
0x00000148 0xa Can.o
0x00000148 _ZN3Can8spi_putcEh
.text._ZN3Can22mcp2515_write_registerEhh
0x00000152 0x32 Can.o
0x00000152 _ZN3Can22mcp2515_write_registerEhh
.text._ZN3Can18mcp2515_bit_modifyEhhh
0x00000184 0x40 Can.o
0x00000184 _ZN3Can18mcp2515_bit_modifyEhhh
.text._ZN3Can8init_canEv
0x000001c4 0xda Can.o
0x000001c4 _ZN3Can8init_canEv
.text._ZN3CanC2Ev
0x0000029e 0x1c Can.o
0x0000029e _ZN3CanC2Ev
0x0000029e _ZN3CanC1Ev
.text._ZN3Can16can_send_messageEP10CANMessage
0x000002ba 0x138 Can.o
0x000002ba _ZN3Can16can_send_messageEP10CANMessage
.text._ZN3Led4initEv
0x0000008c 0x8 Led.o
0x0000008c _ZN3Led4initEv
0x000003f2 0x8 Led.o
0x000003f2 _ZN3Led4initEv
.text._ZN3LedC2Ev
0x00000094 0x6 Led.o
0x00000094 _ZN3LedC1Ev
0x00000094 _ZN3LedC2Ev
0x000003fa 0x6 Led.o
0x000003fa _ZN3LedC1Ev
0x000003fa _ZN3LedC2Ev
.text._ZN3Led5colorEh
0x0000009a 0x16 Led.o
0x0000009a _ZN3Led5colorEh
0x00000400 0x16 Led.o
0x00000400 _ZN3Led5colorEh
.text._ZN3Led4fadeEiii
0x000000b0 0xbc Led.o
0x000000b0 _ZN3Led4fadeEiii
0x00000416 0xbc Led.o
0x00000416 _ZN3Led4fadeEiii
.text._ZN3Led7rainbowEh
0x0000016c 0x82 Led.o
0x0000016c _ZN3Led7rainbowEh
0x000001ee . = ALIGN (0x2)
0x000004d2 0x7c Led.o
0x000004d2 _ZN3Led7rainbowEh
.text._ZN6OutputC2Ev
0x0000054e 0x8 Output.o
0x0000054e _ZN6OutputC2Ev
0x0000054e _ZN6OutputC1Ev
.text._ZN6Output8AudioOffEv
0x00000556 0x4 Output.o
0x00000556 _ZN6Output8AudioOffEv
.text._ZN6Output7AudioOnEv
0x0000055a 0x4 Output.o
0x0000055a _ZN6Output7AudioOnEv
.text.libgcc 0x0000055e 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o)
0x0000055e __tablejump2__
0x00000562 __tablejump__
0x0000056a . = ALIGN (0x2)
*(.fini9)
.fini9 0x000001ee 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o)
0x000001ee _exit
0x000001ee exit
.fini9 0x0000056a 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o)
0x0000056a _exit
0x0000056a exit
*(.fini9)
*(.fini8)
*(.fini8)
@@ -258,17 +362,22 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8
*(.fini1)
*(.fini1)
*(.fini0)
.fini0 0x000001ee 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o)
.fini0 0x0000056a 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o)
*(.fini0)
0x000001f2 _etext = .
0x0000056e _etext = .
.data 0x00800060 0x0 load address 0x000001f2
.data 0x00800060 0x0 load address 0x0000056e
0x00800060 PROVIDE (__data_start, .)
*(.data)
.data 0x00800060 0x0 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/lib/avr5/crtm32a.o
.data 0x00800060 0x0 Button.o
.data 0x00800060 0x0 Can.o
.data 0x00800060 0x0 Led.o
.data 0x00800060 0x0 Output.o
.data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o)
.data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_clear_bss.o)
.data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o)
.data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o)
*(.data*)
*(.rodata)
*(.rodata*)
@@ -277,21 +386,25 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8
0x00800060 _edata = .
0x00800060 PROVIDE (__data_end, .)
.bss 0x00800060 0x0
.bss 0x00800060 0x3
0x00800060 PROVIDE (__bss_start, .)
*(.bss)
.bss 0x00800060 0x3 Button.o
0x00800060 c
0x00800061 o
0x00800062 l
*(.bss*)
*(COMMON)
0x00800060 PROVIDE (__bss_end, .)
0x000001f2 __data_load_start = LOADADDR (.data)
0x000001f2 __data_load_end = (__data_load_start + SIZEOF (.data))
0x00800063 PROVIDE (__bss_end, .)
0x0000056e __data_load_start = LOADADDR (.data)
0x0000056e __data_load_end = (__data_load_start + SIZEOF (.data))
.noinit 0x00800060 0x0
0x00800060 PROVIDE (__noinit_start, .)
.noinit 0x00800063 0x0
0x00800063 PROVIDE (__noinit_start, .)
*(.noinit*)
0x00800060 PROVIDE (__noinit_end, .)
0x00800060 _end = .
0x00800060 PROVIDE (__heap_start, .)
0x00800063 PROVIDE (__noinit_end, .)
0x00800063 _end = .
0x00800063 PROVIDE (__heap_start, .)
.eeprom 0x00810000 0x0
*(.eeprom*)
@@ -336,7 +449,9 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8
*(.comment)
.comment 0x00000000 0x2f Button.o
0x30 (size before relaxing)
.comment 0x00000000 0x30 Can.o
.comment 0x00000000 0x30 Led.o
.comment 0x00000000 0x30 Output.o
.debug
*(.debug)
@@ -350,48 +465,66 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8
.debug_sfnames
*(.debug_sfnames)
.debug_aranges 0x00000000 0x68
.debug_aranges 0x00000000 0x120
*(.debug_aranges)
.debug_aranges
0x00000000 0x20 Button.o
0x00000000 0x28 Button.o
.debug_aranges
0x00000020 0x48 Led.o
0x00000028 0x70 Can.o
.debug_aranges
0x00000098 0x48 Led.o
.debug_aranges
0x000000e0 0x40 Output.o
.debug_pubnames
*(.debug_pubnames)
.debug_info 0x00000000 0x79b
.debug_info 0x00000000 0x1b32
*(.debug_info)
.debug_info 0x00000000 0x24c Button.o
.debug_info 0x0000024c 0x54f Led.o
.debug_info 0x00000000 0x6b5 Button.o
.debug_info 0x000006b5 0xdae Can.o
.debug_info 0x00001463 0x4db Led.o
.debug_info 0x0000193e 0x1f4 Output.o
*(.gnu.linkonce.wi.*)
.debug_abbrev 0x00000000 0x34c
.debug_abbrev 0x00000000 0x8d3
*(.debug_abbrev)
.debug_abbrev 0x00000000 0x14c Button.o
.debug_abbrev 0x0000014c 0x200 Led.o
.debug_abbrev 0x00000000 0x2d0 Button.o
.debug_abbrev 0x000002d0 0x2fa Can.o
.debug_abbrev 0x000005ca 0x1eb Led.o
.debug_abbrev 0x000007b5 0x11e Output.o
.debug_line 0x00000000 0x262
.debug_line 0x00000000 0x686
*(.debug_line)
.debug_line 0x00000000 0xe3 Button.o
.debug_line 0x000000e3 0x17f Led.o
.debug_line 0x00000000 0x1ca Button.o
.debug_line 0x000001ca 0x2ce Can.o
.debug_line 0x00000498 0x165 Led.o
.debug_line 0x000005fd 0x89 Output.o
.debug_frame 0x00000000 0x104
.debug_frame 0x00000000 0x324
*(.debug_frame)
.debug_frame 0x00000000 0x34 Button.o
.debug_frame 0x00000034 0xd0 Led.o
.debug_frame 0x00000000 0x44 Button.o
.debug_frame 0x00000044 0x19c Can.o
.debug_frame 0x000001e0 0xe0 Led.o
.debug_frame 0x000002c0 0x64 Output.o
.debug_str 0x00000000 0x173
.debug_str 0x00000000 0x4ae
*(.debug_str)
.debug_str 0x00000000 0x146 Button.o
.debug_str 0x00000000 0x430 Button.o
0x481 (size before relaxing)
.debug_str 0x00000430 0x3c Can.o
0x33e (size before relaxing)
.debug_str 0x0000046c 0x23 Led.o
0x17f (size before relaxing)
.debug_str 0x00000146 0x2d Led.o
0x197 (size before relaxing)
.debug_str 0x0000048f 0x1f Output.o
0x150 (size before relaxing)
.debug_loc 0x00000000 0x3db
.debug_loc 0x00000000 0xb79
*(.debug_loc)
.debug_loc 0x00000000 0x48 Button.o
.debug_loc 0x00000048 0x393 Led.o
.debug_loc 0x00000000 0x47 Button.o
.debug_loc 0x00000047 0x721 Can.o
.debug_loc 0x00000768 0x3eb Led.o
.debug_loc 0x00000b53 0x26 Output.o
.debug_macinfo
*(.debug_macinfo)
@@ -399,10 +532,12 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8
.debug_pubtypes
*(.debug_pubtypes)
.debug_ranges 0x00000000 0x90
.debug_ranges 0x00000000 0x128
*(.debug_ranges)
.debug_ranges 0x00000000 0x10 Button.o
.debug_ranges 0x00000010 0x80 Led.o
.debug_ranges 0x00000000 0x18 Button.o
.debug_ranges 0x00000018 0x60 Can.o
.debug_ranges 0x00000078 0x80 Led.o
.debug_ranges 0x000000f8 0x30 Output.o
.debug_macro
*(.debug_macro)
+87 -32
View File
@@ -1,34 +1,89 @@
S00E0000427574746F6E2E737265639A
S11300000C942A000C9434000C9434000C943400A6
S11300100C9434000C9434000C9434000C9434008C
S11300200C9434000C9434000C9434000C9434007C
S11300300C9434000C9434000C9434000C9434006C
S11300400C9434000C9434000C9434000C9434005C
S11300500C94340011241FBECFE5D8E0DEBFCDBF21
S11300600E9436000C94F7000C940000CF93DF93A9
S11300701F92CDB7DEB7CE0101960E944A00A59A21
S113008065E0CE0101960E94B600FACF84B3876082
S113009084BB08950E944600089585B3887F85BB7C
S11300A085B3962F9370892B6470682B65BB089574
S11300B02F923F924F925F926F927F928F929F9274
S11300C0AF92BF92CF92DF92EF92FF920F931F9362
S11300D0CF93DF935C01862E942E690100E010E03B
S11300E0212C312C422C532C2AC0C62DD72D682DFF
S11300F0C5010E944D002196CF3FD105C1F71016CE
S1130100110654F4C42DD52D692DC5010E944D004E
S11301102196C017D107C1F78FEFE81AF80AEC143B
S1130120FD0421F407C07101602E712E0F3F1105EB
S1130130E4F2E5CF0F5F1F4F0F3F110521F01C14B0
S11301401D048CF3F7CFDF91CF911F910F91FF9096
S1130150EF90DF90CF90BF90AF909F908F907F9063
S11301606F905F904F903F902F900895EC01162F61
S11301702AE030E044E050E067E070E00E9458007C
S1130180212F30E046E050E064E070E0CE010E94B0
S11301905800212F30E042E050E066E070E0CE01EC
S11301A00E945800212F30E043E050E062E070E00C
S11301B0CE010E945800212F30E041E050E063E07E
S11301C070E0CE010E945800212F30E045E050E05D
S11301D061E070E0CE010E945800212F30E044E03D
S11301E050E065E070E0CE010E945800C9CFF89459
S10501F0FFCF3B
S11300000C942B000C9448000C9448000C94480069
S11300100C9448000C9448000C9448000C9448003C
S11300200C9448000C9448000C9448000C9448002C
S11300300C9448000C9448000C9448000C9448001C
S11300400C9448000C9448000C9448000C9448000C
S11300500C944800890011241FBECFE5D8E0DEBF10
S1130060CDBF20E0A0E6B0E001C01D92A336B207E8
S1130070E1F710E0C6E5D0E004C02297FE010E943B
S1130080B102C435D107C9F70E944A000C94B502E5
S11300900C940000CF93DF93CDB7DEB72C970FB647
S11300A0F894DEBF0FBECDBF66E082E690E00E940A
S11300B0000283E291E09A8389831B8282E08C832D
S11300C08FEA8D838EEF8E832AE030E044E050E0A7
S11300D066E070E082E690E00E940B0281E690E028
S11300E00E94AD02BE016F5F7F4F80E690E00E94E8
S11300F05D018FE99FE00197F1F700C0000081E600
S113010090E00E94AB0265E082E690E00E94690202
S1130110E5CF82E690E00E94FD0181E690E00E9436
S1130120A70280E690E00E944F01089587B3806A99
S113013087BB88B38F7188BBBC9AC49A089580E545
S11301408DB981E08EB908956FB9779BFECF8FB1D9
S113015008950F931F93CF93DF93EC01062F142F71
S1130160C49862E00E94A400602FCE010E94A40003
S1130170612FCE010E94A400C49ADF91CF911F91F8
S11301800F910895FF920F931F93CF93DF93EC0188
S1130190F62E042F122FC49865E00E94A4006F2D40
S11301A0CE010E94A400602FCE010E94A400612F02
S11301B0CE010E94A400C49ADF91CF911F910F91A8
S11301C0FF900895CF93DF93EC01C49860EC0E94F4
S11301D0A4008FE99FE00197F1F700C00000C49AE2
S11301E08FE39CE90197F1F700C0000047E06AE261
S11301F0CE010E94A90040E969E2CE010E94A90053
S113020042E068E2CE010E94A90043E06BE2CE0125
S11302100E94A90040E660E6CE010E94A90040E6E3
S113022060E7CE010E94A90040E060E2CE010E9496
S1130230A90040E061E2CE010E94A90040E062E230
S1130240CE010E94A90040E063E2CE010E94A90011
S113025040E064E2CE010E94A90040E065E2CE01E4
S11302600E94A90040E066E2CE010E94A90040E09D
S113027067E2CE010E94A90040E06CE0CE010E943A
S1130280A90040E06DE0CE010E94A90020E040EE0C
S11302906FE0CE010E94C200DF91CF910895CF9309
S11302A0DF93EC010E949600CE010E949F00CE01D4
S11302B00E94E200DF91CF910895AF92BF92CF9256
S11302C0DF92EF92FF920F931F93CF93DF931F92CE
S11302D0CDB7DEB78C016B01C49860EA0E94A4001C
S11302E06FEFC8010E94A40089836FEFC8010E94C8
S11302F0A400C49A898182FF0AC0898184FF09C04D
S1130300898186FD69C06894BB24B2F805C0B12C0C
S113031003C06894BB24B1F8C4986B2D6064C80111
S11303200E94A400F60180819181BC0176956795B5
S11303307695679576956795C8010E94A400F601A5
S113034060816295660F607EC8010E94A40060E02F
S1130350C8010E94A40060E0C8010E94A400F60144
S1130360A380F8E0FA1518F46894AA24A3F8F60117
S11303708281882331F06A2D6064C8010E94A40040
S113038019C06A2DC8010E94A400AA2099F0760120
S1130390F4E0EF0EF11CAA948A2D90E00596C80EA5
S11303A0D91EF70161917F01C8010E94A400EC14D9
S11303B0FD04B9F7C49A0000C498B11005C061E8FF
S11303C0C8010E94A40005C06B2D6068C8010E948A
S11303D0A400C49A81E001C080E00F90DF91CF9126
S11303E01F910F91FF90EF90DF90CF90BF90AF904F
S11303F0089584B3876084BB08950E94F901089529
S113040085B3887F85BB85B3962F9370892B6470E1
S1130410682B65BB08952F923F924F925F926F9223
S11304207F928F929F92AF92BF92CF92DF92EF9280
S1130430FF920F931F93CF93DF935C01862E942E2C
S1130440690100E010E0212C312C422C532C2AC0ED
S1130450C62DD72D682DC5010E9400022196CF3FDD
S1130460D105C1F71016110654F4C42DD52D692DEC
S1130470C5010E9400022196C017D107C1F78FEF72
S1130480E81AF80AEC14FD0421F407C07101602E87
S1130490712E0F3F1105E4F2E5CF0F5F1F4F0F3FA1
S11304A0110521F01C141D048CF3F7CFDF91CF91BB
S11304B01F910F91FF90EF90DF90CF90BF90AF907E
S11304C09F908F907F906F905F904F903F902F9070
S11304D008951F93CF93DF93EC01162F262F30E05E
S11304E046E050E064E070E00E940B02212F30E00F
S11304F042E050E066E070E0CE010E940B02212F42
S113050030E043E050E062E070E0CE010E940B0274
S1130510212F30E041E050E063E070E0CE010E9422
S11305200B02212F30E045E050E061E070E0CE01A5
S11305300E940B02212F30E044E050E065E070E0BF
S1130540CE010E940B02DF91CF911F91089584B3D5
S1130550806384BB0895AD980895AD9A0895EE0F15
S1110560FF1F0590F491E02D0994F894FFCF4D
S9030000FC
+50
View File
@@ -0,0 +1,50 @@
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/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/avr/iom32a.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
.././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/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/avr/iom32a.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:
+19 -5
View File
@@ -37,7 +37,9 @@ SUBDIRS :=
# Add inputs and outputs from these tool invocations to the build variables
C_SRCS += \
../Button.cpp \
../Led.cpp
../Can.cpp \
../Led.cpp \
../Output.cpp
PREPROCESSING_SRCS +=
@@ -48,22 +50,30 @@ ASM_SRCS +=
OBJS += \
Button.o \
Led.o
Can.o \
Led.o \
Output.o
OBJS_AS_ARGS += \
Button.o \
Led.o
Can.o \
Led.o \
Output.o
C_DEPS += \
Button.d \
Led.d
Can.d \
Led.d \
Output.d
C_DEPS_AS_ARGS += \
Button.d \
Led.d
Can.d \
Led.d \
Output.d
OUTPUT_FILE_PATH +=Button.elf
@@ -82,6 +92,10 @@ LIB_DEP+=
./%.o: .././%.cpp
@echo Building file: $<
@echo Invoking: AVR8/GNU C++ Compiler :
+36
View File
@@ -0,0 +1,36 @@
Output.d Output.o: .././Output.cpp .././Output.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/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/avr/iom32a.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
.././Output.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/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/avr/iom32a.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:
+4
View File
@@ -4,5 +4,9 @@
Button.cpp
Can.cpp
Led.cpp
Output.cpp
+15 -18
View File
@@ -6,18 +6,22 @@
*/
#include "Led.h"
#define LEDPORT PORTC
#define LEDDDR DDRC
#define LEDPINR PINC2
#define LEDPING PINC1
#define LEDPINB PINC0
#define LEDPINM PINC0
Led::Led() {
init();
}
void Led::init() {
//*Led::DDR |= (1<<Led::PIN_R) | (1<<Led::PIN_G) | (1<<Led::PIN_B);
LEDDDR |= (1<<Led::PIN_R) | (1<<Led::PIN_G) | (1<<Led::PIN_B);
LEDDDR |= (1<<LEDPINR) | (1<<LEDPING) | (1<<LEDPINB);
}
void Led::uninit() {
//*DDR &= ~((1<<PIN_R) | (1<<PIN_G) | (1<<PIN_B));
}
void Led::color(uint8_t mask) {
@@ -26,24 +30,17 @@ void Led::color(uint8_t mask) {
rgb |= (mask & (1<<1)) ? (1<<1) : (0<<1);
rgb |= (mask & (1<<2)) ? (1<<2) : (0<<2);
//*Led::PORT &= ~((1<<Led::PIN_R) | (1<<Led::PIN_G) | (1<<Led::PIN_B));
LEDPORT &= ~((1<<Led::PIN_R) | (1<<Led::PIN_G) | (1<<Led::PIN_B));
//PORTB &= ~((1<<PINB5) | (1<<PINB6) | (1<<PINB7));
//*Led::PORT |= (rgb<<Led::PIN_M);
LEDPORT |= (rgb<<Led::PIN_M);
//PORTB |= (rgb<<PINB5);
LEDPORT &= ~((1<<LEDPINR) | (1<<LEDPING) | (1<<LEDPINB));
LEDPORT |= (rgb<<LEDPINM);
}
void Led::rainbow(uint8_t time) {
fade(WHITE, RED, 10);
while(1) {
fade(RED, YELLOW, time);
fade(YELLOW, GREEN, time);
fade(GREEN, CYAN, time);
fade(CYAN, BLUE, time);
fade(BLUE, MAGENTA, time);
fade(MAGENTA, RED, 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 Led::fade(int from, int to, int dur) {
+1 -10
View File
@@ -10,15 +10,13 @@
#ifndef LED_H_
#define LED_H_
#define LEDPORT PORTC
#define LEDDDR DDRC
class Led {
public:
Led();
//virtual ~Led();
void color(uint8_t mask);
void rainbow(uint8_t time);
void fade(int from, int to, int dur);
static const uint8_t BLACK = 0;
static const uint8_t BLUE = 1;
static const uint8_t GREEN = 2;
@@ -28,13 +26,6 @@ class Led {
static const uint8_t YELLOW = 6;
static const uint8_t WHITE = 7;
private:
//static const uint8_t DDR = &DDRC;
//volatile uint8_t *PORT = &PORTC;
static const uint8_t PIN_R = PINC2;
static const uint8_t PIN_G = PINC1;
static const uint8_t PIN_B = PINC0;
static const uint8_t PIN_M = PINC0;
void fade(int from, int to, int dur);
void init();
void uninit();
};
+32
View File
@@ -0,0 +1,32 @@
/*
* Output.cpp
*
* Created: 03.11.2013 21:17:43
* Author: netz
*/
#include "Output.h"
#define OUTPUTPORT PORTC
#define OUTPUTDDR DDRC
#define OUTPUTM PINC4
#define OUTPUTA PINC5
Output::Output() {
OUTPUTDDR |= (1<<OUTPUTA) | (1<<OUTPUTM);
}
void Output::AudioOff() {
OUTPUTPORT &= ~(1<<OUTPUTA);
}
void Output::AudioOn() {
OUTPUTPORT |= (1<<OUTPUTA);
}
void Output::MotorOff() {
OUTPUTPORT &= ~(1<<OUTPUTM);
}
void Output::MotorOn() {
OUTPUTPORT |= (1<<OUTPUTM);
}
+24
View File
@@ -0,0 +1,24 @@
/*
* Output.h
*
* Created: 03.11.2013 19:13:56
* Author: netz
*/
#include <avr/io.h>
#ifndef OUTPUT_H_
#define OUTPUT_H_
class Output {
public:
Output();
void AudioOn();
void AudioOff();
void MotorOn();
void MotorOff();
};
#endif /* OUTPUT_H_ */
+16
View File
@@ -0,0 +1,16 @@
/*
* config.h
*
* Created: 03.11.2013 22:39:54
* Author: netz
*/
#ifndef CONFIG_H_
#define CONFIG_H_
#define F_CPU 16000000
#endif /* CONFIG_H_ */
+280
View File
@@ -0,0 +1,280 @@
#ifndef MCP2515_DEFS_H
#define MCP2515_DEFS_H
/** \name SPI Kommandos */
/*@{*/
#define SPI_RESET 0xC0
#define SPI_READ 0x03
#define SPI_READ_RX 0x90
#define SPI_WRITE 0x02
#define SPI_WRITE_TX 0x40
#define SPI_RTS 0x80
#define SPI_READ_STATUS 0xA0
#define SPI_RX_STATUS 0xB0
#define SPI_BIT_MODIFY 0x05
/*@}*/
/** \name Adressen der Register des MCP2515
*
* Die Redundanten Adressen von z.B. dem Register CANSTAT
* (0x0E, 0x1E, 0x2E, ...) wurden dabei nicht mit aufgelistet.
*/
/*@{*/
#define RXF0SIDH 0x00
#define RXF0SIDL 0x01
#define RXF0EID8 0x02
#define RXF0EID0 0x03
#define RXF1SIDH 0x04
#define RXF1SIDL 0x05
#define RXF1EID8 0x06
#define RXF1EID0 0x07
#define RXF2SIDH 0x08
#define RXF2SIDL 0x09
#define RXF2EID8 0x0A
#define RXF2EID0 0x0B
#define BFPCTRL 0x0C
#define TXRTSCTRL 0x0D
#define CANSTAT 0x0E
#define CANCTRL 0x0F
#define RXF3SIDH 0x10
#define RXF3SIDL 0x11
#define RXF3EID8 0x12
#define RXF3EID0 0x13
#define RXF4SIDH 0x14
#define RXF4SIDL 0x15
#define RXF4EID8 0x16
#define RXF4EID0 0x17
#define RXF5SIDH 0x18
#define RXF5SIDL 0x19
#define RXF5EID8 0x1A
#define RXF5EID0 0x1B
#define TEC 0x1C
#define REC 0x1D
#define RXM0SIDH 0x20
#define RXM0SIDL 0x21
#define RXM0EID8 0x22
#define RXM0EID0 0x23
#define RXM1SIDH 0x24
#define RXM1SIDL 0x25
#define RXM1EID8 0x26
#define RXM1EID0 0x27
#define CNF3 0x28
#define CNF2 0x29
#define CNF1 0x2A
#define CANINTE 0x2B
#define CANINTF 0x2C
#define EFLG 0x2D
#define TXB0CTRL 0x30
#define TXB0SIDH 0x31
#define TXB0SIDL 0x32
#define TXB0EID8 0x33
#define TXB0EID0 0x34
#define TXB0DLC 0x35
#define TXB0D0 0x36
#define TXB0D1 0x37
#define TXB0D2 0x38
#define TXB0D3 0x39
#define TXB0D4 0x3A
#define TXB0D5 0x3B
#define TXB0D6 0x3C
#define TXB0D7 0x3D
#define TXB1CTRL 0x40
#define TXB1SIDH 0x41
#define TXB1SIDL 0x42
#define TXB1EID8 0x43
#define TXB1EID0 0x44
#define TXB1DLC 0x45
#define TXB1D0 0x46
#define TXB1D1 0x47
#define TXB1D2 0x48
#define TXB1D3 0x49
#define TXB1D4 0x4A
#define TXB1D5 0x4B
#define TXB1D6 0x4C
#define TXB1D7 0x4D
#define TXB2CTRL 0x50
#define TXB2SIDH 0x51
#define TXB2SIDL 0x52
#define TXB2EID8 0x53
#define TXB2EID0 0x54
#define TXB2DLC 0x55
#define TXB2D0 0x56
#define TXB2D1 0x57
#define TXB2D2 0x58
#define TXB2D3 0x59
#define TXB2D4 0x5A
#define TXB2D5 0x5B
#define TXB2D6 0x5C
#define TXB2D7 0x5D
#define RXB0CTRL 0x60
#define RXB0SIDH 0x61
#define RXB0SIDL 0x62
#define RXB0EID8 0x63
#define RXB0EID0 0x64
#define RXB0DLC 0x65
#define RXB0D0 0x66
#define RXB0D1 0x67
#define RXB0D2 0x68
#define RXB0D3 0x69
#define RXB0D4 0x6A
#define RXB0D5 0x6B
#define RXB0D6 0x6C
#define RXB0D7 0x6D
#define RXB1CTRL 0x70
#define RXB1SIDH 0x71
#define RXB1SIDL 0x72
#define RXB1EID8 0x73
#define RXB1EID0 0x74
#define RXB1DLC 0x75
#define RXB1D0 0x76
#define RXB1D1 0x77
#define RXB1D2 0x78
#define RXB1D3 0x79
#define RXB1D4 0x7A
#define RXB1D5 0x7B
#define RXB1D6 0x7C
#define RXB1D7 0x7D
/*@}*/
/** \name Bitdefinition der verschiedenen Register */
/*@{*/
/** \brief Bitdefinition von BFPCTRL */
#define B1BFS 5
#define B0BFS 4
#define B1BFE 3
#define B0BFE 2
#define B1BFM 1
#define B0BFM 0
/** \brief Bitdefinition von TXRTSCTRL */
#define B2RTS 5
#define B1RTS 4
#define B0RTS 3
#define B2RTSM 2
#define B1RTSM 1
#define B0RTSM 0
/** \brief Bitdefinition von CANSTAT */
#define OPMOD2 7
#define OPMOD1 6
#define OPMOD0 5
#define ICOD2 3
#define ICOD1 2
#define ICOD0 1
/** \brief Bitdefinition von CANCTRL */
#define REQOP2 7
#define REQOP1 6
#define REQOP0 5
#define ABAT 4
#define CLKEN 2
#define CLKPRE1 1
#define CLKPRE0 0
/** \brief Bitdefinition von CNF3 */
#define WAKFIL 6
#define PHSEG22 2
#define PHSEG21 1
#define PHSEG20 0
/** \brief Bitdefinition von CNF2 */
#define BTLMODE 7
#define SAM 6
#define PHSEG12 5
#define PHSEG11 4
#define PHSEG10 3
#define PHSEG2 2
#define PHSEG1 1
#define PHSEG0 0
/** \brief Bitdefinition von CNF1 */
#define SJW1 7
#define SJW0 6
#define BRP5 5
#define BRP4 4
#define BRP3 3
#define BRP2 2
#define BRP1 1
#define BRP0 0
/** \brief Bitdefinition von CANINTE */
#define MERRE 7
#define WAKIE 6
#define ERRIE 5
#define TX2IE 4
#define TX1IE 3
#define TX0IE 2
#define RX1IE 1
#define RX0IE 0
/** \brief Bitdefinition von CANINTF */
#define MERRF 7
#define WAKIF 6
#define ERRIF 5
#define TX2IF 4
#define TX1IF 3
#define TX0IF 2
#define RX1IF 1
#define RX0IF 0
/** \brief Bitdefinition von EFLG */
#define RX1OVR 7
#define RX0OVR 6
#define TXB0 5
#define TXEP 4
#define RXEP 3
#define TXWAR 2
#define RXWAR 1
#define EWARN 0
/** \brief Bitdefinition von TXBnCTRL (n = 0, 1, 2) */
#define ABTF 6
#define MLOA 5
#define TXERR 4
#define TXREQ 3
#define TXP1 1
#define TXP0 0
/** \brief Bitdefinition von RXB0CTRL */
#define RXM1 6
#define RXM0 5
#define RXRTR 3
#define BUKT 2
#define BUKT1 1
#define FILHIT0 0
/** \brief Bitdefinition von TXBnSIDL (n = 0, 1) */
#define EXIDE 3
/**
* \brief Bitdefinition von RXB1CTRL
* \see RXM1, RXM0, RXRTR und FILHIT0 sind schon fuer RXB0CTRL definiert
*/
#define FILHIT2 2
#define FILHIT1 1
/** \brief Bitdefinition von RXBnSIDL (n = 0, 1) */
#define SRR 4
#define IDE 3
/**
* \brief Bitdefinition von RXBnDLC (n = 0, 1)
* \see TXBnDLC (gleiche Bits)
*/
#define RTR 6
#define DLC3 3
#define DLC2 2
#define DLC1 1
#define DLC0 0
/*@}*/
#endif // MCP2515_DEFS_H