Hallo,
ich möchte mir gerne unter anderem zwei Matrizen und 4 Arrays über UART
an meinen PC Senden. Allerdings wird dadurch das Programm für den
Mikrocontroller (ATTINY2313) zu groß.
1 | ...
|
2 | else if(state == STATE_SEND){
|
3 | if(0 == sendData)
|
4 | {
|
5 | sendData = 1;
|
6 | for(n=0; n<4; n++){
|
7 | for(m=0; m<4; m++){
|
8 | usartTransmit(weightInputHidden[n][m]*1000);
|
9 | }
|
10 | usartTransmit(0x0A); /* New Line */
|
11 | }
|
12 | usartTransmit(0x0A); /* New Line */
|
13 |
|
14 | for(n=0; n<4; n++){
|
15 | usartTransmit(netHidden);
|
16 | }
|
17 | usartTransmit(0x0A); /* New Line */
|
18 | for(n=0; n<4; n++){
|
19 | usartTransmit(outHidden);
|
20 | }
|
21 | usartTransmit(0x0A); /* New Line */
|
22 |
|
23 |
|
24 | for(n=0; n<4; n++){
|
25 | for(m=0; m<4; m++){
|
26 | usartTransmit(weightHiddenOut[n][m]*1000);
|
27 | }
|
28 | usartTransmit(0x0A); /* New Line */
|
29 | }
|
30 | usartTransmit(0x0A); /* New Line */
|
31 |
|
32 | for(n=0; n<4; n++){
|
33 | usartTransmit(netOut);
|
34 | }
|
35 | usartTransmit(0x0A); /* New Line */
|
36 | for(n=0; n<4; n++){
|
37 | usartTransmit(outOut);
|
38 | }
|
39 | usartTransmit(0x0A); /* New Line */
|
40 | }
|
41 | }
|
42 | ...
|
43 | void usartTransmit( unsigned char data )
|
44 | {
|
45 | while ( !( UCSRA & (1<<UDRE)) );/* Wait for empty transmit buffer */
|
46 | UDR = data; /* Put data into buffer, sends the data */
|
47 | }
|
Die variablen input und output sind uint8_t. Die anderen Variablen,
netHidden, outHidden, netOut, outOut, weightInputHidden und
weightHiddenOut sind float.
Mit dem senden, ist das Programm 2546bytes groß. Kommentiere ich es aus,
ist das Programm nur noch 1198 bytes (58,5% Full) groß.
Gibt es eine Möglichkeit das ganze noch irgendwie kleiner zu machen und
trotzdem alles zu senden?
Johannes