20131211-181002

This commit is contained in:
2013-12-11 17:09:50 +00:00
parent 64b1bd8c1b
commit 11933f0506
16 changed files with 711 additions and 441 deletions
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -78,7 +78,7 @@ LIB_DEP+=
./%.o: .././%.cpp
@echo Building file: $<
@echo Invoking: AVR8/GNU C++ Compiler :
$(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.876\avr8-gnu-toolchain\bin\avr-g++.exe$(QUOTE) -funsigned-char -funsigned-bitfields -DDEBUG -Os -ffunction-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny2313 -c -std=c++11 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o"$@" "$<"
$(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.876\avr8-gnu-toolchain\bin\avr-g++.exe$(QUOTE) -funsigned-char -funsigned-bitfields -DDEBUG -O3 -ffunction-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=attiny2313 -c -std=c++11 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o"$@" "$<"
@echo Finished building: $<
Binary file not shown.
+44 -29
View File
@@ -1,31 +1,46 @@
:1000000013C035C034C033C032C031C054C02FC05B
:1000000013C035C034C033C032C031C041C086C017
:100010002EC02DC02CC02BC02AC029C028C027C08C
:1000200026C025C024C09D0011241FBECFEDCDBF2A
:1000300010E0A0E6B0E0E4EAF1E002C005900D9225
:10004000A438B107D9F720E0A4E8B0E001C01D92C0
:10005000A43AB207E1F710E0C8E2D0E003C022976B
:10006000FE019AD0C632D107D1F702D099C0C8CFCD
:100070007894109284008CEA8093850090E002C00E
:1000800080E0982FE0E7F0E003C05D9BFECF8CB9E5
:1000900081918111FACF892F8F5F909384002FE790
:1000A00034E89EE1215030409040E1F700C000006C
:1000B000803130F7E6CF1F920F920FB60F921124C6
:1000C0002F933F934F935F936F938F939F93EF93F0
:1000D000FF9380E00CC0E0918400F0E0EC57FF4F0C
:1000E000928198BB96E09A95F1F700C08F5F90914E
:1000F0008500891780F360E04FEF50E006C018BA22
:10010000E6E0EA95F1F700C06F5F262F30E08091BE
:100110008500FA01E81BF1092E173F0784F3FF91D0
:10012000EF919F918F916F915F914F913F912F919F
:100130000F900FBE0F901F9018951092960010927E
:100140009700789486E083B988E08AB912B881E88C
:1001500089B9E7E7F0E003C05D9BFECF8CB98191E0
:100160008111FACF109284001092850080E1E0E6C0
:10017000F0E0A6E8B0E001900D928A95E1F78FE7F4
:1001800087BB10BE83E083BF12BE16BE1CBE82E0DA
:1001900089BF0895EE0FFF1F0590F491E02D09949B
:0401A000F894FFCF01
:1001A4007B036E4F175D7D0B7F5F3F7578677C3CEB
:1001B400626C612E2E0A005561727420646F6E6544
:0401C400210A00000C
:1000200026C025C024C00F0111241FBECFEDCDBFB7
:1000300010E0A0E6B0E0ECE8F2E002C005900D921E
:10004000A439B107D9F720E0A4E9B0E001C01D92BE
:10005000A83BB207E1F710E0C8E2D0E003C0229766
:10006000FE010ED1C632D107D1F702D00DC1C8CFE3
:1000700078948091A7009091A6009093940080932B
:1000800095008FE493EC0197F1F700C00000F1CFE9
:100090001F920F920FB60F9211242F933F934F93FD
:1000A0005F936F938F939F93EF93FF93809195004E
:1000B000882399F080E0E0919400F0E0EC56FF4F47
:1000C000928198BB96E09A95F1F700C08F5F90916E
:1000D0009500891780F39F3F99F060E04FEF50E063
:1000E00018BAE6E0EA95F1F700C06F5F262F30E01E
:1000F00080919500FA01E81BF1092E173F0784F360
:10010000FF91EF919F918F916F915F914F913F91EF
:100110002F910F900FBE0F901F9018951F920F9266
:100120000FB60F9211242F933F934F938F939F936A
:10013000EF93FF938CB18A3039F08D3029F0909194
:10014000A8009F3008F43FC08091A900843709F4CB
:1001500060C08091A900843609F441C0EAE7F0E06C
:1001600087E55D9BFECF8CB981918111FACF80919B
:10017000A600805D5D9BFECF8CB9E1E7F0E080E2F8
:100180005D9BFECF8CB981918111FACF8091A70040
:10019000805D5D9BFECF8CB9E2E9F0E08DE05D9B78
:1001A000FECF8CB981918111FACF1092A800FF91F6
:1001B000EF919F918F914F913F912F910F900FBE93
:1001C0000F901F901895E091A800F0E0EA55FF4FBE
:1001D00083838091A8008F5F8093A800E8CF30913F
:1001E000AA004091AB008091AC00805D232F220FCC
:1001F000230F922F9295990F907E920F930F890F54
:10020000942F990F990F940F990F890F8093A7003E
:10021000A5CF8091AB0080538093A6009ACF109217
:10022000A6001092A7001092A800789486E083B9E7
:1002300088E98AB912B881E889B9E8E8F0E085E58B
:100240005D9BFECF8CB981918111FACF1092940001
:100250001092950080E1E0E6F0E0A6E9B0E00190C0
:100260000D928A95E1F78FE787BB10BE83E083BFCD
:1002700012BE16BE1CBE82E089BF0895EE0FFF1F9E
:0C0280000590F491E02D0994F894FFCF54
:10028C007B036E4F175D7D0B7F5F3F7578677C3C02
:10029C00204C696768743A200057657274653A207F
:1002AC0054696D653A20005561727420646F6E65F7
:0402BC00210D0A0006
:00000001FF
+439 -222
View File
@@ -3,33 +3,33 @@ Zahl.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000001a4 00000000 00000000 00000094 2**1
0 .text 0000028c 00000000 00000000 00000094 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000024 00800060 000001a4 00000238 2**0
1 .data 00000034 00800060 0000028c 00000320 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000020 00800084 00800084 0000025c 2**0
2 .bss 00000024 00800094 00800094 00000354 2**0
ALLOC
3 .stab 000006b4 00000000 00000000 0000025c 2**2
3 .stab 000006b4 00000000 00000000 00000354 2**2
CONTENTS, READONLY, DEBUGGING
4 .stabstr 00000082 00000000 00000000 00000910 2**0
4 .stabstr 00000082 00000000 00000000 00000a08 2**0
CONTENTS, READONLY, DEBUGGING
5 .comment 0000002f 00000000 00000000 00000992 2**0
5 .comment 0000002f 00000000 00000000 00000a8a 2**0
CONTENTS, READONLY
6 .debug_aranges 00000030 00000000 00000000 000009c1 2**0
6 .debug_aranges 00000038 00000000 00000000 00000ab9 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_info 00000961 00000000 00000000 000009f1 2**0
7 .debug_info 00000bac 00000000 00000000 00000af1 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 00000333 00000000 00000000 00001352 2**0
8 .debug_abbrev 00000369 00000000 00000000 0000169d 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_line 00000230 00000000 00000000 00001685 2**0
9 .debug_line 00000285 00000000 00000000 00001a06 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_frame 0000007c 00000000 00000000 000018b8 2**2
10 .debug_frame 000000bc 00000000 00000000 00001c8c 2**2
CONTENTS, READONLY, DEBUGGING
11 .debug_str 00000441 00000000 00000000 00001934 2**0
11 .debug_str 00000498 00000000 00000000 00001d48 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_loc 00000299 00000000 00000000 00001d75 2**0
12 .debug_loc 000002b1 00000000 00000000 000021e0 2**0
CONTENTS, READONLY, DEBUGGING
13 .debug_ranges 00000020 00000000 00000000 0000200e 2**0
13 .debug_ranges 00000098 00000000 00000000 00002491 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
@@ -41,8 +41,8 @@ Disassembly of section .text:
6: 33 c0 rjmp .+102 ; 0x6e <__bad_interrupt>
8: 32 c0 rjmp .+100 ; 0x6e <__bad_interrupt>
a: 31 c0 rjmp .+98 ; 0x6e <__bad_interrupt>
c: 54 c0 rjmp .+168 ; 0xb6 <__vector_6>
e: 2f c0 rjmp .+94 ; 0x6e <__bad_interrupt>
c: 41 c0 rjmp .+130 ; 0x90 <__vector_6>
e: 86 c0 rjmp .+268 ; 0x11c <__vector_7>
10: 2e c0 rjmp .+92 ; 0x6e <__bad_interrupt>
12: 2d c0 rjmp .+90 ; 0x6e <__bad_interrupt>
14: 2c c0 rjmp .+88 ; 0x6e <__bad_interrupt>
@@ -56,7 +56,7 @@ Disassembly of section .text:
24: 24 c0 rjmp .+72 ; 0x6e <__bad_interrupt>
00000026 <__ctors_start>:
26: 9d 00 .word 0x009d ; ????
26: 0f 01 movw r0, r30
00000028 <__ctors_end>:
28: 11 24 eor r1, r1
@@ -68,18 +68,18 @@ Disassembly of section .text:
30: 10 e0 ldi r17, 0x00 ; 0
32: a0 e6 ldi r26, 0x60 ; 96
34: b0 e0 ldi r27, 0x00 ; 0
36: e4 ea ldi r30, 0xA4 ; 164
38: f1 e0 ldi r31, 0x01 ; 1
36: ec e8 ldi r30, 0x8C ; 140
38: f2 e0 ldi r31, 0x02 ; 2
3a: 02 c0 rjmp .+4 ; 0x40 <__SREG__+0x1>
3c: 05 90 lpm r0, Z+
3e: 0d 92 st X+, r0
40: a4 38 cpi r26, 0x84 ; 132
40: a4 39 cpi r26, 0x94 ; 148
42: b1 07 cpc r27, r17
44: d9 f7 brne .-10 ; 0x3c <__do_copy_data+0xc>
00000046 <__do_clear_bss>:
46: 20 e0 ldi r18, 0x00 ; 0
48: a4 e8 ldi r26, 0x84 ; 132
48: a4 e9 ldi r26, 0x94 ; 148
4a: b0 e0 ldi r27, 0x00 ; 0
4c: 01 c0 rjmp .+2 ; 0x50 <.do_clear_bss_start>
@@ -87,7 +87,7 @@ Disassembly of section .text:
4e: 1d 92 st X+, r1
00000050 <.do_clear_bss_start>:
50: a4 3a cpi r26, 0xA4 ; 164
50: a8 3b cpi r26, 0xB8 ; 184
52: b2 07 cpc r27, r18
54: e1 f7 brne .-8 ; 0x4e <.do_clear_bss_loop>
@@ -98,12 +98,12 @@ Disassembly of section .text:
5c: 03 c0 rjmp .+6 ; 0x64 <__do_global_ctors+0xe>
5e: 22 97 sbiw r28, 0x02 ; 2
60: fe 01 movw r30, r28
62: 9a d0 rcall .+308 ; 0x198 <__tablejump__>
62: 0e d1 rcall .+540 ; 0x280 <__tablejump__>
64: c6 32 cpi r28, 0x26 ; 38
66: d1 07 cpc r29, r17
68: d1 f7 brne .-12 ; 0x5e <__do_global_ctors+0x8>
6a: 02 d0 rcall .+4 ; 0x70 <main>
6c: 99 c0 rjmp .+306 ; 0x1a0 <_exit>
6c: 0d c1 rjmp .+538 ; 0x288 <_exit>
0000006e <__bad_interrupt>:
6e: c8 cf rjmp .-112 ; 0x0 <__vectors>
@@ -116,297 +116,514 @@ int main(void)
{
sei();
70: 78 94 sei
}
uint8_t getDig() {
return number;
}
uint8_t getDim() {
return dimmer;
72: 80 91 a7 00 lds r24, 0x00A7
public:
Led() {
init();
}
void setNum(uint8_t number) {
this->diget = number;
72: 10 92 84 00 sts 0x0084, r1
76: 90 91 a6 00 lds r25, 0x00A6
7a: 90 93 94 00 sts 0x0094, r25
}
void setDim(uint8_t dimmer) {
this->dim = dimmer;
76: 8c ea ldi r24, 0xAC ; 172
78: 80 93 85 00 sts 0x0085, r24
l.setNum(0);
l.setDim(0xAC);
uint8_t i = 0;
7c: 90 e0 ldi r25, 0x00 ; 0
7e: 02 c0 rjmp .+4 ; 0x84 <main+0x14>
{
u.send("bla..\n");
l.setNum(i++);
_delay_ms(500);
if(i > 15) {
i = 0;
80: 80 e0 ldi r24, 0x00 ; 0
82: 98 2f mov r25, r24
84: e0 e7 ldi r30, 0x70 ; 112
86: f0 e0 ldi r31, 0x00 ; 0
88: 03 c0 rjmp .+6 ; 0x90 <main+0x20>
UCSRB = /*(1<<RXEN1) | / (1<<RXCIE) | */ (1<<TXEN); //Enable TXEN im Register UCR TX-Data Enable
UBRRH = (uint8_t)(((F_CPU / 16 / baudrate) - 1)>>8);
UBRRL = (uint8_t)(F_CPU / 16 / baudrate) - 1; //Teiler wird gesetzt
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
8a: 5d 9b sbis 0x0b, 5 ; 11
8c: fe cf rjmp .-4 ; 0x8a <main+0x1a>
UDR = c;
8e: 8c b9 out 0x0c, r24 ; 12
sei();
init();
send("Uart done!\n");
}
void send(const char *text) {
while (*text)
90: 81 91 ld r24, Z+
92: 81 11 cpse r24, r1
94: fa cf rjmp .-12 ; 0x8a <main+0x1a>
l.setDim(0xAC);
uint8_t i = 0;
while(1)
{
u.send("bla..\n");
l.setNum(i++);
96: 89 2f mov r24, r25
98: 8f 5f subi r24, 0xFF ; 255
public:
Led() {
init();
}
void setNum(uint8_t number) {
this->diget = number;
9a: 90 93 84 00 sts 0x0084, r25
7e: 80 93 95 00 sts 0x0095, r24
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
9e: 2f e7 ldi r18, 0x7F ; 127
a0: 34 e8 ldi r19, 0x84 ; 132
a2: 9e e1 ldi r25, 0x1E ; 30
a4: 21 50 subi r18, 0x01 ; 1
a6: 30 40 sbci r19, 0x00 ; 0
a8: 90 40 sbci r25, 0x00 ; 0
aa: e1 f7 brne .-8 ; 0xa4 <main+0x34>
ac: 00 c0 rjmp .+0 ; 0xae <main+0x3e>
ae: 00 00 nop
_delay_ms(500);
if(i > 15) {
b0: 80 31 cpi r24, 0x10 ; 16
b2: 30 f7 brcc .-52 ; 0x80 <main+0x10>
b4: e6 cf rjmp .-52 ; 0x82 <main+0x12>
82: 8f e4 ldi r24, 0x4F ; 79
84: 93 ec ldi r25, 0xC3 ; 195
86: 01 97 sbiw r24, 0x01 ; 1
88: f1 f7 brne .-4 ; 0x86 <main+0x16>
8a: 00 c0 rjmp .+0 ; 0x8c <main+0x1c>
8c: 00 00 nop
8e: f1 cf rjmp .-30 ; 0x72 <main+0x2>
000000b6 <__vector_6>:
00000090 <__vector_6>:
i = 0;
}
}*/
}
}
ISR(TIMER0_OVF_vect) {
b6: 1f 92 push r1
b8: 0f 92 push r0
ba: 0f b6 in r0, 0x3f ; 63
bc: 0f 92 push r0
be: 11 24 eor r1, r1
c0: 2f 93 push r18
c2: 3f 93 push r19
c4: 4f 93 push r20
c6: 5f 93 push r21
c8: 6f 93 push r22
ca: 8f 93 push r24
cc: 9f 93 push r25
ce: ef 93 push r30
d0: ff 93 push r31
90: 1f 92 push r1
92: 0f 92 push r0
94: 0f b6 in r0, 0x3f ; 63
96: 0f 92 push r0
98: 11 24 eor r1, r1
9a: 2f 93 push r18
9c: 3f 93 push r19
9e: 4f 93 push r20
a0: 5f 93 push r21
a2: 6f 93 push r22
a4: 8f 93 push r24
a6: 9f 93 push r25
a8: ef 93 push r30
aa: ff 93 push r31
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<TOIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<ICIE1) | (0<<OCIE0B) | (1<<TOIE0) | (0<<OCIE0A);
}
/* TIMER0_OVF_vect */
void timer() {
for(uint8_t k=0;k<this->dim;k++) {
d2: 80 e0 ldi r24, 0x00 ; 0
d4: 0c c0 rjmp .+24 ; 0xee <__stack+0xf>
ac: 80 91 95 00 lds r24, 0x0095
b0: 88 23 and r24, r24
b2: 99 f0 breq .+38 ; 0xda <__vector_6+0x4a>
b4: 80 e0 ldi r24, 0x00 ; 0
Port::port(segs[this->diget]);
d6: e0 91 84 00 lds r30, 0x0084
da: f0 e0 ldi r31, 0x00 ; 0
dc: ec 57 subi r30, 0x7C ; 124
de: ff 4f sbci r31, 0xFF ; 255
e0: 92 81 ldd r25, Z+2 ; 0x02
b6: e0 91 94 00 lds r30, 0x0094
ba: f0 e0 ldi r31, 0x00 ; 0
bc: ec 56 subi r30, 0x6C ; 108
be: ff 4f sbci r31, 0xFF ; 255
c0: 92 81 ldd r25, Z+2 ; 0x02
namespace avrlib {
struct portb
{
static uint8_t port() { return PORTB; }
static void port(uint8_t v) { PORTB = v; }
e2: 98 bb out 0x18, r25 ; 24
c2: 98 bb out 0x18, r25 ; 24
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
e4: 96 e0 ldi r25, 0x06 ; 6
e6: 9a 95 dec r25
e8: f1 f7 brne .-4 ; 0xe6 <__stack+0x7>
ea: 00 c0 rjmp .+0 ; 0xec <__stack+0xd>
c4: 96 e0 ldi r25, 0x06 ; 6
c6: 9a 95 dec r25
c8: f1 f7 brne .-4 ; 0xc6 <__vector_6+0x36>
ca: 00 c0 rjmp .+0 ; 0xcc <__vector_6+0x3c>
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<TOIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<ICIE1) | (0<<OCIE0B) | (1<<TOIE0) | (0<<OCIE0A);
}
/* TIMER0_OVF_vect */
void timer() {
for(uint8_t k=0;k<this->dim;k++) {
ec: 8f 5f subi r24, 0xFF ; 255
ee: 90 91 85 00 lds r25, 0x0085
f2: 89 17 cp r24, r25
f4: 80 f3 brcs .-32 ; 0xd6 <__vector_6+0x20>
f6: 60 e0 ldi r22, 0x00 ; 0
cc: 8f 5f subi r24, 0xFF ; 255
ce: 90 91 95 00 lds r25, 0x0095
d2: 89 17 cp r24, r25
d4: 80 f3 brcs .-32 ; 0xb6 <__vector_6+0x26>
Port::port(segs[this->diget]);
_delay_us(1);
}
for(uint8_t k=0;k<255-this->dim;k++) {
f8: 4f ef ldi r20, 0xFF ; 255
fa: 50 e0 ldi r21, 0x00 ; 0
fc: 06 c0 rjmp .+12 ; 0x10a <__stack+0x2b>
fe: 18 ba out 0x18, r1 ; 24
100: e6 e0 ldi r30, 0x06 ; 6
102: ea 95 dec r30
104: f1 f7 brne .-4 ; 0x102 <__stack+0x23>
106: 00 c0 rjmp .+0 ; 0x108 <__stack+0x29>
108: 6f 5f subi r22, 0xFF ; 255
10a: 26 2f mov r18, r22
10c: 30 e0 ldi r19, 0x00 ; 0
10e: 80 91 85 00 lds r24, 0x0085
112: fa 01 movw r30, r20
114: e8 1b sub r30, r24
116: f1 09 sbc r31, r1
118: 2e 17 cp r18, r30
11a: 3f 07 cpc r19, r31
11c: 84 f3 brlt .-32 ; 0xfe <__stack+0x1f>
d6: 9f 3f cpi r25, 0xFF ; 255
d8: 99 f0 breq .+38 ; 0x100 <__stack+0x21>
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<TOIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<ICIE1) | (0<<OCIE0B) | (1<<TOIE0) | (0<<OCIE0A);
}
/* TIMER0_OVF_vect */
void timer() {
for(uint8_t k=0;k<this->dim;k++) {
da: 60 e0 ldi r22, 0x00 ; 0
Port::port(segs[this->diget]);
_delay_us(1);
}
for(uint8_t k=0;k<255-this->dim;k++) {
dc: 4f ef ldi r20, 0xFF ; 255
de: 50 e0 ldi r21, 0x00 ; 0
e0: 18 ba out 0x18, r1 ; 24
e2: e6 e0 ldi r30, 0x06 ; 6
e4: ea 95 dec r30
e6: f1 f7 brne .-4 ; 0xe4 <__stack+0x5>
e8: 00 c0 rjmp .+0 ; 0xea <__stack+0xb>
ea: 6f 5f subi r22, 0xFF ; 255
ec: 26 2f mov r18, r22
ee: 30 e0 ldi r19, 0x00 ; 0
f0: 80 91 95 00 lds r24, 0x0095
f4: fa 01 movw r30, r20
f6: e8 1b sub r30, r24
f8: f1 09 sbc r31, r1
fa: 2e 17 cp r18, r30
fc: 3f 07 cpc r19, r31
fe: 84 f3 brlt .-32 ; 0xe0 <__stack+0x1>
l.timer();
}
11e: ff 91 pop r31
120: ef 91 pop r30
122: 9f 91 pop r25
124: 8f 91 pop r24
126: 6f 91 pop r22
128: 5f 91 pop r21
12a: 4f 91 pop r20
12c: 3f 91 pop r19
12e: 2f 91 pop r18
130: 0f 90 pop r0
132: 0f be out 0x3f, r0 ; 63
134: 0f 90 pop r0
136: 1f 90 pop r1
138: 18 95 reti
100: ff 91 pop r31
102: ef 91 pop r30
104: 9f 91 pop r25
106: 8f 91 pop r24
108: 6f 91 pop r22
10a: 5f 91 pop r21
10c: 4f 91 pop r20
10e: 3f 91 pop r19
110: 2f 91 pop r18
112: 0f 90 pop r0
114: 0f be out 0x3f, r0 ; 63
116: 0f 90 pop r0
118: 1f 90 pop r1
11a: 18 95 reti
0000013a <_GLOBAL__sub_I_u>:
0000011c <__vector_7>:
ISR(USART_RX_vect) {
11c: 1f 92 push r1
11e: 0f 92 push r0
120: 0f b6 in r0, 0x3f ; 63
122: 0f 92 push r0
124: 11 24 eor r1, r1
126: 2f 93 push r18
128: 3f 93 push r19
12a: 4f 93 push r20
12c: 8f 93 push r24
12e: 9f 93 push r25
130: ef 93 push r30
132: ff 93 push r31
uart_putchar(text);
}
/* USART_RX_vect */
void interrupt() {
char nextChar;
nextChar = UDR;
134: 8c b1 in r24, 0x0c ; 12
if( nextChar != '\n' && nextChar != '\r' && uart_str_count < UART_MAXSTRLEN) {
136: 8a 30 cpi r24, 0x0A ; 10
138: 39 f0 breq .+14 ; 0x148 <__vector_7+0x2c>
13a: 8d 30 cpi r24, 0x0D ; 13
13c: 29 f0 breq .+10 ; 0x148 <__vector_7+0x2c>
13e: 90 91 a8 00 lds r25, 0x00A8
142: 9f 30 cpi r25, 0x0F ; 15
144: 08 f4 brcc .+2 ; 0x148 <__vector_7+0x2c>
146: 3f c0 rjmp .+126 ; 0x1c6 <__vector_7+0xaa>
uart_string[uart_str_count] = nextChar;
uart_str_count++;
//send(nextChar);
} else {
//send("\r\n");
if(uart_string[0] == 't') {
148: 80 91 a9 00 lds r24, 0x00A9
14c: 84 37 cpi r24, 0x74 ; 116
14e: 09 f4 brne .+2 ; 0x152 <__vector_7+0x36>
150: 60 c0 rjmp .+192 ; 0x212 <__vector_7+0xf6>
number = uart_string[diget]-0x30;
}
if(uart_string[0] == 'd') {
152: 80 91 a9 00 lds r24, 0x00A9
156: 84 36 cpi r24, 0x64 ; 100
158: 09 f4 brne .+2 ; 0x15c <__vector_7+0x40>
15a: 41 c0 rjmp .+130 ; 0x1de <__vector_7+0xc2>
15c: ea e7 ldi r30, 0x7A ; 122
15e: f0 e0 ldi r31, 0x00 ; 0
sei();
init();
send("Uart done!\r\n");
}
void send(const char *text) {
while (*text)
160: 87 e5 ldi r24, 0x57 ; 87
UCSRB = (1<<RXEN) | (1<<RXCIE) /* Recieve & Interrupt */ | (1<<TXEN) /* Send */; //Enable TXEN im Register UCR TX-Data Enable
UBRRH = (uint8_t)(((F_CPU / 16 / baudrate) - 1)>>8);
UBRRL = (uint8_t)(F_CPU / 16 / baudrate) - 1;
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSRA, UDRE); /* Data Register Empty */
162: 5d 9b sbis 0x0b, 5 ; 11
164: fe cf rjmp .-4 ; 0x162 <__vector_7+0x46>
UDR = c;
166: 8c b9 out 0x0c, r24 ; 12
sei();
init();
send("Uart done!\r\n");
}
void send(const char *text) {
while (*text)
168: 81 91 ld r24, Z+
16a: 81 11 cpse r24, r1
16c: fa cf rjmp .-12 ; 0x162 <__vector_7+0x46>
}
if(uart_string[0] == 'd') {
dimmer = (uart_string[1]-0x30)*100 + (uart_string[2]-0x30)*10 + (uart_string[3]-0x30)*1;
}
send("Werte: Time: ");
send(number+0x30);
16e: 80 91 a6 00 lds r24, 0x00A6
172: 80 5d subi r24, 0xD0 ; 208
UCSRB = (1<<RXEN) | (1<<RXCIE) /* Recieve & Interrupt */ | (1<<TXEN) /* Send */; //Enable TXEN im Register UCR TX-Data Enable
UBRRH = (uint8_t)(((F_CPU / 16 / baudrate) - 1)>>8);
UBRRL = (uint8_t)(F_CPU / 16 / baudrate) - 1;
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSRA, UDRE); /* Data Register Empty */
174: 5d 9b sbis 0x0b, 5 ; 11
176: fe cf rjmp .-4 ; 0x174 <__vector_7+0x58>
UDR = c;
178: 8c b9 out 0x0c, r24 ; 12
17a: e1 e7 ldi r30, 0x71 ; 113
17c: f0 e0 ldi r31, 0x00 ; 0
sei();
init();
send("Uart done!\r\n");
}
void send(const char *text) {
while (*text)
17e: 80 e2 ldi r24, 0x20 ; 32
UCSRB = (1<<RXEN) | (1<<RXCIE) /* Recieve & Interrupt */ | (1<<TXEN) /* Send */; //Enable TXEN im Register UCR TX-Data Enable
UBRRH = (uint8_t)(((F_CPU / 16 / baudrate) - 1)>>8);
UBRRL = (uint8_t)(F_CPU / 16 / baudrate) - 1;
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSRA, UDRE); /* Data Register Empty */
180: 5d 9b sbis 0x0b, 5 ; 11
182: fe cf rjmp .-4 ; 0x180 <__vector_7+0x64>
UDR = c;
184: 8c b9 out 0x0c, r24 ; 12
sei();
init();
send("Uart done!\r\n");
}
void send(const char *text) {
while (*text)
186: 81 91 ld r24, Z+
188: 81 11 cpse r24, r1
18a: fa cf rjmp .-12 ; 0x180 <__vector_7+0x64>
dimmer = (uart_string[1]-0x30)*100 + (uart_string[2]-0x30)*10 + (uart_string[3]-0x30)*1;
}
send("Werte: Time: ");
send(number+0x30);
send(" Light: ");
send(dimmer+0x30);
18c: 80 91 a7 00 lds r24, 0x00A7
190: 80 5d subi r24, 0xD0 ; 208
UCSRB = (1<<RXEN) | (1<<RXCIE) /* Recieve & Interrupt */ | (1<<TXEN) /* Send */; //Enable TXEN im Register UCR TX-Data Enable
UBRRH = (uint8_t)(((F_CPU / 16 / baudrate) - 1)>>8);
UBRRL = (uint8_t)(F_CPU / 16 / baudrate) - 1;
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSRA, UDRE); /* Data Register Empty */
192: 5d 9b sbis 0x0b, 5 ; 11
194: fe cf rjmp .-4 ; 0x192 <__vector_7+0x76>
UDR = c;
196: 8c b9 out 0x0c, r24 ; 12
198: e2 e9 ldi r30, 0x92 ; 146
19a: f0 e0 ldi r31, 0x00 ; 0
sei();
init();
send("Uart done!\r\n");
}
void send(const char *text) {
while (*text)
19c: 8d e0 ldi r24, 0x0D ; 13
UCSRB = (1<<RXEN) | (1<<RXCIE) /* Recieve & Interrupt */ | (1<<TXEN) /* Send */; //Enable TXEN im Register UCR TX-Data Enable
UBRRH = (uint8_t)(((F_CPU / 16 / baudrate) - 1)>>8);
UBRRL = (uint8_t)(F_CPU / 16 / baudrate) - 1;
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSRA, UDRE); /* Data Register Empty */
19e: 5d 9b sbis 0x0b, 5 ; 11
1a0: fe cf rjmp .-4 ; 0x19e <__vector_7+0x82>
UDR = c;
1a2: 8c b9 out 0x0c, r24 ; 12
sei();
init();
send("Uart done!\r\n");
}
void send(const char *text) {
while (*text)
1a4: 81 91 ld r24, Z+
1a6: 81 11 cpse r24, r1
1a8: fa cf rjmp .-12 ; 0x19e <__vector_7+0x82>
send("Werte: Time: ");
send(number+0x30);
send(" Light: ");
send(dimmer+0x30);
send("\r\n");
uart_str_count = 0;
1aa: 10 92 a8 00 sts 0x00A8, r1
u.interrupt();
1ae: ff 91 pop r31
1b0: ef 91 pop r30
1b2: 9f 91 pop r25
1b4: 8f 91 pop r24
1b6: 4f 91 pop r20
1b8: 3f 91 pop r19
1ba: 2f 91 pop r18
1bc: 0f 90 pop r0
1be: 0f be out 0x3f, r0 ; 63
1c0: 0f 90 pop r0
1c2: 1f 90 pop r1
1c4: 18 95 reti
void interrupt() {
char nextChar;
nextChar = UDR;
if( nextChar != '\n' && nextChar != '\r' && uart_str_count < UART_MAXSTRLEN) {
uart_string[uart_str_count] = nextChar;
1c6: e0 91 a8 00 lds r30, 0x00A8
1ca: f0 e0 ldi r31, 0x00 ; 0
1cc: ea 55 subi r30, 0x5A ; 90
1ce: ff 4f sbci r31, 0xFF ; 255
1d0: 83 83 std Z+3, r24 ; 0x03
uart_str_count++;
1d2: 80 91 a8 00 lds r24, 0x00A8
1d6: 8f 5f subi r24, 0xFF ; 255
1d8: 80 93 a8 00 sts 0x00A8, r24
1dc: e8 cf rjmp .-48 ; 0x1ae <__vector_7+0x92>
//send("\r\n");
if(uart_string[0] == 't') {
number = uart_string[diget]-0x30;
}
if(uart_string[0] == 'd') {
dimmer = (uart_string[1]-0x30)*100 + (uart_string[2]-0x30)*10 + (uart_string[3]-0x30)*1;
1de: 30 91 aa 00 lds r19, 0x00AA
1e2: 40 91 ab 00 lds r20, 0x00AB
1e6: 80 91 ac 00 lds r24, 0x00AC
1ea: 80 5d subi r24, 0xD0 ; 208
1ec: 23 2f mov r18, r19
1ee: 22 0f add r18, r18
1f0: 23 0f add r18, r19
1f2: 92 2f mov r25, r18
1f4: 92 95 swap r25
1f6: 99 0f add r25, r25
1f8: 90 7e andi r25, 0xE0 ; 224
1fa: 92 0f add r25, r18
1fc: 93 0f add r25, r19
1fe: 89 0f add r24, r25
200: 94 2f mov r25, r20
202: 99 0f add r25, r25
204: 99 0f add r25, r25
206: 94 0f add r25, r20
208: 99 0f add r25, r25
20a: 89 0f add r24, r25
20c: 80 93 a7 00 sts 0x00A7, r24
210: a5 cf rjmp .-182 ; 0x15c <__vector_7+0x40>
uart_str_count++;
//send(nextChar);
} else {
//send("\r\n");
if(uart_string[0] == 't') {
number = uart_string[diget]-0x30;
212: 80 91 ab 00 lds r24, 0x00AB
216: 80 53 subi r24, 0x30 ; 48
218: 80 93 a6 00 sts 0x00A6, r24
21c: 9a cf rjmp .-204 ; 0x152 <__vector_7+0x36>
0000021e <_GLOBAL__sub_I_u>:
#include <avr/interrupt.h>
template <uint32_t baudrate, uint8_t diget>
class Uart {
public:
Uart() {
13a: 10 92 96 00 sts 0x0096, r1
13e: 10 92 97 00 sts 0x0097, r1
21e: 10 92 a6 00 sts 0x00A6, r1
222: 10 92 a7 00 sts 0x00A7, r1
226: 10 92 a8 00 sts 0x00A8, r1
sei();
142: 78 94 sei
uint8_t number = 0;
static const uint8_t UART_MAXSTRLEN = 12;
uint8_t uart_str_count = 0;
uint8_t uart_string[UART_MAXSTRLEN];
22a: 78 94 sei
uint8_t dimmer = 0;
static const uint8_t UART_MAXSTRLEN = 15;
volatile uint8_t uart_str_count = 0;
volatile char uart_string[UART_MAXSTRLEN];
void init() {
UCSRC = (1 << UCSZ1) | (1 << UCSZ0); //8N1
144: 86 e0 ldi r24, 0x06 ; 6
146: 83 b9 out 0x03, r24 ; 3
UCSRB = /*(1<<RXEN1) | / (1<<RXCIE) | */ (1<<TXEN); //Enable TXEN im Register UCR TX-Data Enable
148: 88 e0 ldi r24, 0x08 ; 8
14a: 8a b9 out 0x0a, r24 ; 10
UCSRC = (1<<UCSZ1) | (1<<UCSZ0) /* 8-Bit */ | (0<<UPM1) | (0<<UPM0) /* No Parity */ | (0<<UMSEL) /* Asyncron */;
22c: 86 e0 ldi r24, 0x06 ; 6
22e: 83 b9 out 0x03, r24 ; 3
UCSRB = (1<<RXEN) | (1<<RXCIE) /* Recieve & Interrupt */ | (1<<TXEN) /* Send */; //Enable TXEN im Register UCR TX-Data Enable
230: 88 e9 ldi r24, 0x98 ; 152
232: 8a b9 out 0x0a, r24 ; 10
UBRRH = (uint8_t)(((F_CPU / 16 / baudrate) - 1)>>8);
14c: 12 b8 out 0x02, r1 ; 2
UBRRL = (uint8_t)(F_CPU / 16 / baudrate) - 1; //Teiler wird gesetzt
14e: 81 e8 ldi r24, 0x81 ; 129
150: 89 b9 out 0x09, r24 ; 9
152: e7 e7 ldi r30, 0x77 ; 119
154: f0 e0 ldi r31, 0x00 ; 0
156: 03 c0 rjmp .+6 ; 0x15e <_GLOBAL__sub_I_u+0x24>
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
158: 5d 9b sbis 0x0b, 5 ; 11
15a: fe cf rjmp .-4 ; 0x158 <_GLOBAL__sub_I_u+0x1e>
UDR = c;
15c: 8c b9 out 0x0c, r24 ; 12
234: 12 b8 out 0x02, r1 ; 2
UBRRL = (uint8_t)(F_CPU / 16 / baudrate) - 1;
236: 81 e8 ldi r24, 0x81 ; 129
238: 89 b9 out 0x09, r24 ; 9
23a: e8 e8 ldi r30, 0x88 ; 136
23c: f0 e0 ldi r31, 0x00 ; 0
sei();
init();
send("Uart done!\n");
send("Uart done!\r\n");
}
void send(const char *text) {
while (*text)
15e: 81 91 ld r24, Z+
160: 81 11 cpse r24, r1
162: fa cf rjmp .-12 ; 0x158 <_GLOBAL__sub_I_u+0x1e>
23e: 85 e5 ldi r24, 0x55 ; 85
UCSRB = (1<<RXEN) | (1<<RXCIE) /* Recieve & Interrupt */ | (1<<TXEN) /* Send */; //Enable TXEN im Register UCR TX-Data Enable
UBRRH = (uint8_t)(((F_CPU / 16 / baudrate) - 1)>>8);
UBRRL = (uint8_t)(F_CPU / 16 / baudrate) - 1;
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSRA, UDRE); /* Data Register Empty */
240: 5d 9b sbis 0x0b, 5 ; 11
242: fe cf rjmp .-4 ; 0x240 <_GLOBAL__sub_I_u+0x22>
UDR = c;
244: 8c b9 out 0x0c, r24 ; 12
sei();
init();
send("Uart done!\r\n");
}
void send(const char *text) {
while (*text)
246: 81 91 ld r24, Z+
248: 81 11 cpse r24, r1
24a: fa cf rjmp .-12 ; 0x240 <_GLOBAL__sub_I_u+0x22>
#include <util/delay.h>
template <typename Port>
class Led {
public:
Led() {
164: 10 92 84 00 sts 0x0084, r1
168: 10 92 85 00 sts 0x0085, r1
16c: 80 e1 ldi r24, 0x10 ; 16
16e: e0 e6 ldi r30, 0x60 ; 96
170: f0 e0 ldi r31, 0x00 ; 0
172: a6 e8 ldi r26, 0x86 ; 134
174: b0 e0 ldi r27, 0x00 ; 0
176: 01 90 ld r0, Z+
178: 0d 92 st X+, r0
17a: 8a 95 dec r24
17c: e1 f7 brne .-8 ; 0x176 <_GLOBAL__sub_I_u+0x3c>
24c: 10 92 94 00 sts 0x0094, r1
250: 10 92 95 00 sts 0x0095, r1
254: 80 e1 ldi r24, 0x10 ; 16
256: e0 e6 ldi r30, 0x60 ; 96
258: f0 e0 ldi r31, 0x00 ; 0
25a: a6 e9 ldi r26, 0x96 ; 150
25c: b0 e0 ldi r27, 0x00 ; 0
25e: 01 90 ld r0, Z+
260: 0d 92 st X+, r0
262: 8a 95 dec r24
264: e1 f7 brne .-8 ; 0x25e <_GLOBAL__sub_I_u+0x40>
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; }
17e: 8f e7 ldi r24, 0x7F ; 127
180: 87 bb out 0x17, r24 ; 23
266: 8f e7 ldi r24, 0x7F ; 127
268: 87 bb out 0x17, r24 ; 23
// Clock value: 312,500 kHz
// Mode: Normal top=0xFF
// OC0A output: Disconnected
// OC0B output: Disconnected
// Timer Period: 0,8192 ms
TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00);
182: 10 be out 0x30, r1 ; 48
26a: 10 be out 0x30, r1 ; 48
TCCR0B=(0<<WGM02) | (0<<CS02) | (1<<CS01) | (1<<CS00);
184: 83 e0 ldi r24, 0x03 ; 3
186: 83 bf out 0x33, r24 ; 51
26c: 83 e0 ldi r24, 0x03 ; 3
26e: 83 bf out 0x33, r24 ; 51
TCNT0=0x00;
188: 12 be out 0x32, r1 ; 50
270: 12 be out 0x32, r1 ; 50
OCR0A=0x00;
18a: 16 be out 0x36, r1 ; 54
272: 16 be out 0x36, r1 ; 54
OCR0B=0x00;
18c: 1c be out 0x3c, r1 ; 60
274: 1c be out 0x3c, r1 ; 60
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<TOIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<ICIE1) | (0<<OCIE0B) | (1<<TOIE0) | (0<<OCIE0A);
18e: 82 e0 ldi r24, 0x02 ; 2
190: 89 bf out 0x39, r24 ; 57
192: 08 95 ret
276: 82 e0 ldi r24, 0x02 ; 2
278: 89 bf out 0x39, r24 ; 57
27a: 08 95 ret
00000194 <__tablejump2__>:
194: ee 0f add r30, r30
196: ff 1f adc r31, r31
0000027c <__tablejump2__>:
27c: ee 0f add r30, r30
27e: ff 1f adc r31, r31
00000198 <__tablejump__>:
198: 05 90 lpm r0, Z+
19a: f4 91 lpm r31, Z
19c: e0 2d mov r30, r0
19e: 09 94 ijmp
00000280 <__tablejump__>:
280: 05 90 lpm r0, Z+
282: f4 91 lpm r31, Z
284: e0 2d mov r30, r0
286: 09 94 ijmp
000001a0 <_exit>:
1a0: f8 94 cli
00000288 <_exit>:
288: f8 94 cli
000001a2 <__stop_program>:
1a2: ff cf rjmp .-2 ; 0x1a2 <__stop_program>
0000028a <__stop_program>:
28a: ff cf rjmp .-2 ; 0x28a <__stop_program>
+53 -51
View File
@@ -195,7 +195,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8
.rela.plt
*(.rela.plt)
.text 0x00000000 0x1a4
.text 0x00000000 0x28c
*(.vectors)
.vectors 0x00000000 0x26 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/avr25/tiny-stack/crttn2313.o
0x00000000 __vector_default
@@ -261,7 +261,6 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8
0x0000006e __vector_11
0x0000006e __vector_13
0x0000006e __vector_17
0x0000006e __vector_7
0x0000006e __vector_5
0x0000006e __vector_4
0x0000006e __vector_9
@@ -275,21 +274,24 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8
0x00000070 . = ALIGN (0x2)
*(.text.*)
.text.startup.main
0x00000070 0x46 Zahl.o
0x00000070 0x20 Zahl.o
0x00000070 main
.text.__vector_6
0x000000b6 0x84 Zahl.o
0x000000b6 __vector_6
0x00000090 0x8c Zahl.o
0x00000090 __vector_6
.text.__vector_7
0x0000011c 0x102 Zahl.o
0x0000011c __vector_7
.text.startup._GLOBAL__sub_I_u
0x0000013a 0x5a Zahl.o
.text.libgcc 0x00000194 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/avr25/tiny-stack\libgcc.a(_tablejump.o)
0x00000194 __tablejump2__
0x00000198 __tablejump__
0x000001a0 . = ALIGN (0x2)
0x0000021e 0x5e Zahl.o
.text.libgcc 0x0000027c 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/avr25/tiny-stack\libgcc.a(_tablejump.o)
0x0000027c __tablejump2__
0x00000280 __tablejump__
0x00000288 . = ALIGN (0x2)
*(.fini9)
.fini9 0x000001a0 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/avr25/tiny-stack\libgcc.a(_exit.o)
0x000001a0 _exit
0x000001a0 exit
.fini9 0x00000288 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/avr25/tiny-stack\libgcc.a(_exit.o)
0x00000288 _exit
0x00000288 exit
*(.fini9)
*(.fini8)
*(.fini8)
@@ -308,11 +310,11 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8
*(.fini1)
*(.fini1)
*(.fini0)
.fini0 0x000001a0 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/avr25/tiny-stack\libgcc.a(_exit.o)
.fini0 0x00000288 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/avr25/tiny-stack\libgcc.a(_exit.o)
*(.fini0)
0x000001a4 _etext = .
0x0000028c _etext = .
.data 0x00800060 0x24 load address 0x000001a4
.data 0x00800060 0x34 load address 0x0000028c
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/avr25/tiny-stack/crttn2313.o
@@ -327,31 +329,31 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8
.rodata 0x00800060 0x10 Zahl.o
*(.rodata*)
.rodata.str1.1
0x00800070 0x13 Zahl.o
0x00800070 0x24 Zahl.o
0x27 (size before relaxing)
*(.gnu.linkonce.d*)
0x00800084 . = ALIGN (0x2)
*fill* 0x00800083 0x1
0x00800084 _edata = .
0x00800084 PROVIDE (__data_end, .)
0x00800094 . = ALIGN (0x2)
0x00800094 _edata = .
0x00800094 PROVIDE (__data_end, .)
.bss 0x00800084 0x20
0x00800084 PROVIDE (__bss_start, .)
.bss 0x00800094 0x24
0x00800094 PROVIDE (__bss_start, .)
*(.bss)
.bss 0x00800084 0x20 Zahl.o
0x00800084 l
0x00800096 u
.bss 0x00800094 0x24 Zahl.o
0x00800094 l
0x008000a6 u
*(.bss*)
*(COMMON)
0x008000a4 PROVIDE (__bss_end, .)
0x000001a4 __data_load_start = LOADADDR (.data)
0x000001c8 __data_load_end = (__data_load_start + SIZEOF (.data))
0x008000b8 PROVIDE (__bss_end, .)
0x0000028c __data_load_start = LOADADDR (.data)
0x000002c0 __data_load_end = (__data_load_start + SIZEOF (.data))
.noinit 0x008000a4 0x0
0x008000a4 PROVIDE (__noinit_start, .)
.noinit 0x008000b8 0x0
0x008000b8 PROVIDE (__noinit_start, .)
*(.noinit*)
0x008000a4 PROVIDE (__noinit_end, .)
0x008000a4 _end = .
0x008000a4 PROVIDE (__heap_start, .)
0x008000b8 PROVIDE (__noinit_end, .)
0x008000b8 _end = .
0x008000b8 PROVIDE (__heap_start, .)
.eeprom 0x00810000 0x0
*(.eeprom*)
@@ -409,39 +411,39 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8
.debug_sfnames
*(.debug_sfnames)
.debug_aranges 0x00000000 0x30
.debug_aranges 0x00000000 0x38
*(.debug_aranges)
.debug_aranges
0x00000000 0x30 Zahl.o
0x00000000 0x38 Zahl.o
.debug_pubnames
*(.debug_pubnames)
.debug_info 0x00000000 0x961
.debug_info 0x00000000 0xbac
*(.debug_info)
.debug_info 0x00000000 0x961 Zahl.o
.debug_info 0x00000000 0xbac Zahl.o
*(.gnu.linkonce.wi.*)
.debug_abbrev 0x00000000 0x333
.debug_abbrev 0x00000000 0x369
*(.debug_abbrev)
.debug_abbrev 0x00000000 0x333 Zahl.o
.debug_abbrev 0x00000000 0x369 Zahl.o
.debug_line 0x00000000 0x230
.debug_line 0x00000000 0x285
*(.debug_line)
.debug_line 0x00000000 0x230 Zahl.o
.debug_line 0x00000000 0x285 Zahl.o
.debug_frame 0x00000000 0x7c
.debug_frame 0x00000000 0xbc
*(.debug_frame)
.debug_frame 0x00000000 0x7c Zahl.o
.debug_frame 0x00000000 0xbc Zahl.o
.debug_str 0x00000000 0x441
.debug_str 0x00000000 0x498
*(.debug_str)
.debug_str 0x00000000 0x441 Zahl.o
0x47a (size before relaxing)
.debug_str 0x00000000 0x498 Zahl.o
0x4d1 (size before relaxing)
.debug_loc 0x00000000 0x299
.debug_loc 0x00000000 0x2b1
*(.debug_loc)
.debug_loc 0x00000000 0x299 Zahl.o
.debug_loc 0x00000000 0x2b1 Zahl.o
.debug_macinfo
*(.debug_macinfo)
@@ -449,9 +451,9 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8
.debug_pubtypes
*(.debug_pubtypes)
.debug_ranges 0x00000000 0x20
.debug_ranges 0x00000000 0x98
*(.debug_ranges)
.debug_ranges 0x00000000 0x20 Zahl.o
.debug_ranges 0x00000000 0x98 Zahl.o
.debug_macro
*(.debug_macro)
+44 -29
View File
@@ -1,32 +1,47 @@
S00C00005A61686C2E7372656389
S113000013C035C034C033C032C031C054C02FC057
S113000013C035C034C033C032C031C041C086C013
S11300102EC02DC02CC02BC02AC029C028C027C088
S113002026C025C024C09D0011241FBECFEDCDBF26
S113003010E0A0E6B0E0E4EAF1E002C005900D9221
S1130040A438B107D9F720E0A4E8B0E001C01D92BC
S1130050A43AB207E1F710E0C8E2D0E003C0229767
S1130060FE019AD0C632D107D1F702D099C0C8CFC9
S11300707894109284008CEA8093850090E002C00A
S113008080E0982FE0E7F0E003C05D9BFECF8CB9E1
S113009081918111FACF892F8F5F909384002FE78C
S11300A034E89EE1215030409040E1F700C0000068
S11300B0803130F7E6CF1F920F920FB60F921124C2
S11300C02F933F934F935F936F938F939F93EF93EC
S11300D0FF9380E00CC0E0918400F0E0EC57FF4F08
S11300E0928198BB96E09A95F1F700C08F5F90914A
S11300F08500891780F360E04FEF50E006C018BA1E
S1130100E6E0EA95F1F700C06F5F262F30E08091BA
S11301108500FA01E81BF1092E173F0784F3FF91CC
S1130120EF919F918F916F915F914F913F912F919B
S11301300F900FBE0F901F9018951092960010927A
S11301409700789486E083B988E08AB912B881E888
S113015089B9E7E7F0E003C05D9BFECF8CB98191DC
S11301608111FACF109284001092850080E1E0E6BC
S1130170F0E0A6E8B0E001900D928A95E1F78FE7F0
S113018087BB10BE83E083BF12BE16BE1CBE82E0D6
S113019089BF0895EE0FFF1F0590F491E02D099497
S10701A0F894FFCFFD
S11301A47B036E4F175D7D0B7F5F3F7578677C3CE7
S11301B4626C612E2E0A005561727420646F6E6540
S10701C4210A000008
S113002026C025C024C00F0111241FBECFEDCDBFB3
S113003010E0A0E6B0E0ECE8F2E002C005900D921A
S1130040A439B107D9F720E0A4E9B0E001C01D92BA
S1130050A83BB207E1F710E0C8E2D0E003C0229762
S1130060FE010ED1C632D107D1F702D00DC1C8CFDF
S113007078948091A7009091A60090939400809327
S113008095008FE493EC0197F1F700C00000F1CFE5
S11300901F920F920FB60F9211242F933F934F93F9
S11300A05F936F938F939F93EF93FF93809195004A
S11300B0882399F080E0E0919400F0E0EC56FF4F43
S11300C0928198BB96E09A95F1F700C08F5F90916A
S11300D09500891780F39F3F99F060E04FEF50E05F
S11300E018BAE6E0EA95F1F700C06F5F262F30E01A
S11300F080919500FA01E81BF1092E173F0784F35C
S1130100FF91EF919F918F916F915F914F913F91EB
S11301102F910F900FBE0F901F9018951F920F9262
S11301200FB60F9211242F933F934F938F939F9366
S1130130EF93FF938CB18A3039F08D3029F0909190
S1130140A8009F3008F43FC08091A900843709F4C7
S113015060C08091A900843609F441C0EAE7F0E068
S113016087E55D9BFECF8CB981918111FACF809197
S1130170A600805D5D9BFECF8CB9E1E7F0E080E2F4
S11301805D9BFECF8CB981918111FACF8091A7003C
S1130190805D5D9BFECF8CB9E2E9F0E08DE05D9B74
S11301A0FECF8CB981918111FACF1092A800FF91F2
S11301B0EF919F918F914F913F912F910F900FBE8F
S11301C00F901F901895E091A800F0E0EA55FF4FBA
S11301D083838091A8008F5F8093A800E8CF30913B
S11301E0AA004091AB008091AC00805D232F220FC8
S11301F0230F922F9295990F907E920F930F890F50
S1130200942F990F990F940F990F890F8093A7003A
S1130210A5CF8091AB0080538093A6009ACF109213
S1130220A6001092A7001092A800789486E083B9E3
S113023088E98AB912B881E889B9E8E8F0E085E587
S11302405D9BFECF8CB981918111FACF10929400FD
S11302501092950080E1E0E6F0E0A6E9B0E00190BC
S11302600D928A95E1F78FE787BB10BE83E083BFC9
S113027012BE16BE1CBE82E089BF0895EE0FFF1F9A
S10F02800590F491E02D0994F894FFCF50
S113028C7B036E4F175D7D0B7F5F3F7578677C3CFE
S113029C204C696768743A200057657274653A207B
S11302AC54696D653A20005561727420646F6E65F3
S10702BC210D0A0002
S9030000FC
+12 -11
View File
@@ -12,7 +12,7 @@
///////////////////////// UART ////////////////////////////////////
typedef Uart<9600, 9> uartclass;
typedef Uart<9600, 2> uartclass;
uartclass u;
///////////////////////// LED /////////////////////////////////////
typedef Led<avrlib::portb> ledclass;
@@ -23,15 +23,17 @@ int main(void)
sei();
l.setNum(0);
l.setDim(0xAC);
uint8_t i = 0;
//uint8_t i = 0;
while(1)
{
u.send("bla..\n");
l.setNum(i++);
_delay_ms(500);
if(i > 15) {
uint8_t t = u.getDig();
uint8_t d = u.getDim();
l.setNum(t);
l.setDim(d);
_delay_ms(10);
/*if(i > 15) {
i = 0;
}
}*/
}
}
@@ -39,7 +41,6 @@ ISR(TIMER0_OVF_vect) {
l.timer();
}
/*ISR(USART_RX_vect) {
//u.interrupt();
PORTB ^= 0xFF;
}*/
ISR(USART_RX_vect) {
u.interrupt();
}
+3 -2
View File
@@ -18,7 +18,8 @@
<ToolchainFlavour>Native</ToolchainFlavour>
<KeepTimersRunning>true</KeepTimersRunning>
<OverrideVtor>false</OverrideVtor>
<OverrideVtorValue>exception_table</OverrideVtorValue>
<OverrideVtorValue>
</OverrideVtorValue>
<eraseonlaunchrule>0</eraseonlaunchrule>
<ProgFlashFromRam>true</ProgFlashFromRam>
<RamSnippetAddress>0x20000000</RamSnippetAddress>
@@ -138,7 +139,7 @@
<Value>DEBUG</Value>
</ListValues>
</avrgcccpp.compiler.symbols.DefSymbols>
<avrgcccpp.compiler.optimization.level>Optimize for size (-Os)</avrgcccpp.compiler.optimization.level>
<avrgcccpp.compiler.optimization.level>Optimize most (-O3)</avrgcccpp.compiler.optimization.level>
<avrgcccpp.compiler.optimization.PackStructureMembers>True</avrgcccpp.compiler.optimization.PackStructureMembers>
<avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcccpp.compiler.optimization.DebugLevel>Default (-g2)</avrgcccpp.compiler.optimization.DebugLevel>
+29 -11
View File
@@ -20,7 +20,7 @@ class Uart {
Uart() {
sei();
init();
send("Uart done!\n");
send("Uart done!\r\n");
}
void send(const char *text) {
while (*text)
@@ -29,36 +29,54 @@ class Uart {
text++;
}
}
void send(uint8_t text) {
uart_putchar(text);
}
/* USART_RX_vect */
void interrupt() {
uint8_t nextChar;
char nextChar;
nextChar = UDR;
if( nextChar != '\n' && nextChar != '\r' && uart_str_count < UART_MAXSTRLEN ) {
if( nextChar != '\n' && nextChar != '\r' && uart_str_count < UART_MAXSTRLEN) {
uart_string[uart_str_count] = nextChar;
uart_str_count++;
//send(nextChar);
} else {
//send("\r\n");
if(uart_string[0] == 't') {
number = uart_string[diget];
number = uart_string[diget]-0x30;
}
if(uart_string[0] == 'd') {
dimmer = (uart_string[1]-0x30)*100 + (uart_string[2]-0x30)*10 + (uart_string[3]-0x30)*1;
}
send("Werte: Time: ");
send(number+0x30);
send(" Light: ");
send(dimmer+0x30);
send("\r\n");
uart_str_count = 0;
}
}
uint8_t getDig() {
return number;
}
uint8_t getDim() {
return dimmer;
}
private:
uint8_t number = 0;
static const uint8_t UART_MAXSTRLEN = 12;
uint8_t uart_str_count = 0;
uint8_t uart_string[UART_MAXSTRLEN];
uint8_t dimmer = 0;
static const uint8_t UART_MAXSTRLEN = 15;
volatile uint8_t uart_str_count = 0;
volatile char uart_string[UART_MAXSTRLEN];
void init() {
UCSRC = (1 << UCSZ1) | (1 << UCSZ0); //8N1
UCSRB = /*(1<<RXEN1) | / (1<<RXCIE) | */ (1<<TXEN); //Enable TXEN im Register UCR TX-Data Enable
UCSRC = (1<<UCSZ1) | (1<<UCSZ0) /* 8-Bit */ | (0<<UPM1) | (0<<UPM0) /* No Parity */ | (0<<UMSEL) /* Asyncron */;
UCSRB = (1<<RXEN) | (1<<RXCIE) /* Recieve & Interrupt */ | (1<<TXEN) /* Send */; //Enable TXEN im Register UCR TX-Data Enable
UBRRH = (uint8_t)(((F_CPU / 16 / baudrate) - 1)>>8);
UBRRL = (uint8_t)(F_CPU / 16 / baudrate) - 1; //Teiler wird gesetzt
UBRRL = (uint8_t)(F_CPU / 16 / baudrate) - 1;
}
uint8_t uart_putchar(uint8_t c) {
loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens
loop_until_bit_is_set(UCSRA, UDRE); /* Data Register Empty */
UDR = c;
return 0;
}