2019-03-22 16:06:59 +01:00
|
|
|
#include <avr/io.h>
|
2019-03-25 13:00:22 +01:00
|
|
|
#include <avr/interrupt.h>
|
|
|
|
#include <util/delay.h>
|
2019-03-25 15:02:24 +01:00
|
|
|
#include <avr/wdt.h>
|
2019-03-26 08:44:30 +01:00
|
|
|
#include "global_vars.h"
|
2019-03-25 16:15:00 +01:00
|
|
|
#include "selftest.h"
|
2019-03-26 15:02:58 +01:00
|
|
|
#include "requests.h"
|
2019-03-25 13:00:22 +01:00
|
|
|
|
2019-05-28 11:12:58 +02:00
|
|
|
|
2019-04-03 14:58:50 +02:00
|
|
|
int main()
|
2019-03-25 15:02:24 +01:00
|
|
|
{
|
2019-04-03 12:05:08 +02:00
|
|
|
// deactivate WDT ENTIRELY!
|
2019-04-03 11:38:15 +02:00
|
|
|
MCUSR &= ~_BV(WDRF);
|
|
|
|
WDTCSR = 0;
|
|
|
|
wdt_disable();
|
|
|
|
|
2019-04-03 12:05:08 +02:00
|
|
|
// enable interrupts before configuring io
|
2019-04-03 11:38:15 +02:00
|
|
|
sei();
|
|
|
|
|
2019-04-03 12:05:08 +02:00
|
|
|
spi.init();
|
|
|
|
|
2019-04-03 08:40:14 +02:00
|
|
|
dio0.setDirA(0x00); // alle Ausgang
|
|
|
|
dio0.setDirB(0xFF); // alle Eingang
|
|
|
|
dio1.setDirA(0x00); // alle Ausgang
|
|
|
|
dio1.setDirB(0xFF); // alle Eingang
|
|
|
|
dsw.setDirB(0xFF); // alle Eingang
|
|
|
|
adu.init();
|
2019-04-03 11:38:15 +02:00
|
|
|
|
2019-04-02 16:19:42 +02:00
|
|
|
usart.init();
|
2019-04-02 15:32:51 +02:00
|
|
|
usart.initRX();
|
2019-05-28 12:32:31 +02:00
|
|
|
|
|
|
|
pwm.init();
|
2019-04-02 15:32:51 +02:00
|
|
|
|
2019-04-03 14:58:50 +02:00
|
|
|
// Hauptschleife, Verarbeitung der Requests
|
2019-03-25 15:02:24 +01:00
|
|
|
while(1)
|
|
|
|
{
|
2019-04-02 16:19:42 +02:00
|
|
|
if(nextRequest)
|
|
|
|
{
|
|
|
|
nextRequest = false;
|
|
|
|
handleRequest();
|
|
|
|
}
|
|
|
|
_delay_us(1);
|
2019-03-25 13:00:22 +01:00
|
|
|
}
|
|
|
|
|
2019-03-22 15:51:52 +01:00
|
|
|
return 0;
|
|
|
|
}
|