Updated to latest version. Added in new version of the Siren
Dependencies: mbed-src
Fork of VolundrIntroCase2015 by
Diff: main.cpp
- Revision:
- 1:fad61b6e660b
- Parent:
- 0:9826a0b36948
- Child:
- 2:7ca8b2154664
--- a/main.cpp Sat Aug 01 18:32:09 2015 +0000 +++ b/main.cpp Tue Aug 04 21:22:56 2015 +0000 @@ -1,52 +1,94 @@ #include "mbed.h" -// CT16B0 --> MOTORA -// CT32B0 --> MOTORB - -int init_drive(void) { - // Enable match outputs of CT16B0 and CT32B0 - LPC_IOCON->PIO0_8 |= 0x2; //CT16B0_MAT0 - LPC_IOCON->PIO0_9 |= 0x2; //CT16B0_MAT1 - LPC_IOCON->PIO0_18 |= 0x2; //CT32B0_MAT0 - LPC_IOCON->PIO0_19 |= 0x2; //CT32B0_MAT1 - // Enable clock for CT16B0 (7) and CT32B0 (9) - LPC_SYSCON->SYSAHBCLKCTRL |= (1<<7)||(1<<9); - // Reset on match (MAT3), MR3 will determine the PWM cycle length - LPC_CT16B0->MCR |= (1<<10); - LPC_CT32B0->MCR |= (1<<10); - // Enable PWM mode for CT16B0 and CT32B0 - //LPC_CT16B0->PWMC |= (1<<0)||(1<<1); // MAT0, MAT1 - //LPC_CT32B0->PWMC |= (1<<0)||(1<<1); // MAT0, MAT1 - LPC_CT16B0->EMR |= (0x3<<4); - // Set PWM cycle length to 100 counts - LPC_CT16B0->MR3 = 100; - LPC_CT32B0->MR3 = 100; - // Set prescale register - LPC_CT16B0->PR = 20; - LPC_CT32B0->PR = 20; - - // Enable CT16B0 and CT32B0 - LPC_CT16B0->TCR |= (1<<0); - LPC_CT32B0->TCR |= (1<<0); +/* +MOTOR A +ENA - p21 +IN1 - p5 --> OUT1 - MOTORA+ +IN2 - p6 --> OUT2 - MOTORA- +MOTOR B +ENB - p22 +IN3 - p26 --> OUT3 - MOTORB+ +IN4 - p25 --> OUT4 - MOTORB- +*/ + +PwmOut in1(p5); +PwmOut in2(p6); + +PwmOut in3(p26); +PwmOut in4(p25); + +DigitalOut en_a(p21); +DigitalOut en_b(p22); + +DigitalOut LED(LED1); + +Serial bluetooth(p9, p10); +//Serial pc(USBTX, USBRX); + + +/* Initialize timers for the H-bridge*/ +int init_drive() +{ +// Set PWM frequency to 10 kHz + in1.period_us(100); + in2.period_us(100); + in3.period_us(100); + in4.period_us(100); + /* Set enable pin high. NEVER set this pins low during driving. + There are no protection diodes and with EN low, H-bridge is in Hi-Z mode. + This can generate a high voltage that breaks the H-bridge.*/ + en_a.write(1); + en_b.write(1); + + return 1; +} + +/*Handler for Bluetooth messages*/ +void rxCallback() +{ + char a; + a = bluetooth.getc(); + if(a == 'g') { + LED = 1; + } +} + +/* Initialize the bluetooth module*/ +int init_bluetooth() +{ + bluetooth.baud(9600); + //wait(0.2); + //bluetooth.printf("AT+NAMETHOR1\r\n"); + bluetooth.attach(&rxCallback, Serial::RxIrq); return 1; - +} + +/* Initialize ADC ports*/ +int init_ADC() +{ + return 1; +} + + +/* Initialize GPIO's*/ +int init_GPIO() +{ + return 1; } -DigitalOut myled(LED1); +int main() +{ -int main() { init_drive(); + init_bluetooth(); - LPC_CT16B0->MR0 = 50; - LPC_CT16B0->MR1 = 50; - LPC_CT32B0->MR0 = 50; - LPC_CT32B0->MR1 = 50; - - // Program ends while(1) { - myled = 1; - wait(0.2); - myled = 0; - wait(0.2); +/* if(pc.readable()) { + bluetooth.putc(pc.getc()); + } + if(bluetooth.readable()) { + pc.putc(bluetooth.getc()); + }*/ } -} + +} \ No newline at end of file