Pre dvadesetak dana mi je trebao ticker reda 1-100uS (miksovao sam HAL i cmsis lib.) i ovako sam ga napravio (poslednja podešenost je na 100uS).
Evo bitnog dela koda u vezi tog:
Nisam imao potrebe za kraćim vremenima. Inače u data od stm32f1xx piše da je maksimalna moguća brzina nekih in/out pinova 50MHz (svakako sa krajnje minimalnim C opterećenjem) i nemam razloga da im ne verujem.
U realnom svetu je bez terminacije čak i kratkih vodova i sa veoma malim C i L teretom, upotrebljivo nešto do možda 25MHz...
Vidiš i sam razne "zmije" koje se na samoj sondi skopa javljaju zbog njene RLC karakteristike.
Stavi na red sa sondom x10 bar par stotina neinduktivnih oma i imaćeš bolji uvid u stvarni talasni oblik na pinu.
P.S. Inače, GPIOs i Timer1 su na APB2, tj. na PCLK2 koji može do svih 72MHz. Moguće je da se možda pomoću timer1 može dostići tih njihovih 50MHz...
Evo bitnog dela koda u vezi tog:
Code:
#define LedToggle() HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13)
#define Led(x) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, (x))
void SetupTimer3isr(void){
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPCEN;
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
TIM3->PSC = 0; // Set prescaler (PSC + 1)//oko 100uS
TIM3->ARR = 7240; // Auto reload value
TIM3->DIER = TIM_DIER_UIE; // Enable update interrupt (timer level)
TIM3->CR1 = TIM_CR1_CEN; // Enable timer
NVIC_EnableIRQ(TIM3_IRQn); // Enable interrupt from TIM3 (NVIC level)
HAL_NVIC_SetPriority(TIM3_IRQn, 1, 1);
}
void TIM3_IRQHandler(void)//oko 100uS trenutno
{
if(TIM3->SR & TIM_SR_UIF){ // if UIF flag is set
TIM3->SR &= ~TIM_SR_UIF; // clear UIF flag
LedToggle();
}
}
Nisam imao potrebe za kraćim vremenima. Inače u data od stm32f1xx piše da je maksimalna moguća brzina nekih in/out pinova 50MHz (svakako sa krajnje minimalnim C opterećenjem) i nemam razloga da im ne verujem.
U realnom svetu je bez terminacije čak i kratkih vodova i sa veoma malim C i L teretom, upotrebljivo nešto do možda 25MHz...
Vidiš i sam razne "zmije" koje se na samoj sondi skopa javljaju zbog njene RLC karakteristike.
Stavi na red sa sondom x10 bar par stotina neinduktivnih oma i imaćeš bolji uvid u stvarni talasni oblik na pinu.
P.S. Inače, GPIOs i Timer1 su na APB2, tj. na PCLK2 koji može do svih 72MHz. Moguće je da se možda pomoću timer1 može dostići tih njihovih 50MHz...