mate-driver/firmware/main.c

43 lines
566 B
C
Raw Permalink Normal View History

2020-07-10 19:01:20 +02:00
#include <avr/io.h>
#include <util/delay.h>
2020-07-16 21:55:41 +02:00
#include "pwm.h"
2020-07-17 00:50:32 +02:00
#include "input.h"
2020-07-10 19:01:20 +02:00
2020-07-29 19:07:03 +02:00
int main(void) {
2020-07-10 19:01:20 +02:00
hbridge_init();
2020-07-17 00:50:32 +02:00
input_init();
2020-07-10 19:01:20 +02:00
2020-07-29 19:07:03 +02:00
sei();
2020-07-10 19:01:20 +02:00
2020-07-29 19:07:03 +02:00
DDRD |= (1 << PD1);
2020-07-29 19:07:03 +02:00
while(1) {
2020-07-29 19:48:58 +02:00
while(!input_signal_ok()) {
pwm_cycle_break();
}
2020-07-10 19:01:20 +02:00
2020-07-29 19:48:58 +02:00
while(input_get_result() < -20 || input_get_result() > 20) {
pwm_cycle_break();
}
2020-07-29 19:07:03 +02:00
2020-07-29 19:48:58 +02:00
while(input_signal_ok()) {
int16_t speed = input_get_result();
2020-07-10 19:01:20 +02:00
2020-07-29 19:48:58 +02:00
if(speed > 20) {
pwm_cycle_forwards(speed / 2);
} else if (speed < -20){
pwm_cycle_backwards(-speed / 2);
} else {
pwm_cycle_break();
}
}
}
2020-07-10 19:01:20 +02:00
}