Dokąd zmierza świat?

Tu można porozmawiać na dowolny temat nie koniecznie związany z tematyką maszyn i CNC

Avalyah
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 2456
Rejestracja: 29 lis 2015, 00:38
Lokalizacja: Bielsko-Biała

Re: Dokąd zmierza świat?

#21

Post napisał: Avalyah » 01 cze 2025, 22:06

A nie możesz ręcznie wrzucić tego ISRa do kodu? Skoro się wywala na jego wywołaniu, to wygląda, jakby go nie było.



Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 15
Posty: 9454
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: Dokąd zmierza świat?

#22

Post napisał: tuxcnc » 01 cze 2025, 22:17

Avalyah pisze:
01 cze 2025, 22:06
A nie możesz ręcznie wrzucić tego ISRa do kodu? Skoro się wywala na jego wywołaniu, to wygląda, jakby go nie było.
Chcę rozwiązać problem, a nie go ominąć.
Oczywiście procedura obsługi przerwania ma swój adres w pamięci, więc można zrobić tak jak mówisz, ale ja chcę się dowiedzieć dlaczego nie działa to co powinno.


atom1477
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 16
Posty: 3844
Rejestracja: 21 kwie 2011, 10:58
Lokalizacja: ::

Re: Dokąd zmierza świat?

#23

Post napisał: atom1477 » 01 cze 2025, 22:21

Jak mamy Ci pomóc jak nie wiemy jaki konkretnie kod Ci nie działa?


drzasiek90
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 14
Posty: 2381
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: Dokąd zmierza świat?

#24

Post napisał: drzasiek90 » 01 cze 2025, 22:28

Kod: Zaznacz cały

extern "C" void TIM1_UP_IRQHandler(void) {
    if (TIM1->SR & TIM_SR_UIF) {
        TIM1->SR &= ~TIM_SR_UIF;  // Wyczyść flagę

    }
}

Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 15
Posty: 9454
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: Dokąd zmierza świat?

#25

Post napisał: tuxcnc » 01 cze 2025, 22:36

drzasiek90 pisze:
01 cze 2025, 22:28

Kod: Zaznacz cały

extern "C" void TIM1_UP_IRQHandler(void) {
    if (TIM1->SR & TIM_SR_UIF) {
        TIM1->SR &= ~TIM_SR_UIF;  // Wyczyść flagę

    }
}
Już tego próbowałem

Kod: Zaznacz cały

/root/.arduino15/packages/STMicroelectronics/tools/xpack-arm-none-eabi-gcc/14.2.1-1.1/bin/../lib/gcc/arm-none-eabi/14.2.1/../../../../arm-none-eabi/bin/ld: /root/.cache/arduino/sketches/2BC163F6C542CC480C7C3C122E542D51/libraries/SrcWrapper/HardwareTimer.cpp.o: in function `TIM1_UP_IRQHandler':
HardwareTimer.cpp:(.text.TIM1_UP_IRQHandler+0x0): multiple definition of `TIM1_UP_IRQHandler'; /root/.cache/arduino/sketches/2BC163F6C542CC480C7C3C122E542D51/sketch/STM32-Baremetal-Qencoders.ino.cpp.o:STM32-Baremetal-Qencoders.ino.cpp:(.text.TIM1_UP_IRQHandler+0x0): first defined here
collect2: error: ld returned 1 exit status
exit status 1

Compilation error: exit status 1
Bez extern "C" kompiluje się, ale liczy do zapełnienia licznika i się zawiesza.


atom1477
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 16
Posty: 3844
Rejestracja: 21 kwie 2011, 10:58
Lokalizacja: ::

Re: Dokąd zmierza świat?

#26

Post napisał: atom1477 » 01 cze 2025, 22:41

A wywaliłeś HALa? Bo ten błąd wskazuje że HAL jest i gdzieś w sobie już ma zadeklarowaną funkcję obsługi przerwania.


drzasiek90
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 14
Posty: 2381
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: Dokąd zmierza świat?

#27

Post napisał: drzasiek90 » 01 cze 2025, 22:41

To znaczy, że HardwareTimer (z biblioteki STM32Duino) już ma własną wersję obsługi tego przerwania, i Twój kod ją duplikuje.

Opcja 1: Nie używaj HardwareTimer
Opcja 2: Nie twórz własnego TIM1_UP_IRQHandler

Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 15
Posty: 9454
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: Dokąd zmierza świat?

#28

Post napisał: tuxcnc » 01 cze 2025, 22:45

drzasiek90 pisze:
01 cze 2025, 22:41
To znaczy, że HardwareTimer (z biblioteki STM32Duino) już ma własną wersję obsługi tego przerwania, i Twój kod ją duplikuje.

Opcja 1: Nie używaj HardwareTimer
Opcja 2: Nie twórz własnego TIM1_UP_IRQHandler
Przecież to Ty utworzyłeś własny TIM1_UP_IRQHandler używając extern "C"...
Jak masz dawać takie rady, to lepiej idź się wyspać.


Avalyah
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 2456
Rejestracja: 29 lis 2015, 00:38
Lokalizacja: Bielsko-Biała

Re: Dokąd zmierza świat?

#29

Post napisał: Avalyah » 01 cze 2025, 22:49

Nie wiem, jak jest na STMie, ale w AVR ISR to nie jest żadna funkcja. Robi się np. tak:

Kod: Zaznacz cały

EMPTY_INTERRUPT(TCD0_OVF_vect)
Lub jak coś ma być:

Kod: Zaznacz cały

ISR(TCE0_OVF_vect)																	
{
}
I gotowe. Jeśli nie ma tego wektora określonego, to program się wywali jak w niego wejdzie. A ja tu widzę, że jakieś funkcje piszecie.

Oczywiście mogę być w głębokim błędzie, stmy to widziałem tylko w sklepie.


drzasiek90
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 14
Posty: 2381
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: Dokąd zmierza świat?

#30

Post napisał: drzasiek90 » 01 cze 2025, 22:50

tuxcnc pisze:
01 cze 2025, 22:45
Przecież to Ty utworzyłeś własny TIM1_UP_IRQHandler używając extern "C"...
Czytasz czasem jakie głupoty piszesz?
Nie przeanalizowałes sam co ci wyrzucił kompilator więc dostałeś ode mnie informację gdzie i w czym jest błąd.
Podałem ci dwie możliwe opcje.
Do obsługi przerwania musisz mieć jego obsługę.
Więc albo utwórz swoją (pokazałem ci jak bo nie wiesz jak, ale wtedy nie używaj biblioteki która już to samo implementuje) albo nie twórz swojej i skorzystaj z tej którą już masz w bibliotece.

A jak nie potrafisz takich prostych rzeczy to zajmij się malowaniem albo jaka inna sztuką - ty byś zapewne takiej rady udzielił.
Ale i tak tego nie zrozumiesz.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Na luzie”