diff --git a/README b/README index 4faefd2..2169ca5 100644 --- a/README +++ b/README @@ -20,3 +20,7 @@ Software - required packages Ubuntu: * pyqt4-dev-tools * python-usb (from ppa:gekkio/pyusb) + +TODO: + prechod z MAX na 0 u PWM nefunguje + diff --git a/firmware/src/edubrm.c b/firmware/src/edubrm.c index 8f18906..c623eda 100644 --- a/firmware/src/edubrm.c +++ b/firmware/src/edubrm.c @@ -64,6 +64,7 @@ void SetOutReport (uint8_t dst[], uint32_t length) break; case 'P': states = dst[1]; + PinDir(states); // TODO: set pins to states (1 is INPUT, 0 is OUTPUT) // pin1 is PIN_1 // pin2 is PIN_2 @@ -72,6 +73,7 @@ void SetOutReport (uint8_t dst[], uint32_t length) case 'o': which = dst[1] >> 1; state = dst[1] & 0x01; + PinState(which, state); // TODO: set output pins (which) to state (state) // pin1 is PIN_1 // pin2 is PIN_2 @@ -80,6 +82,24 @@ void SetOutReport (uint8_t dst[], uint32_t length) } } +void PinDir(uint16_t mask) { + mask &= 7; + mask = ((mask & 4) << 5) | ((mask & 2) << 5) | (mask & 1); + LPC_GPIO2->DIR |= mask; + mask |= ~(1<<0 | 1<<6 | 1<<7); + LPC_GPIO2->DIR &= mask; + + LPC_GPIO2->MASKED_ACCESS[1<<0] |= 1<<0; + LPC_GPIO2->MASKED_ACCESS[1<<6] |= 1<<6; + LPC_GPIO2->MASKED_ACCESS[1<<7] |= 1<<7; +} + +void PinState(uint8_t which, uint8_t state) { +// if (which > 1) which += 4; +// LPC_GPIO2->MASKED_ACCESS[1<MASKED_ACCESS[1<IR = 0xff; LPC_GPIO1->DIR ^= 1<<6; diff --git a/firmware/src/edubrm.h b/firmware/src/edubrm.h index 577264e..df0f8ae 100644 --- a/firmware/src/edubrm.h +++ b/firmware/src/edubrm.h @@ -2,3 +2,4 @@ void GetInReport (uint8_t src[], uint32_t length); void SetOutReport (uint8_t dst[], uint32_t length); void EnablePWM1(uint32_t period, uint32_t duty); void EnablePWM2(uint16_t period, uint16_t duty); +void PinDir(uint16_t mask); diff --git a/firmware/src/usbhidrom_main.c b/firmware/src/usbhidrom_main.c index aae9bcc..c3f7d0d 100644 --- a/firmware/src/usbhidrom_main.c +++ b/firmware/src/usbhidrom_main.c @@ -77,6 +77,18 @@ int main (void) for (n = 0; n < 75; n++) {} + LPC_GPIO2->DIR &= ~(1<<0); // pin2 + LPC_GPIO2->DIR &= ~(1<<6); // pin1 + LPC_GPIO2->DIR &= ~(1<<7); // pin3 + + LPC_GPIO2->DIR |= (1<<0); + LPC_GPIO2->DIR |= (1<<6); + LPC_GPIO2->DIR |= (1<<7); + + LPC_GPIO2->MASKED_ACCESS[1<<0] |= 1<<0; + LPC_GPIO2->MASKED_ACCESS[1<<6] |= 1<<6; + LPC_GPIO2->MASKED_ACCESS[1<<7] |= 1<<7; + while (1) __WFI(); }