Witam,
spotkała mnie sytuacja z której nie mogę wybrnąć. Tzn do transmisji używam I2C, które w kontrolerze przerwań ma priorytet 1 dla obsługi zdarzen oraz 0 dla błędów.
Kiedy uruchamiam Timer 17 skonfigurowany jako PWM(to co odczytane zostanie z I2C ma trafić do PWM'a), to transmisja stoi. Od Timera 17 nie generuje przerwań , wiec nic nie powinno zwieszać I2C. Dodam jeszcze że I2C nie wiesza się przy współpracy z TIM1, TIM2 z których wywołuje przerwania(o priorytetach 11 i 12).
Oto konfiguracja Timera:
spotkała mnie sytuacja z której nie mogę wybrnąć. Tzn do transmisji używam I2C, które w kontrolerze przerwań ma priorytet 1 dla obsługi zdarzen oraz 0 dla błędów.
Kiedy uruchamiam Timer 17 skonfigurowany jako PWM(to co odczytane zostanie z I2C ma trafić do PWM'a), to transmisja stoi. Od Timera 17 nie generuje przerwań , wiec nic nie powinno zwieszać I2C. Dodam jeszcze że I2C nie wiesza się przy współpracy z TIM1, TIM2 z których wywołuje przerwania(o priorytetach 11 i 12).
Oto konfiguracja Timera:
TIM17->CR1=0x80; //ARPE
TIM17->CCMR1=0x68; //PWM mode 1, OC1PE
TIM17->CCER=0x0F; //CC1NP CC1NE CC1P CC1E
TIM17->PSC=10;
TIM17->ARR=255;
TIM17->CCR1=20;
TIM17->EGR=0x1; //UG
TIM17->BDTR = 0x8000; //MOE
TIM17->CR1|= 0x01; //ON