Add commands for manipulating pins. And other CRAAAAAZY stuff.
This commit is contained in:
parent
90d2f0dfbf
commit
17eae752de
@ -3,7 +3,8 @@
|
||||
#include <string.h>
|
||||
#include <avr/io.h>
|
||||
|
||||
#include "include/commands.h"
|
||||
#include "commands.h"
|
||||
#include "pins.h"
|
||||
|
||||
cmd_t command = {
|
||||
.buf = {0},
|
||||
@ -48,8 +49,8 @@ void cmd_handle(cmd_t *command)
|
||||
if (0 == strcmp(tok1, "set"))
|
||||
cmd_handle_set(tok2, tok3);
|
||||
|
||||
if (0 == strcmp(tok1, "switch"))
|
||||
cmd_handle_switch();
|
||||
if (0 == strcmp(tok1, "switch") || 0 == strcmp(tok1, "sw"))
|
||||
cmd_handle_switch(tok2, tok3);
|
||||
}
|
||||
|
||||
void cmd_handle_set(char *op1, char *op2)
|
||||
@ -93,12 +94,50 @@ void cmd_handle_set(char *op1, char *op2)
|
||||
}
|
||||
}
|
||||
|
||||
void cmd_handle_switch(void)
|
||||
void cmd_handle_switch(char *op1, char *op2)
|
||||
{
|
||||
int state = 0;
|
||||
|
||||
PORTD ^= (1<<PD6);
|
||||
|
||||
state = PORTD & (1 << PD6);
|
||||
printf("Pin state is %i\r\n", state);
|
||||
if (0 == strcmp(op1, "pd6")) {
|
||||
if (0 == strcmp(op2, "on"))
|
||||
setPin(&PORTD, PD6);
|
||||
else if (0 == strcmp(op2, "off"))
|
||||
unsetPin(&PORTD, PD6);
|
||||
else
|
||||
togglePin(&PORTD, PD6);
|
||||
}
|
||||
|
||||
if (0 == strcmp(op1, "pb6")) {
|
||||
if (0 == strcmp(op2, "on"))
|
||||
setPin(&PORTB, PB6);
|
||||
else if (0 == strcmp(op2, "off"))
|
||||
unsetPin(&PORTB, PB6);
|
||||
else
|
||||
togglePin(&PORTB, PB6);
|
||||
}
|
||||
|
||||
if (0 == strcmp(op1, "pc7")) {
|
||||
if (0 == strcmp(op2, "on"))
|
||||
setPin(&PORTC, PC7);
|
||||
else if (0 == strcmp(op2, "off"))
|
||||
unsetPin(&PORTC, PC7);
|
||||
else
|
||||
togglePin(&PORTC, PC7);
|
||||
}
|
||||
|
||||
if (0 == strcmp(op1, "pd1")) {
|
||||
if (0 == strcmp(op2, "on"))
|
||||
setPin(&PORTD, PD1);
|
||||
else if (0 == strcmp(op2, "off"))
|
||||
unsetPin(&PORTD, PD1);
|
||||
else
|
||||
togglePin(&PORTD, PD1);
|
||||
}
|
||||
|
||||
if (0 == strcmp(op1, "pd0")) {
|
||||
if (0 == strcmp(op2, "on"))
|
||||
setPin(&PORTD, PD0);
|
||||
else if (0 == strcmp(op2, "off"))
|
||||
unsetPin(&PORTD, PD0);
|
||||
else
|
||||
togglePin(&PORTD, PD0);
|
||||
}
|
||||
}
|
@ -7,4 +7,4 @@ void cmd_mirror_char(char c);
|
||||
void cmd_collect_char(char c);
|
||||
void cmd_handle(cmd_t *command);
|
||||
void cmd_handle_set(char *op1, char *op2);
|
||||
void cmd_handle_switch(void);
|
||||
void cmd_handle_switch(char *op1, char *op2);
|
@ -13,17 +13,23 @@ int main()
|
||||
|
||||
printf("Starting up!\r\n");
|
||||
|
||||
/* Make PB2 an output pin */
|
||||
DDRB |= (1 << DDB2);
|
||||
DDRB |= (1 << DDB6);
|
||||
|
||||
DDRC |= (1 << DDC7);
|
||||
|
||||
DDRD |= (1 << DDD0);
|
||||
DDRD |= (1 << DDD1);
|
||||
DDRD |= (1 << DDD6);
|
||||
|
||||
|
||||
initCtcTimer0();
|
||||
|
||||
sei();
|
||||
|
||||
while (1) {
|
||||
if ((PORTB & (1<<PB2))>1) {
|
||||
_delay_us(1);
|
||||
_delay_ms(5);
|
||||
PORTB &= ~(1<<PB2);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user