Lauffaehig, aber unzuverlaessig

This commit is contained in:
Tristan Krause 2019-03-29 13:35:18 +01:00
parent 18d65ce8a5
commit dbceed1d2c
7 changed files with 160 additions and 117 deletions

BIN
B15F.elf

Binary file not shown.

199
B15F.hex
View file

@ -8,14 +8,14 @@
:100070000C9489000C9489000C9489000C948900DC
:100080000C9489000C9489000C948900F800FB0002
:10009000FE00EF000101040107010A010D0110013A
:1000A000F5001301AA05A705A4056105A1059E0594
:1000B0009B059805950592058F05AD05B0051124A2
:1000A000F5001301D505D205CF058C05CC05C90592
:1000B000C605C305C005BD05BA05D805DB05112475
:1000C0001FBECFEFD0E4DEBFCDBF11E0A0E0B1E0B6
:1000D000E4ECFBE000E00BBF02C007900D92A232FF
:1000D000EAE1FCE000E00BBF02C007900D92A23203
:1000E000B107D9F721E0A2E2B1E001C01D92A4332B
:1000F000B207E1F710E0CFE5D0E004C02197FE01A0
:100100000E94D705CE35D107C9F70E944A050C9445
:10011000E0050C94000083E391E00E94170160E089
:100100000E940206CE35D107C9F70E9475050C94EE
:100110000B060C94000083E391E00E94170160E05D
:1001200080E391E00E945A016FEF80E391E00E942A
:100130007B0160E08DE291E00E945A016FEF8DE259
:1001400091E00E947B016FEF8AE291E00E947B01C7
@ -24,15 +24,15 @@
:10017000A895809160008861809360001092600073
:100180000FBE0895CF930FB6F894A89580916000A4
:10019000886180936000109260000FBE6FEF8DE267
:1001A00091E00E949C0182E291E00E940E04C82F1F
:1001A00091E00E949C0182E291E00E94F303C82F3B
:1001B00060E08DE291E00E949C0199E288E10FB637
:1001C000F894A895809360000FBE90936000A89566
:1001D0008C2F90E0FC013197EC30F10510F0CF91BD
:1001E0000895EA5BFF4F0C94D705CF910C94C60499
:1001F000CF910C942604CF910C943704CF910C949A
:100200005B04CF910C946804CF910C947B04CF9144
:100210000C948E04CF910C949704CF910C94A0046D
:10022000CF910C94B304CF910C94D404089584B16D
:1001E0000895EA5BFF4F0C940206CF910C94010531
:1001F000CF910C947A04CF910C948B04CF910C94F2
:10020000AA04CF910C94B704CF910C94C504CF915C
:100210000C94D304CF910C94DC04CF910C94E5049E
:10022000CF910C94F304CF910C940F05089584B1F1
:10023000806B84B926988AB18C618AB980E58CBDBF
:1002400081E08DBD8BB1837E8BB95A9A5B9A5C9AA3
:1002500008958BB1837E8BB98BB160FD10C090E0A7
@ -104,90 +104,95 @@
:100670000E940102682F8DE291E00E949C01D9CF77
:100680000E9472020E949B020E94C4020E94E90220
:100690000E940E0382E08093C00088E18093C10035
:1006A00086E08093C2001092C50080E48093C4006D
:1006B00008958091C00085FFFCCF6093C6008091B3
:1006C000C00086FFFCCF08958091C00085FFFCCF5D
:1006D0006093C6008091C00085FFFCCF7093C60078
:1006E0008091C00086FFFCCF87E893E10197F1F786
:1006F00000C0000008958091C00085FFFCCF4093AA
:10070000C6008091C00086FFFCCFFB019B01240F37
:10071000311DE217F30761F091918091C00085FFD0
:10072000FCCF9093C6008091C00086FFFCCFF1CF34
:1007300008958091C00085FFFCCF4093C600809152
:10074000C00086FFFCCF5FEF540F442309F464C060
:10075000FB0120E041E9DF0190818091C00085FF2D
:10076000FCCF9093C6008091C00086FFFCCF3196ED
:100770009C91822F892780FD842790E0959587950D
:10078000282F80FF02C0242F2827822F90E09595E4
:100790008795282F80FF02C0242F282730E0359529
:1007A0002795822F20FF02C0842F822790E0959505
:1007B0008795282F80FF02C0242F282730E0359509
:1007C0002795822F20FF02C0842F822790E09595E5
:1007D0008795282F80FF02C0242F282730E03595E9
:1007E0002795822F20FF02C0842F8227282F26954D
:1007F000515008F0B0CF8091C00085FFFCCF20930E
:10080000C6008091C00086FFFCCF8091C00087FFAA
:10081000FCCF8091C600089520E0EDCF8091C0000C
:1008200087FFFCCF8091C60008958091C00087FFAC
:10083000FCCF2091C60030E09091C00097FFFCCF24
:100840008091C600A901582BCA010895CF9382E276
:1008500091E00E940E04C82F6FEF82E291E00E94A7
:1008600059036C2F82E291E0CF910C94590363E01D
:1008700082E291E00E9459034CE066E171E082E27D
:1008800091E00E947B0349E06DE071E082E291E03B
:100890000E947B034CE061E071E082E291E00E9403
:1008A0007B0380910001811101C008956FEF82E206
:1008B00091E00C94590382E291E00E941504BC017E
:1008C000660F771F680F791F82E291E00C94640332
:1008D00082E291E00E940E04682F80E391E00E9482
:1008E0009C0180910001811101C008956FEF82E2A7
:1008F00091E00C94590382E291E00E940E04682F6B
:100900008DE291E00E949C0180910001811101C063
:1009100008956FEF82E291E00C94590380E391E037
:100920000E940102682F82E291E00C9459038DE24B
:1009300091E00E940102682F82E291E00C94590339
:1009400082E291E00E941504BC0187E291E00E94DE
:10095000290280910001811101C008956FEF82E2A8
:1009600091E00C94590382E291E00E941504BC01CD
:1009700084E291E00E94290280910001811101C06E
:1009800008956FEF82E291E00C94590382E291E0C6
:100990000E940E04682F83E291E00E945802BC017D
:1009A00082E291E00C9464038F929F92AF92BF9287
:1009B000CF92DF92EF92FF920F931F93CF93DF932B
:1009C00000D000D0CDB7DEB782E291E00E940E04E5
:1009D000B82E82E291E00E940E04A82E82E291E0FD
:1009E0000E9415048C0182E291E00E9415047C01B2
:1009F00082E291E00E9415044C016FEF82E291E0E7
:100A00000E945903E89C6001E99CD00CF89CD00C32
:100A100011240C151D05C4F5B80187E291E00E9470
:100A20002902A8956B2D83E291E00E9458029A83D7
:100A300089836A2D83E291E00E9458029C838B8314
:100A400002C08F3FE1F0A89544E0BE016F5F7F4F89
:100A500082E291E00E9499038111F3CF0F900F90F1
:100A60000F900F90DF91CF911F910F91FF90EF901A
:100A7000DF90CF90BF90AF909F908F9008950E0D14
:100A80001F1D0C151D0544F26FEF82E291E00E94DC
:100A90005903E4CF0E948B006FEF80E391E00E9446
:100AA0009C012FE78AE196E0215080409040E1F7D9
:100AB00000C0000060E080E391E00E949C0118E12A
:100AC000D9E20FB6F894A895809160008861809370
:100AD0006000109260000FBE6FEF8DE291E00E9407
:100AE0009C0182E291E00E940E04C82F60E08DE23A
:100AF00091E00E949C010FB6F894A89510936000B5
:100B00000FBED0936000A8958C2F90E0FC01319728
:100B1000EC30F105B0F6EE5AFF4F0C94D7050E9469
:100B2000C604CFCF0E94B304CCCF0E94A004C9CF8B
:100B30000E949704C6CF0E948E04C3CF0E947B04FC
:100B4000C0CF0E946804BDCF0E945B04BACF0E9450
:100B50003704B7CF0E942604B4CF0E94D404B1CF8B
:100B600083E391E00E94160142E063E371E080E3D9
:100B700091E00E94550143E063E371E08DE291E072
:100B80000E94550145E063E371E08AE291E00E9432
:100B9000550140E063E371E087E291E00E942402A6
:100BA00041E063E371E084E291E00C942402EE0FF3
:100BB000FF1F0024001C0BBE0790F691E02D099446
:040BC000F894FFCFD7
:100BC40001626F617264696E666F2E680030383A34
:100BD40033303A3434004D617220323920323031AE
:020BE4003900D6
:1006A00086E08093C2001092C50084E18093C4006C
:1006B000089502C08091C6008091C00087FDFACFE6
:1006C00008958091C00085FFFCCF6093C600089517
:1006D0008091C00085FFFCCF6093C6008091C00070
:1006E00085FFFCCF7093C60008958091C00085FF00
:1006F000FCCF4093C6009FEF940F442351F0FB01C1
:1007000021918091C00085FFFCCF2093C6009150BD
:10071000B8F708958091C00085FFFCCF4093C600D4
:100720005FEF540F442309F45CC0FB0120E041E972
:10073000DF0190818091C00085FFFCCF9093C600BF
:1007400031969C91822F892780FD842790E0959592
:100750008795282F80FF02C0242F2827822F90E022
:1007600095958795282F80FF02C0242F282730E0F9
:1007700035952795822F20FF02C0842F822790E095
:1007800095958795282F80FF02C0242F282730E0D9
:1007900035952795822F20FF02C0842F822790E075
:1007A00095958795282F80FF02C0242F282730E0B9
:1007B00035952795822F20FF02C0842F8227282F6E
:1007C0002695515008F0B4CF8091C00085FFFCCF32
:1007D0002093C6008091C00087FFFCCF8091C600A7
:1007E000089520E0F1CF8091C00087FFFCCF809179
:1007F000C60008958091C00087FFFCCF2091C600FD
:1008000030E09091C00097FFFCCF8091C600A90115
:10081000582BCA010895242F30E08091C00087FF33
:10082000FCCFE091C60040E090E051E9620F731FF9
:100830008091C00087FFFCCFF091C6008F2F8927E1
:1008400080FD852790E095958795282F80FF02C031
:10085000252F2827822F90E095958795282F80FFB8
:1008600002C0252F282730E035952795822F20FFBD
:1008700002C0852F822790E095958795282F80FFCD
:1008800002C0252F282730E035952795822F20FF9D
:1008900002C0852F822790E095958795282F80FFAD
:1008A00002C0252F282730E035952795822F20FF7D
:1008B00002C0852F8227982F96954E17B0F04F5F74
:1008C000E41708F0B5CF911108C08091C00085FFF2
:1008D000FCCF8FEF8093C60008958091C00085FF04
:1008E000FCCF8EEF8093C6000895DB01A40FB11DED
:1008F000FC93E5CFCF9382E291E00E94F303C82FEF
:100900006FEF82E291E00E9461036C2F82E291E03E
:10091000CF910C94610363E082E291E00E94610355
:100920004CE065E171E082E291E00E94750349E0EC
:100930006CE071E082E291E00E9475034CE060E0BF
:1009400071E082E291E00E9475036FEF82E291E034
:100950000C94610382E291E00E94FA03BC01660FED
:10096000771F680F791F82E291E00C94680382E29E
:1009700091E00E94F303682F80E391E00E949C01C4
:100980006FEF82E291E00C94610382E291E00E94B9
:10099000F303682F8DE291E00E949C016FEF82E2E9
:1009A00091E00C94610380E391E00E940102682FC2
:1009B00082E291E00C9461038DE291E00E940102D9
:1009C000682F82E291E00C94610382E291E00E9440
:1009D000FA03BC0187E291E00E9429026FEF82E2F4
:1009E00091E00C94610382E291E00E94FA03BC0161
:1009F00084E291E00E9429026FEF82E291E00C9480
:100A0000610382E291E00E94F303682F83E291E0A8
:100A10000E945802BC0182E291E00C9468038F921C
:100A20009F92AF92BF92CF92DF92EF92FF920F937D
:100A30001F93CF93DF9382E291E00E94F303882E0D
:100A400082E291E00E94F303982E82E291E00E94FC
:100A5000FA03EC0182E291E00E94FA035C0182E277
:100A600091E00E94FA038C016FEF82E291E00E9414
:100A70006103A09E6001A19ED00CB09ED00C1124F9
:100A8000CC15DD050CF5BE0187E291E00E9429023C
:100A9000A895682D83E291E00E9458027C01692D9F
:100AA00083E291E00E9458028C01B70182E291E05A
:100AB0000E946803B80182E291E00E946803CA0DB7
:100AC000DB1DCC15DD05FCF26FEF82E291E0DF91DA
:100AD000CF911F910F91FF90EF90DF90CF90BF903B
:100AE000AF909F908F900C9461030E948B006FEFEA
:100AF00080E391E00E949C012FE78AE196E021507B
:100B000080409040E1F700C0000060E080E391E0A9
:100B10000E949C0118E1D9E20FB6F894A895809143
:100B20006000886180936000109260000FBE6FEFDC
:100B30008DE291E00E949C0182E291E00E94F30329
:100B4000C82F60E08DE291E00E949C010FB6F894FE
:100B5000A895109360000FBED0936000A8958C2FCD
:100B600090E0FC013197EC30F105B0F6EE5AFF4F02
:100B70000C9402060E940105CFCF0E94F304CCCF53
:100B80000E94E504C9CF0E94DC04C6CF0E94D304B2
:100B9000C3CF0E94C504C0CF0E94B704BDCF0E943E
:100BA000AA04BACF0E948B04B7CF0E947A04B4CFB4
:100BB0000E940F05B1CF83E391E00E94160142E04D
:100BC00063E371E080E391E00E94550143E063E359
:100BD00071E08DE291E00E94550145E063E371E030
:100BE0008AE291E00E94550140E063E371E087E210
:100BF00091E00E94240241E063E371E084E291E02D
:100C00000C942402EE0FFF1F0024001C0BBE079063
:0A0C1000F691E02D0994F894FFCF4F
:100C1A00626F617264696E666F2E680031333A33AF
:100C2A00323A3430004D6172203239203230313953
:020C3A000000B8
:00000001FF

View file

@ -9,4 +9,3 @@ TLC5615 dac1(spi, SPIADR::AA1);
ADU adu;
USART usart;
bool ACK_MODE = 1;

View file

@ -15,6 +15,4 @@ extern TLC5615 dac1;
extern ADU adu;
extern USART usart;
extern bool ACK_MODE;
#endif // GLOBAL_VARS_H

View file

@ -14,9 +14,7 @@ void rqBoardInfo()
usart.writeStr(DATE, sizeof(DATE));
usart.writeStr(TIME, sizeof(TIME));
usart.writeStr(FSRC, sizeof(FSRC));
if(ACK_MODE)
usart.writeByte(USART::MSG_OK);
usart.writeByte(USART::MSG_OK);
}
void rqTestIntConv()
@ -29,8 +27,7 @@ void rqDigitalWrite0()
uint8_t port = usart.readByte();
beba0.writePortA(port);
if(ACK_MODE)
usart.writeByte(USART::MSG_OK);
usart.writeByte(USART::MSG_OK);
}
void rqDigitalWrite1()
@ -38,8 +35,7 @@ void rqDigitalWrite1()
uint8_t port = usart.readByte();
beba1.writePortA(port);
if(ACK_MODE)
usart.writeByte(USART::MSG_OK);
usart.writeByte(USART::MSG_OK);
}
void rqDigitalRead0()
@ -59,8 +55,7 @@ void rqAnalogWrite0()
uint16_t value = usart.readInt();
dac0.setValue(value);
if(ACK_MODE)
usart.writeByte(USART::MSG_OK);
usart.writeByte(USART::MSG_OK);
}
void rqAnalogWrite1()
@ -68,8 +63,7 @@ void rqAnalogWrite1()
uint16_t value = usart.readInt();
dac1.setValue(value);
if(ACK_MODE)
usart.writeByte(USART::MSG_OK);
usart.writeByte(USART::MSG_OK);
}
void rqAnalogRead()
@ -97,7 +91,12 @@ void rqAdcDacStroke()
dac0.setValue(i);
wdt_reset();
union doubleword
uint16_t val_a = adu.getValue(channel_a);
uint16_t val_b = adu.getValue(channel_b);
usart.writeInt(val_a);
usart.writeInt(val_b);
/*union doubleword
{
uint16_t word[2];
uint8_t byte[4];
@ -115,7 +114,7 @@ void rqAdcDacStroke()
if(ret == 0)
return;
} while(ret != USART::MSG_OK);
} while(ret != USART::MSG_OK);*/
}
usart.writeByte(USART::MSG_OK);

View file

@ -15,12 +15,22 @@ void USART::init()
}
void USART::flush()
{
uint8_t dummy;
while (UCSR0A & (1<<RXC0))
dummy = UDR0;
if(dummy) // taeusche dummy Verwendung vor
return;
}
void USART::writeByte(uint8_t b)
{
while (!(UCSR0A & (1<<UDRE0)));
UDR0 = b;
while(!(UCSR0A & _BV(TXC0)));
//while(!(UCSR0A & _BV(TXC0)));
}
@ -35,8 +45,7 @@ void USART::writeInt(uint16_t v)
while (!(UCSR0A & (1<<UDRE0)));
UDR0 = v & 0xFF;
while(!(UCSR0A & _BV(TXC0)));
_delay_ms(1);
//while(!(UCSR0A & _BV(TXC0)));
}
void USART::writeStr(const char* str, uint8_t len)
@ -80,3 +89,34 @@ uint16_t USART::readInt()
v |= readByte() << 8;
return v;
}
void USART::readBlock(uint8_t* ptr, uint8_t offset)
{
ptr += offset;
uint8_t crc = 0;
uint8_t len = readByte();
for(uint8_t k = 0; k <= len; k++) // len + 1 Durchgänge (+ crc)
{
uint8_t next = readByte();
crc ^= next;
for (uint8_t i = 0; i < 8; i++)
{
if (crc & 1)
crc ^= CRC7_POLY;
crc >>= 1;
}
if(k < len)
ptr[k] = next;
}
if(crc == 0)
{
writeByte(MSG_OK);
return;
}
writeByte(MSG_FAIL);
}

View file

@ -5,13 +5,14 @@
#include <util/delay.h>
#include <stdint.h>
constexpr uint32_t BAUDRATE = 38400; // 38400
constexpr uint32_t BAUDRATE = 115200; // 38400
constexpr uint8_t CRC7_POLY = 0x91;
class USART
{
public:
void init(void);
void flush(void);
void writeByte(uint8_t);
void writeInt(uint16_t);
@ -21,6 +22,7 @@ public:
uint8_t readByte(void);
uint16_t readInt(void);
uint32_t readLong(void);
void readBlock(uint8_t*, uint8_t);
constexpr static uint8_t MSG_OK = 0xFF;
constexpr static uint8_t MSG_FAIL = 0xFE;