generated from TDD-Templates/cmake_cpputest_template_avr
commented out code that won't be used for hardware tests.
This commit is contained in:
parent
98c9fde2b9
commit
e50463ab2b
59
src/main.c
59
src/main.c
|
@ -1,7 +1,3 @@
|
||||||
#ifndef MCU
|
|
||||||
#define MCU atiny13a
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef F_CPU
|
#ifndef F_CPU
|
||||||
#define F_CPU 4800000UL
|
#define F_CPU 4800000UL
|
||||||
#endif
|
#endif
|
||||||
|
@ -12,7 +8,7 @@
|
||||||
#include <util/delay.h>
|
#include <util/delay.h>
|
||||||
|
|
||||||
// These are only included during development for the LSP server.
|
// These are only included during development for the LSP server.
|
||||||
#include "iotn13.h"
|
//#include "iotn13.h"
|
||||||
// #include "iotn13a.h"
|
// #include "iotn13a.h"
|
||||||
|
|
||||||
// #############################
|
// #############################
|
||||||
|
@ -37,7 +33,6 @@ volatile uint16_t tick_count;
|
||||||
|
|
||||||
static inline void InitTimer0(void);
|
static inline void InitTimer0(void);
|
||||||
static void InitBtn(btn_state *b, uint8_t input_pin, uint8_t output_pin);
|
static void InitBtn(btn_state *b, uint8_t input_pin, uint8_t output_pin);
|
||||||
static void ToggleOutput(btn_state *b);
|
|
||||||
static void ClearButtonTimer(btn_state *b);
|
static void ClearButtonTimer(btn_state *b);
|
||||||
static void StartButtonTimer(btn_state *b);
|
static void StartButtonTimer(btn_state *b);
|
||||||
static void CheckButtonLongpress(btn_state *b);
|
static void CheckButtonLongpress(btn_state *b);
|
||||||
|
@ -48,7 +43,7 @@ static void UpdateButtonOutput(btn_state *b);
|
||||||
// MAIN
|
// MAIN
|
||||||
// #############################
|
// #############################
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main() {
|
||||||
InitProg();
|
InitProg();
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
|
@ -106,27 +101,42 @@ uint16_t ReadADC(void) {
|
||||||
* ############################
|
* ############################
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void MotorSetSavePos()
|
void MotorSetSavePos() {
|
||||||
{
|
|
||||||
uint8_t pos = (uint8_t)(ReadADC() >> 2);
|
uint8_t pos = (uint8_t)(ReadADC() >> 2);
|
||||||
eeprom_write_byte((uint8_t *)ROM_SS1_ADR, pos);
|
eeprom_write_byte((uint8_t *)ROM_SS1_ADR, pos);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t MotorGetSavedPos(void)
|
uint8_t MotorGetSavedPos(void) {
|
||||||
{
|
return (uint8_t)eeprom_read_byte((uint8_t *)ROM_SS1_ADR);
|
||||||
return (uint8_t) eeprom_read_byte((uint8_t *)ROM_SS1_ADR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MotorMoveTo(uint8_t pos)
|
void MotorMoveTo(uint8_t target) {
|
||||||
{
|
uint8_t pos = 0;
|
||||||
|
while (target != pos) {
|
||||||
|
pos = (uint8_t)(ReadADC() >> 2);
|
||||||
|
if (target > pos) {
|
||||||
|
MotorMove(1);
|
||||||
|
} else {
|
||||||
|
MotorMove(0);
|
||||||
|
}
|
||||||
|
// The delay ratio controlls the PWM waveforms.
|
||||||
|
_delay_ms(50);
|
||||||
|
MotorCoast();
|
||||||
|
_delay_ms(50);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Using the compatable bool type.
|
// Using the compatable bool type.
|
||||||
void MotorMove(uint8_t fwd)
|
void MotorMove(uint8_t fwd) {
|
||||||
{
|
if (fwd) {
|
||||||
|
PORTB |= (1 << PWM_PIN1);
|
||||||
|
PORTB &= ~(1 << PWM_PIN2);
|
||||||
|
} else {
|
||||||
|
PORTB |= (1 << PWM_PIN2);
|
||||||
|
PORTB &= ~(1 << PWM_PIN1);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,17 +168,6 @@ static void InitBtn(btn_state *b, uint8_t input_pin, uint8_t output_pin) {
|
||||||
PORTB &= ~(1 << b->output_pin);
|
PORTB &= ~(1 << b->output_pin);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*This is the fancy function to toggle output pins*/
|
|
||||||
static void ToggleOutput(btn_state *b) {
|
|
||||||
if (!b->is_active) {
|
|
||||||
b->is_active = 1;
|
|
||||||
PORTB |= (1 << b->output_pin);
|
|
||||||
} else {
|
|
||||||
b->is_active = 0;
|
|
||||||
PORTB &= ~(1 << b->output_pin);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ClearButtonTimer(btn_state *b) {
|
static void ClearButtonTimer(btn_state *b) {
|
||||||
b->timer_enabled = 0;
|
b->timer_enabled = 0;
|
||||||
b->is_long_pressed = 0;
|
b->is_long_pressed = 0;
|
||||||
|
@ -207,7 +206,7 @@ static void UpdateButtonOutput(btn_state *b) {
|
||||||
/*If this is a new event.*/
|
/*If this is a new event.*/
|
||||||
if (!b->is_long_pressed && !b->timer_enabled) {
|
if (!b->is_long_pressed && !b->timer_enabled) {
|
||||||
/*Then start the timer and update the output*/
|
/*Then start the timer and update the output*/
|
||||||
//ToggleOutput(b);
|
// ToggleOutput(b);
|
||||||
StartButtonTimer(b);
|
StartButtonTimer(b);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -231,7 +230,7 @@ static void UpdateButtonOutput(btn_state *b) {
|
||||||
MotorSetSavePos();
|
MotorSetSavePos();
|
||||||
}
|
}
|
||||||
/*If the button pres was a short one.*/
|
/*If the button pres was a short one.*/
|
||||||
else if(!b->is_long_pressed) {
|
else if (!b->is_long_pressed) {
|
||||||
MotorMoveTo(MotorGetSavedPos());
|
MotorMoveTo(MotorGetSavedPos());
|
||||||
}
|
}
|
||||||
ClearButtonTimer(b);
|
ClearButtonTimer(b);
|
||||||
|
|
Loading…
Reference in New Issue