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-23 19:04:18 +02:00
|
|
|
|
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-23 19:04:18 +02:00
|
|
|
}
|
|
|
|
|
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
|
|
|
|
|
|
|
}
|