-
1. Data: 2014-05-29 13:06:09
Temat: [Laik] C przerwanie działania funkcji.
Od: "Andrzej W." <a...@w...pl>
Cześć,
Możecie mi podpowiedzieć pod jakim hasłem albo gdzie powinienem szukać
wskazówek jak zrealizować coś takiego.
Schemacik:
Punk A.
Wywołanie funkcji F
Punkt B.
Opis:
W A ustawiam sobie przerwanie od licznika.
W B wyłączam to przerwanie.
Jeśli program dotrze z A do B zanim przerwanie zostanie wywołane nic się
nie dzieje, jest normalnie wykonywany dalej.
Jeśli funkcja F się będzie ociągać i przerwanie zostanie wywołane to
program ma zacząć wykonywanie w punkcie B a zasoby zawłaszczone przez F
powinny zostać zwolnione.
Jaki warunki powinna spełniać funkcja F by dało się ją bezboleśnie zabić
i posprzątać?
Całość działa na mikrokontrolerze bez żadnego systemu.
--
AWa.
-
2. Data: 2014-05-29 13:54:29
Temat: Re: [Laik] C przerwanie działania funkcji.
Od: firr <p...@g...com>
W dniu czwartek, 29 maja 2014 13:06:09 UTC+2 użytkownik Andrzej W. napisał:
> Cześć,
>
>
>
> Możecie mi podpowiedzieć pod jakim hasłem albo gdzie powinienem szukać
>
> wskazówek jak zrealizować coś takiego.
>
>
>
> Schemacik:
>
> Punk A.
>
> Wywołanie funkcji F
>
> Punkt B.
>
>
>
> Opis:
>
> W A ustawiam sobie przerwanie od licznika.
>
> W B wyłączam to przerwanie.
>
> Jeśli program dotrze z A do B zanim przerwanie zostanie wywołane nic się
>
> nie dzieje, jest normalnie wykonywany dalej.
>
> Jeśli funkcja F się będzie ociągać i przerwanie zostanie wywołane to
>
> program ma zacząć wykonywanie w punkcie B a zasoby zawłaszczone przez F
>
> powinny zostać zwolnione.
>
> Jaki warunki powinna spełniać funkcja F by dało się ją bezboleśnie zabić
>
> i posprzątać?
>
> Całość działa na mikrokontrolerze bez żadnego systemu.
>
>
a mozesz powiedziec jak wlacza sie przerwanie w c ?
nigdy nie pisalem w czyms takim jak 'c z przerwaniami '
(przerwania potencjalnie super sprawa, czekawe czy jeszcze wiecej takich
fundamentalnych technik w hardware nie mozna by zaangazowac)
co do odpowiedzi to wydaje mi sie ze przerwanie nalzey wlaczyc w jakims ograniczonym
przedziale
tak zeby gdy sie wywola mozna bylo latwo wnioskowac
(lub sprawdzic) o aktualnym stanie programu - masz
wtedy info co procesor zrobil, na przyklad przesunal
stos wiec naprawiasz to i jedziesz dalej - programowanie jak kazde inne - tak to
widze
-
3. Data: 2014-05-29 14:16:54
Temat: Re: [Laik] C przerwanie działania funkcji.
Od: "Andrzej W." <a...@w...pl>
W dniu 2014-05-29 13:54, firr pisze:
> a mozesz powiedziec jak wlacza sie przerwanie w c ?
> nigdy nie pisalem w czyms takim jak 'c z przerwaniami '
Zastrzegłem w temacie, że programistą to nie jestem, czasem napiszę coś
na sprzęt którego używam, więc złośliwości można sobie darować.
Projekt to zawsze "coś" połączenie sprzętu i oprogramowania i jeśli się
na to patrzy w ten sposób to można aktywować przerwanie z poziomu C.
--
AWa.
-
4. Data: 2014-05-29 14:19:21
Temat: Re: [Laik] C przerwanie działania funkcji.
Od: g...@s...invalid (Adam Wysocki)
Andrzej W. <a...@w...pl> wrote:
> W A ustawiam sobie przerwanie od licznika.
> W B wyłączam to przerwanie.
> Jeśli program dotrze z A do B zanim przerwanie zostanie wywołane nic się
> nie dzieje, jest normalnie wykonywany dalej.
> Jeśli funkcja F się będzie ociągać i przerwanie zostanie wywołane to
> program ma zacząć wykonywanie w punkcie B a zasoby zawłaszczone przez F
> powinny zostać zwolnione.
Czyli chcesz zrobić watchdoga na funkcję F(), tak? Jest w niej jakaś
pętla, która wykonuje się cyklicznie i możesz w niej sprawdzić stan
flagi (koniecznie volatile), ustawionej w przerwaniu?
> Jaki warunki powinna spełniać funkcja F by dało się ją bezboleśnie
> zabić i posprzątać?
Nie znam sposobu na czyste "zabicie" funkcji, są sztuczki z setjmp
i longjmp, ale to brudne sztuczki... jedyne czyste sposoby, jakie
znam, to samobójstwo funkcji - niech ona sama się skończy i posprząta.
Chyba że to nie C, a C++, w którym masz wyjątki, a zwalnianiem zasobów
zajmą się destruktory po wyjściu z zasięgu. Ale C++ to zupełnie inna
bajka.
--
SELECT finger FROM hand WHERE id = 3;
http://www.chmurka.net/
-
5. Data: 2014-05-29 14:21:02
Temat: Re: [Laik] C przerwanie działania funkcji.
Od: g...@s...invalid (Adam Wysocki)
Andrzej W. <a...@w...pl> wrote:
> Zastrzegłem w temacie, że programistą to nie jestem, czasem napiszę coś
> na sprzęt którego używam, więc złośliwości można sobie darować.
Nie przejmuj się trollem.
--
SELECT finger FROM hand WHERE id = 3;
http://www.chmurka.net/
-
6. Data: 2014-05-29 14:38:08
Temat: Re: [Laik] C przerwanie działania funkcji.
Od: firr <p...@g...com>
W dniu czwartek, 29 maja 2014 14:16:54 UTC+2 użytkownik Andrzej W. napisał:
> W dniu 2014-05-29 13:54, firr pisze:
>
> > a mozesz powiedziec jak wlacza sie przerwanie w c ?
>
> > nigdy nie pisalem w czyms takim jak 'c z przerwaniami '
>
>
>
> Zastrzeg�em w temacie, �e programist� to nie jestem, czasem napisz� co�
>
> na sprz�t kt�rego u�ywam, wi�c z�o�liwo�ci mo�na sobie darowa�.
>
> Projekt to zawsze "co�" po��czenie sprz�tu i oprogramowania i je�li si�
>
> na to patrzy w ten spos�b to mo�na aktywowa� przerwanie z poziomu C.
>
jakie zlosliwosci : O, po prostu ciekaw jestem jak wyglada programowanie w c z
przerwaniami, nie mozesz po prostu napisac - najlepiej podaj konkretny kod
-
7. Data: 2014-05-29 16:32:14
Temat: Re: [Laik] C przerwanie działania funkcji.
Od: firr <p...@g...com>
go on
-
8. Data: 2014-05-29 20:43:26
Temat: Re: [Laik] C przerwanie działania funkcji.
Od: "Andrzej W." <awa_wp@na_wp_oczywiscie.pl>
W dniu 2014-05-29 14:19, Adam Wysocki pisze:
> Czyli chcesz zrobić watchdoga na funkcję F(), tak? Jest w niej jakaś
> pętla, która wykonuje się cyklicznie i możesz w niej sprawdzić stan
> flagi (koniecznie volatile), ustawionej w przerwaniu?
Tak, chciałbym takiego watchdoga na funkcję. Na cały systemie mam
sprzętowego, ale zabijanie całego systemu jest zauważalne dla użytkownika.
Niestety wszystkie funkcje które chcę nadzorować są funkcjami obsługi
sprzętu, a sprzęt czasem lubi robić sobie jaja.
Plan był taki, że jeśli ląduje w funkcji obsługi przerwania, to
sprawdzam która funkcja się zawiesiła, robię restart sprzętu
wykorzystywanego przez tę funkcję, zeruje jej zmienne i skaczę do punktu
B i program kręci się dalej.
Niestety to wszystko ma się dziać poza kodem funkcji, ma to być
zabezpieczenie na wypadek nieprzewidzianego, nieudokumentowanego
zachowania sprzętu prowadzącego do pozostania funkcji np. w
nieskończonej pętli.
Można, po restarcie sprzętu i inicjalizacji zmiennych zrobić jakiś
chamski skok do etykiety B z poziomu asemblera, ale co z rejestrami
stosem itd.
--
AWa.
-
9. Data: 2014-05-30 01:37:49
Temat: Re: [Laik] C przerwanie działania funkcji.
Od: bartekltg <b...@g...com>
On 29.05.2014 14:19, Adam Wysocki wrote:
> Chyba że to nie C, a C++, w którym masz wyjątki, a zwalnianiem zasobów
> zajmą się destruktory po wyjściu z zasięgu. Ale C++ to zupełnie inna
> bajka.
Wyjątek rzucony w przerwaniu po wyjściu z niego propaguje się
od miejsca, gdzie funkcja została przerwana?
Ostatni raz przerwanie widziałem bawiąc się 16 w bitowym
assemblerze, więc pytanie na poważnie.
pzdr
bartekltg
-
10. Data: 2014-05-30 04:24:25
Temat: Re: [Laik] C przerwanie dzia?ania funkcji.
Od: A.L. <a...@a...com>
On Thu, 29 May 2014 13:06:09 +0200, "Andrzej W."
<a...@w...pl> wrote:
>Cześć,
>
>Możecie mi podpowiedzieć pod jakim hasłem albo gdzie powinienem szukać
>wskazówek jak zrealizować coś takiego.
>
>Schemacik:
>Punk A.
>Wywołanie funkcji F
>Punkt B.
>
>Opis:
>W A ustawiam sobie przerwanie od licznika.
>W B wyłączam to przerwanie.
>Jeśli program dotrze z A do B zanim przerwanie zostanie wywołane nic się
>nie dzieje, jest normalnie wykonywany dalej.
>Jeśli funkcja F się będzie ociągać i przerwanie zostanie wywołane to
Co to znaczy "pzrerwanie zostanei wywolane"?
A.L.