2022-07-19 02:00 AM
#define TRIAC_PULSE_WIDTH 500 // Duration of TRIAC trigger pulse in µs
lcd_init();
lcd_send_cmd (0x80|0x00);
lcd_send_string("HELLO WORLD");
lcd_send_cmd (0x80|0x40);
lcd_send_string("LCD 20x4 DEMO");
lcd_send_cmd (0x80|0x1C);
lcd_send_string("BY");
lcd_send_cmd (0x80|0x54);
lcd_send_string("powertechnologies");
void timer1_init( void )
{
__HAL_RCC_TIM1_CLK_ENABLE(); // Enable Timer 1 clock
TIM1->CR1 = 0x0088; // Auto-reload, One-Pulse-Mode
TIM1->CR2 = 0x0000; // Idle-state configuration
TIM1->SMCR = 0x0066; // Trigger-Mode, Timer input 2
TIM1->DIER = 0x0000; // Disable interrupts
TIM1->SR = 0x0000; // Clear status register
TIM1->EGR = 0x0000; // Clear event generation register
TIM1->CCMR1 = 0x0178; // OC1: PWM2-Mode, Preload, IC2: IC2 on TI2
TIM1->CCMR2 = 0x0000; // OC3/OC4, IC3/IC4 off
TIM1->CCER = 0x00A1; // OC1: On, AH; IC2: On, Both edges
TIM1->CNT = 0; // Clear timer 1 counter
TIM1->PSC = 168-1; // Set prescaler to 168
TIM1->ARR = 0x0000; // Initialize Auto-reload register
TIM1->RCR = 0x0000; // Clear repetition counter
TIM1->CCR1 = 0x0000; // Initialize Capture/Compare register 1
TIM1->CCR2 = 0x0000; // Clear Capture/Compare register 2
TIM1->CCR3 = 0x0000; // Clear Capture/Compare register 3
TIM1->CCR4 = 0x0000; // Clear Capture/Compare register 4
TIM1->BDTR = 0x8000; // Main output enable
TIM1->DCR = 0x0000; // Clear DMA configuration (DMA not needed)
// TIM1->DMAR = ......;
TIM1->CR1 |= 0x0001; // Timer 1 Enable
}
void gpio_init( void )
{
__HAL_RCC_GPIOE_CLK_ENABLE(); // Enable GPIOE clock
GPIOE->MODER = 0x00880000; // Enable PE9/PE11 alternate function mode
GPIOE->AFR[1] = 0x00001010; // Select PE9/PE11 alternate function AF1
GPIOE->AFR[0] = 0x00000000; // Clear AFRL
GPIOE->OTYPER = 0x00000000; // Set all outputs to push-pull mode (default)
GPIOE->OSPEEDR = 0x00000000; // Set all outputs to low-speed (default)
GPIOE->PUPDR = 0x00000000; // Disable all pull-ups and pull-downs
}
void set_alpha( int alpha )
{
TIM1->CCR1 = alpha;
TIM1->ARR = alpha + TRIAC_PULSE_WIDTH;
}
I use STM32F429ZI and stmcube ide to write the code. I have activate the timer 1 (ch1 at output compare PE9 and ch2 input capture PE11 ).
On PE11 i put a quare wave of 50 hz and in the output(PE9 i have the pulses every rising and falling edges.)The lcd works very fine (i2c but i have tried also spi and it works.) but when i connect the lcd to send strings(for example when i write lcd init(), the timer output(PE9 ) go up at 3.3v and the pulse misses.
Can you help me please? if you want more information , i can be more clear.
2022-07-19 02:14 AM
> for example when i write lcd init(), the timer output(PE9 ) go up at 3.3v and the pulse misses
Read out and check/compare GPIOE and timer registers content between working and non-working cases.
JW
2022-07-19 02:18 AM
thanks for your answer, i have tried a lot , reading manual , changing things on code but without result.
2022-07-19 02:20 AM
That's why I say, read out the content of registers and check/compare/post.
JW
2022-07-19 05:55 AM
@LFerr.7 "The lcd works very fine (i2c but i have tried also spi and it works.) but when i connect the lcd to send strings(for example when i write lcd init(), the timer output(PE9 ) go up at 3.3v and the pulse misses."
Not quite clear what you're saying here - is this purely a software change, or are you also changing hardware?
As @Community member says, whenever you have one working and one non-working case, the thing to do is to compare them side-by-side - step through, and see where things are different.
Or, perhaps, go back to the working case and just make small, incremental changes - so you don't have much to debug at the point that it stops working...
2022-07-19 06:00 AM
It is a software change. I see on the oscilloscope that in the output of timer i have Constant voltage 3,3V instead of the pulses
2022-07-19 06:00 AM
Blind writing all the pin configuration,etc, looks like it will cause headaches and waste time.
Think harder, and tread more carefully..
2022-07-19 06:02 AM
thank you
2022-07-19 07:01 AM
so compare & contrast your timer setup in the 2 cases