This commit is contained in:
2022-08-06 12:51:54 +02:00
parent 367497cced
commit 1c2cc9731f
5 changed files with 43 additions and 8 deletions
+2 -1
View File
@@ -12,10 +12,11 @@ volatile uint16_t time_ms;
* Putchar for printf
* @param c - char to print
*/
void putchar(char c)
int putchar(int c)
{
while ((UART1->SR & UART1_SR_TXE) == 0);
UART1->DR = (u8)c;
return 1;
}
/**
+1 -1
View File
@@ -15,7 +15,7 @@ void UART1_RX_IRQHandler(void) INTERRUPT(18);
void TIM4_UPD_OVF_IRQHandler(void) INTERRUPT(23);
/** putchar, used by the SDCC stdlib */
void putchar(char c);
int putchar(int c);
/**
* Simple init (UART, LED, timebase)
+22 -5
View File
@@ -2,10 +2,12 @@
#include <stdio.h>
#include "bootstrap.h"
#define LEVEL_TOP 400
#define LEVEL_MAX 370
#define LEVEL_TOP 1024
#define LEVEL_MAX 1000
volatile uint16_t level = 200;
volatile uint16_t level = 0;
#define BYPASSBTN_PIN (1 << 7)
/**
* Set PWM level
@@ -13,7 +15,8 @@ volatile uint16_t level = 200;
void PWM_Write(void)
{
uint16_t tmp = level;
if (tmp > LEVEL_MAX) tmp = LEVEL_MAX;
//if (tmp > LEVEL_MAX) tmp = LEVEL_MAX;
if (tmp >= LEVEL_MAX) tmp = LEVEL_TOP;
TIM1_SetCompare4(tmp);
}
@@ -22,6 +25,13 @@ void PWM_Cmd(FunctionalState fs)
TIM1_CtrlPWMOutputs(fs);
}
void BYPASSBTN_Setup()
{
GPIO_Init(GPIOC,GPIO_PIN_7,GPIO_MODE_IN_PU_NO_IT);
//GPIOC->DDR &= ~BYPASSBTN_PIN;
//GPIOC->CR1 |= BYPASSBTN_PIN;
}
/**
* Set up the PWM generation
*/
@@ -32,7 +42,7 @@ void PWM_Setup()
//GPIOC->CR1 &= ~GPIO_PIN_4; // open drain
GPIOC->CR2 |= GPIO_PIN_4; // fast
TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, LEVEL_TOP, 0);
TIM1_TimeBaseInit(1 << 14, TIM1_COUNTERMODE_UP, LEVEL_TOP, 0);
TIM1_OC4Init(TIM1_OCMODE_PWM1,
TIM1_OUTPUTSTATE_ENABLE,
@@ -63,6 +73,7 @@ void main(void)
SimpleInit();
PWM_Setup();
AIN_Setup();
BYPASSBTN_Setup();
// Go
PWM_Cmd(ENABLE);
@@ -76,7 +87,13 @@ void main(void)
// adjust level
if (ADC1_GetFlagStatus(ADC1_FLAG_EOC)) {
conv = ADC1_GetConversionValue();
if (0 == (GPIOC->IDR & BYPASSBTN_PIN)) {
conv = LEVEL_TOP;
}
level = conv;
PWM_Write();
}
}