Dokąd zmierza świat?

Tu można porozmawiać na dowolny temat nie koniecznie związany z tematyką maszyn i CNC
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?

#31

Post napisał: tuxcnc » 01 cze 2025, 23:14

drzasiek90 pisze:
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.
Co się tak uparłeś wyjść na idiotę?
To TWÓJ kod wywala błąd !!!




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?

#32

Post napisał: drzasiek90 » 01 cze 2025, 23:20

Tobie naprawdę nie warto pomagać.
To ty sobie nie radzisz z tak prostym problemem, nie ja.
Nie mój kod wywala błąd tylko Twój projekt do którego bezmyślnie dodałeś kawałek mojego kodu, bo nie rozumiesz co się dzieje.
Nie pokazałeś całego projektu tylko fragment kodu więc nie wiadomo co dodajesz i gdzie.
Ale już zostało wszystko wyjaśnione gdzie jest problem i co powinieneś zrobić aby mieć obsługę przerwania i aby nie było błędu!
Jeśli tego nie rozumiesz to jesteś po prosru miernym programistą i naprawdę powinieneś rozważyć aby zająć się czymś innym.
Temat jest wyczerpany i średnio ogarnięty programista na podstawie tych informacji będzie wiedział co zrobić.
A ty rżnij głupa dalej bo na "dziękuję za pomoc" jesteś za słaby.
Więc lepiej odwrócić kota ogonem i jeszcze obrażać tych co ci pomogli.
Jesteś niemożliwe wkurzający i irytujący.

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?

#33

Post napisał: tuxcnc » 01 cze 2025, 23:32

drzasiek90 pisze:
01 cze 2025, 23:20
Tobie naprawdę nie warto pomagać.
To ty sobie nie radzisz z tak prostym problemem, nie ja.
Nie mój kod wywala błąd tylko Twój projekt do którego dodałeś kawałek mojego.
Nie pokazałeś całego projektu tylko fragment kodu więc nie wiadomo co dodajesz i gdzie.
Ale już zostało wszystko wyjaśnione gdzie jest problem i co powinieneś zrobić aby mieć obsługę przerwania i aby nie było błędu!
Jeśli tego nie rozumiesz to jesteś po prosru miernym programistą i naprawdę powinieneś rozważyć aby zająć się czymś innym.
Temat jest wyczerpany i średnio ogarnięty programista na podstawie tych informacji będzie wiedział co zrobić.
A ty rżnij głupa dalej bo na "dziękuję za pomoc" jesteś za słaby.
Więc lepiej odwrócić kota ogonem i jeszcze obrażać tych co ci pomogli.
Jesteś niemożliwe wkurzający i irytujący.
Ale Ty jesteś tępy...
Napisałem kod, który obsługuje enkoder kwadraturowy. Liczy w przód i w tył, problem jest tylko taki, że licznik jest 16-bitowy, więc w większości zastosowań się przepełni, a nie powinien.
Dlatego jest potrzeba użyć przerwania z licznika, aby rozszerzyć wynik na co najmniej 32 bity, co zrobiłem w innych programach używających bibliotek, ale tutaj chcę bez bibliotek.
Tak więc w moim kodzie nie ma sensu szukać błędu, bo go tam nie ma.
Jeśli nie użyję NVIC_EnableIRQ(TIM1_UP_IRQn), to licznik liczy w kółko, a jak użyję NVIC_EnableIRQ(TIM1_UP_IRQn) to dolicza do 65535 i program się zawiesza.
Znaczy to dokładnie tyle, że NVIC_EnableIRQ(TIM1_UP_IRQn) nie działa tak, jak można oczekiwać.

A ty wkleiłeś kod z extern "C" , więc Ci grzecznie odpisałem, że się nie kompiluje i jakie błędy wywala.
A teraz mi tłumaczysz, że to ja jestem kretynem...

Jeśli masz tak "pomagać", to sobie odpuść.


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?

#34

Post napisał: drzasiek90 » 02 cze 2025, 07:42

tuxcnc pisze:
01 cze 2025, 23:32
A teraz mi tłumaczysz, że to ja jestem kretynem...
Jesteś, bo zamiast przeanalizować co ci ktoś podpowiada, to jesteś przekonany o swojej nieomylności i jeszcze obrażasz innych.
NIE ZASŁUGUJESZ NA POMOC I POWINIENEŚ SOBIE RADZIĆ SAM, SKORO NIE POTRAFISZ ZAPANOWAĆ NAD WŁASNYM CHAMSTWEM.
tuxcnc pisze:
01 cze 2025, 23:32
Znaczy to dokładnie tyle, że NVIC_EnableIRQ(TIM1_UP_IRQn) nie działa tak, jak można oczekiwać.
NIE!
To może oznaczać bardzo wiele, np to, że nie masz w programie procedury obsługi przerwania (po informacji kompilatora wiemy, że już jest), albo jest ona nieprawidłowa. Nie pokazałeś programu tylko skrawek więc zgadnąć trudno. A sam nie chcesz sprawdzić.
Dopisując kod który ci podałem, kompilator CI WYRAŹNIE PODPOWIEDZIAŁ, ŻE TAKA PROCEDURA JUŻ W TWOIM PROGRAMIE JEST!
Więc albo ją odszukaj i sprawdź co tam nie gra albo ją usuń z programu i używaj własnej!
Skoro nie używasz HALA i bibliotek to po prostu je usuń z projektu - pewnie inkludujesz coś bezmyślnie do projektu.
Procedura obsługi przerwania w twoim kodzie najprwdopodobniej jest "pusta" i nie ma kasowania flagi przerwania od przepełnienia licznika, dlatego po pierwszym przepełnieniu przerwanie wykonuje się cały czas, stąd program się "wiesza".

Nie masz przypadkiem w twoim ulepionym programie takiej linii?
#include <HardwareTimer.h>
lub nie używasz jakiejś innej biblioteki która korzysta z HardwareTimer?


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?

#35

Post napisał: atom1477 » 02 cze 2025, 08:38

tuxcnc pisze:
01 cze 2025, 23:32
Napisałem kod, który obsługuje enkoder kwadraturowy. Liczy w przód i w tył, problem jest tylko taki, że licznik jest 16-bitowy, więc w większości zastosowań się przepełni, a nie powinien.
Dlatego jest potrzeba użyć przerwania z licznika, aby rozszerzyć wynik na co najmniej 32 bity, co zrobiłem w innych programach używających bibliotek, ale tutaj chcę bez bibliotek.
Tak więc w moim kodzie nie ma sensu szukać błędu, bo go tam nie ma.
Jeśli nie użyję NVIC_EnableIRQ(TIM1_UP_IRQn), to licznik liczy w kółko, a jak użyję NVIC_EnableIRQ(TIM1_UP_IRQn) to dolicza do 65535 i program się zawiesza.
Znaczy to dokładnie tyle, że NVIC_EnableIRQ(TIM1_UP_IRQn) nie działa tak, jak można oczekiwać.
Znaczy jesteś tępy.
Samo NVIC_EnableIRQ(TIM1_UP_IRQn) nie realizuje przerwania! To tylko włącza zezwolenia na jego obsługę.
Ale musisz mieć jeszcze funkcję obsługi przerwania, a jej nie pokazałeś. Nie wiadomo jaką ma nazwę, ani co robisz w środku (czy kasujesz flagę przerwania).
Pokaż ten fragment, to będzie można gadać dalej.
Nic nam tez nie powiedziałeś, więc pewnie nie sprawdziłeś, na temat tego czy program wchodzi do tego przerwania. Jak się testuje nową wersję (np. bez biblioteki HAL) i coś nie działa, to się daje zapalanie jakiegoś LEDa w przerwaniu żeby to sprawdzić.


qqaz
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 1
Posty: 2410
Rejestracja: 28 sty 2007, 16:12
Lokalizacja: Łódź

Re: Dokąd zmierza świat?

#36

Post napisał: qqaz » 02 cze 2025, 08:55

mam wrażenie ze jednak Wy jesteście głupolami którzy maja nadzieję coś tuskowi wytłumaczyć. Chociażby do stopnia zrozumienia po którym będzie:
"aha!"
Nie będzie.

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?

#37

Post napisał: tuxcnc » 02 cze 2025, 12:58

atom1477 pisze:
02 cze 2025, 08:38
Nic nam tez nie powiedziałeś, więc pewnie nie sprawdziłeś, na temat tego czy program wchodzi do tego przerwania.
Chcesz wyjść na większego idiotę od tego drugiego?
Przecież napisałem wyraźnie, że po przepełnieniu licznika procek się wiesza.
Cholera wie gdzie wchodzi i co robi, bo nie ma jak tego sprawdzić.
Poza tym, to nie myl tego jak coś MA działać, od tego jak działa.
Wiem doskonale że NVIC_EnableIRQ ma skonfigurować przerwanie, ale nie wiadomo czy i jak to robi.
Skonfigurować, bo włączyć i wyłączyć jest w bicie DIER rejestru TIMx.

Jak ja mam z Wami rozmawiać, kiedy zamiast czytać co napisałem, zmyślacie sobie różne bzdury?


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?

#38

Post napisał: drzasiek90 » 02 cze 2025, 13:09

Jakbyś odpowiadał na pytania i sprawdzał to co masz zasugerowane to byś już miał problem rozwiązany.
Wystarczy odnaleźć gdzie masz w kodzie procedurę obsługi tego przerwania (bo ją masz, tak zgłasza twój kompilator przy próbie dodania jej drugi raz).
Ale wolisz rżnąć głupa dalej.


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?

#39

Post napisał: atom1477 » 02 cze 2025, 13:15

tuxcnc pisze:
02 cze 2025, 12:58
atom1477 pisze:
02 cze 2025, 08:38
Nic nam tez nie powiedziałeś, więc pewnie nie sprawdziłeś, na temat tego czy program wchodzi do tego przerwania.
Chcesz wyjść na większego idiotę od tego drugiego?
Przecież napisałem wyraźnie, że po przepełnieniu licznika procek się wiesza.
Bo jesteś tępy.
Nie rozumiesz że to właśnie jest objaw tego że procek wchodzi do przerwania?
Pytanie tylko którego (tzn. której funkcji, Twojej czy jakiejś z Adruino), i dlaczego z niego nie wychodzi. LED by pozwolił to ustalić.
tuxcnc pisze:
02 cze 2025, 12:58
Wiem doskonale że NVIC_EnableIRQ ma skonfigurować przerwanie, ale nie wiadomo czy i jak to robi.
Skonfigurować, bo włączyć i wyłączyć jest w bicie DIER rejestru TIMx.
No czyli nie wiesz. To nie konfiguruje przerwania, tylko włącza zezwolenie na obsługę (czyli właśnie ustawia bit DIER).
I tu nie ma żadnego problemu. Ten fragment działa Ci dobrze. Tylkoś się uparł szukać problemu właśnie w nim.

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?

#40

Post napisał: tuxcnc » 02 cze 2025, 14:30

atom1477 pisze:
02 cze 2025, 13:15
Bo jesteś tępy.
drzasiek90 pisze:
02 cze 2025, 13:09
Ale wolisz rżnąć głupa dalej.
Obaj jesteście debilami...

Ponieważ gdzieś w necie wyczytałem, że przyczyną może być konflikt z obsługą USB, więc ją wyłączyłem.
Arduinowy Serial uparł się działac na pinach PA9 (TX) i PA10 (RX), co się kłoci z TIM1, więc musiałem jego kod zakomentować i testy robić na TIM3, co ma taką zaletę, że TIM3 ma tylko jeden wektor przerwania TIM3_IRQHandler.

W kodzie są dwie interesujące nas linie:

Kod: Zaznacz cały

TIM3->DIER|=TIM_DIER_UIE; // Włącza przerwanie
NVIC_EnableIRQ(TIM3_IRQn); // Ustawia przerwanie
I nie pieprzcie, że NVIC_EnableIRQ ustawia DIER, bo gówno prawda.
Jeżeli zakomentuję jedną,dowolną, linię z tych dwóch (albo obie), to licznik liczy w kółko, a Serial.println(TIM3->CNT); wyświetla zliczone impulsy.
Jeśli obie linie są odkomentowane, to konwerter serial<>USB jest martwy i niczego więcej sprawdzić się nie da.
(Poprzednio (TIM1 i USB) procek się wieszał dopiero przy przerwaniu, tutaj układ się w ogóle nie daje uruchomić.)

Czyli :

//TIM3->DIER|=TIM_DIER_UIE;
NVIC_EnableIRQ(TIM3_IRQn);
DZIAŁA

Lub

TIM3->DIER|=TIM_DIER_UIE;
//NVIC_EnableIRQ(TIM3_IRQn);
DZIAŁA

Lub

//TIM3->DIER|=TIM_DIER_UIE;
//NVIC_EnableIRQ(TIM3_IRQn);
DZIAŁA

Ale

TIM3->DIER|=TIM_DIER_UIE;
NVIC_EnableIRQ(TIM3_IRQn);
Robi z procka cegłę...



Czy coś dotarło do pustych łbów ???

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Na luzie”