Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Diff: main.cpp
- Revision:
- 5:9a662dec2ddb
- Parent:
- 4:4eeacb39a417
- Child:
- 6:e4da8955cf65
diff -r 4eeacb39a417 -r 9a662dec2ddb main.cpp
--- a/main.cpp Tue Aug 05 23:11:15 2014 +0000
+++ b/main.cpp Tue Aug 05 23:53:59 2014 +0000
@@ -3,6 +3,18 @@
#define OK (0)
#define ERROR (-1)
+#define PIN_41 PB_5
+#define PIN_46 PB_9
+#define PIN_32 PA_11
+#define PIN_20 PB_2
+#define HEX_ONE_THOUSAND (0x03E8)
+
+DigitalOut ENA(PIN_41);
+DigitalOut ENB(PIN_46);
+DigitalOut ENC(PIN_32);
+DigitalOut EnSclk(PIN_20);
+
+
// Forward Declarations
void pwmout_period_ns(pwmout_t* obj, int us);
int cmd_S0(uint16_t value);
@@ -11,10 +23,17 @@
// Globals
bool gSpiMode = false;
SPI* gSpiPtr = NULL;
-DigitalOut gbbTRANS(D8); // Global bit bang TRANS (data) line
+DigitalOut gbbTRANS(PA_4); // Global bit bang TRANS (data) line
+const int SCLK_ENABLED = 0;
int main() {
+ ENA = 1;
+ ENB = 1;
+ ENC = 1;
+ EnSclk = SCLK_ENABLED;
+
+
// NOTE: 24MHz is half the 48MHz clock rate. The PWM registers
// seem to only allow 24MHz at this point, so I'm matching
// the SPI bus speed to be the same.
@@ -30,9 +49,10 @@
// PWMCLK
pwmout_t outs;
- pwmout_init(&outs, D9);
- pwmout_period_ns(&outs, 2); // 24 MHz (not very clean on the scope)
+ pwmout_init(&outs, PB_4);
+ //pwmout_period_ns(&outs, 2); // 24 MHz (not very clean on the scope)
// pwmout_period_ns(&outs, 40); // 1.2 MHz on the scope
+ pwmout_period_us(&outs, 2); // 1.2 MHz on the scope
pwmout_write(&outs, 0.5f);
int ret = OK; // Return value
@@ -40,9 +60,9 @@
printf("17:10\n");
- while (1) {
- for (i=0; i<16; i++) {
- ret = cmd_S0(0xFFFF);
+ //while (1) {
+ for (i=0; i<400; i++) {
+ ret = cmd_S0(0x0900);
// ORIG: ret = cmd_S0(0xFFFF);
if (ret != OK) {
printf("ERROR cmd_S0()\n");
@@ -50,7 +70,7 @@
}
}
cmd_S1();
- }
+ //}
}
@@ -123,10 +143,10 @@
}
-
+/* USED FOR THE F030 BOARD
// This code is based off:
// mbed/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/pwmout_api.c pwmout_period_us()
-void pwmout_period_ns(pwmout_t* obj, int us) {
+void pwmout_period_ns_NOT_USED(pwmout_t* obj, int us) {
TIM_TypeDef *tim = (TIM_TypeDef *)(obj->pwm);
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
float dc = pwmout_read(obj);
@@ -149,3 +169,36 @@
TIM_Cmd(tim, ENABLE);
}
+*/
+
+
+
+/* HAVE NOT GOTTEN THIS WORKNIG FOR THE F072
+// This code is based off:
+// mbed/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F072* /pwmout_api.c pwmout_period_us()
+void pwmout_period_ns(pwmout_t* obj, int us) {
+ TimHandle.Instance = (TIM_TypeDef *)(obj->pwm);
+
+ float dc = pwmout_read(obj);
+
+ __HAL_TIM_DISABLE(&TimHandle);
+
+ // Update the SystemCoreClock variable
+ SystemCoreClockUpdate();
+
+ TimHandle.Init.Period = us - 1;
+ // TimHandle.Init.Prescaler = (uint16_t)(SystemCoreClock / 1000000) - 1; // 1 µs tick
+ TimHandle.Init.Prescaler = 0; // BAG 1 ns tick (?)
+ TimHandle.Init.ClockDivision = 0;
+ TimHandle.Init.CounterMode = TIM_COUNTERMODE_UP;
+ HAL_TIM_PWM_Init(&TimHandle);
+
+ // Set duty cycle again
+ pwmout_write(obj, dc);
+
+ // Save for future use
+ obj->period = us;
+
+ __HAL_TIM_ENABLE(&TimHandle);
+}
+*/
\ No newline at end of file