Wpis z mikrobloga

Kurde chciałem sobie uruchomić tylko i wyłacznie przerwanie IDLE na STM32F103 i udało się ale dzieje się coś dziwnego - cały czas jestem przerzucany do procedury obsugi przerwania, mimo, że teoretycznie flaga powinna być wyczyszczona, zgodnie z dokumentacją:

It is cleared by a software sequence (an read to the USARTSR register followed by a read to the USARTDR register). as you can see I do it in my code, but for some reason the flag is not cleared.

Mimo to siedząc w debuggerze widzę, że cały czas jestem przerzucany do procedury.

Tutaj fragment kodu: klik

#programowanie #embedded
  • 44
  • Odpowiedz
@zarowka12: Tak, prosto z aliexpres.. mam gdzieś drugi taki sam, to najpierw spróbuje z nim, może ten w jakiś sposób uszkodziłem - aczkolwiek nie mam pojęcia jak, bo póki co to ma podpięty jedynie konwerter pod uart i nic więcej.
  • Odpowiedz
@zarowka12: Jeszcze jedno - dodałem w isr kawałek kodu, który sprawdza czy bit IDLE w SR is ustawiony, jeżeli tak to inkrementowany jest pewien licznik.

I teraz dzieją się dwie rzeczy:
- nie ustawiam breakpointa
- wysyłam 20 bajtów
- ustawiam breakpoint
- wysyłam kolejne 20 bajtów
- łapię breakpoint -> licznik jest równy 0...

Drugi scenariusz:
- ustawiam breakpoint
- wysyłam 20 bajtów
- łapię breakpoint
- wchodzę w ifa
  • Odpowiedz
@zarowka12:
Uruchomiłem kod od msalamon, breakpoint na UARTDMA_UartIrqHandler i jestem cały czas wrzucany w ową procedurę... Oczywiście nie wysyłam żadnych danych poprzez UART. Jakieś pomysły? Może to ten konwerter coś w ciula gra?
  • Odpowiedz
@zarowka12: Podpiąłem dwa MCU.
Master -> Skonfigurowałem USART (bez przewań), zapaliłem LED, zostawiłem w pętli gdzie wykonują się nop-y.
Slave - Skonfigurowałem USART, ustawiłem przerwania na IDLE state, w ISR mrugam diodą w momencie gdy licznik osiąga wartość 3000 (podbijana przy każdym przerwaniu). Efekt jest taki, że wspomniana dioda mruga... czyli przerwania wywołują się cały czas.
  • Odpowiedz
@zarowka12: Możesz coś więcej na ten temat napisać? W sensie co można by osiągnać przez to?
Przychodzi mi do głowy jeszcze jedynie to, że coś z tymi płytkami jest nie tak. Bo to nie jest do końca ten tzw. blue pill, bo ta płytka ma złącze JTAG. Standardowy blue pill tego nie ma. Aczkolwiek nie wiem co to może zmieniać. Co by tam musiało być namieszane. Mam jeszcze kilka tych "zwyczajnych"
  • Odpowiedz
@zarowka12: Rozumiem - póki co odpuściłem temat - tzn. sprawdzę to jeszcze na tym blue pillu (ale to po powrocie do krk, bo pracuje teraz zdalnie poza miastem) - bo tak jak pisałem to co mam ja to troszkę inna płytka - a w międzyczasie kupiłem STM32F4 - i tak miałem się na to przerzucić to lepiej teraz gdy mam mniej kodu do przepisania. Tak w ogóle czy kupienie gołego chipu
  • Odpowiedz