-
Data: 2013-10-10 20:33:20
Temat: Re: PICowanie
Od: Sebastian Biały <h...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 2013-10-10 20:00, Sylwester Łazar wrote:
> Proszę mnie poprawić jeśli się mylę,
> jednak spróbuję zrozumieć.
> 1) tak jak kolega JDX zauważył, dla foo powinien być typ char, gdyż RETURN
> ma zwrócić wartość z RS-a.
To oczywiste że to czeski błąd, przeciez kod jest z palca i ma tylko
pokazać ideę.
> 2) I teraz w C (drugi przykład) jest problem, gdyż po przepisaniu do
> zmiennej temp,
> zostały ponownie włączone przerwania przez sei() (SEt Interrupt jak sądzę)
> Wtedy temp zwróci wartość odczytaną z UART_D i jest "cool",
> ale zwracając UART_D może być "klopsik", bo w międzyczasie mogło przyjść
> inne przerwanie od RS'a i zmienić wartość rejestru UART_D (UART Data jak
> sądzę)
W tym cały pomysł: żeby uzyskac odczyt w sekcji krytycznej i natychmiast
go zwrócić. W C musisz uzyć zmiennej tymczasowej. W C++ nie, kod jest
znacznie czytelniejszy.
> 3) W C++ jest na tyle wygodnie, że wystarczy wpisać (czy jak to się fachowo
> nazywa w obiektowym języku programowania) na początu, że
> to jest: CriticalSection cs;
> I teraz wiadomo, że jak foo się skończy, to przerwania same się odblokują.
To się nazywa RAII, nie ma nic wspólnego z obiektami poza tym że
akuratnie na nich można ją uzyskać. Wiekszość języków programowania nie
ma RAII choć ma obiekty.
> Czyli chodzi o to, że nie trzeba pamiętać gdzie włączyć sei(), a gdzie
> wyłączyć cli() (CLear Interrupt jak sądzę)
> tylko zapisać, że w foo() nie przejmujemy się przerwaniami, tylko robimy
> swoje?
Owszem, cała sztuka w tym żeby *nie* przejmować się sei. Ono się samo
zrobi tam gdzie powinno. W 99% wypadków poza patologicznymi chcesz mieć
parę cli/sei bez wzgledu na formę wyjścia z funkcji. I o tym nie
pamiętać. Podejście typu "muszę mieć wszystko pod kontrolą" niczym się
nie różni od pisania w asm i świadczy o ubogim warsztacie.
Następne wpisy z tego wątku
- 10.10.13 20:46 Sebastian Biały
- 10.10.13 20:57 Grzegorz Niemirowski
- 10.10.13 21:43 Marek Borowski
- 10.10.13 21:49 Sebastian Biały
- 10.10.13 22:05 JDX
- 10.10.13 22:05 JDX
- 10.10.13 22:11 Sebastian Biały
- 10.10.13 22:26 JDX
- 10.10.13 22:31 Sebastian Biały
- 10.10.13 22:49 Marek Borowski
- 11.10.13 00:11 Sylwester Łazar
- 11.10.13 00:19 Sebastian Biały
- 11.10.13 00:53 Sebastian Biały
- 11.10.13 07:53 Marek
- 11.10.13 08:43 Zbych
Najnowsze wątki z tej grupy
- Przednia lampka rowerowa Basta / AXA pod dynamo w piaście
- Boję siię capa...
- Efekt gitarowy koda kd-30 trash metal
- Re: Efekt gitarowy koda kd-30 trash metal
- Wykrywanie przerwy w długim przewodzie zakopanym w ziemi.
- PT500
- supercap
- Procesor NMOS i karta CF
- Jak sprawdzic uC
- radyjko znalazłem
- Telewizor przestał widzieć sygnał z anteny
- LED
- System operacyjny dla 6800?
- Przyłączenie działki do sieci elektrycznej
- Działalność nierejestrowana/definicja sprzętu elektronicznego/misie i kolejki
Najnowsze wątki
- 2024-05-28 Co dalej z Izerą...
- 2024-05-28 Nowe samochody są RAKOTWÓRCZE tylko nikt tego nie chce głośno powiedzieć
- 2024-05-28 czy zabioro mu auto?
- 2024-05-27 Chińczyki mają dość czekania na tuska i te jego UROJONE audyty
- 2024-05-27 coraz trudniejsze rozmowy o OC
- 2024-05-28 Przednia lampka rowerowa Basta / AXA pod dynamo w piaście
- 2024-05-28 Boję siię capa...
- 2024-05-24 Efekt gitarowy koda kd-30 trash metal
- 2024-05-27 Re: Efekt gitarowy koda kd-30 trash metal
- 2024-05-27 Wykrywanie przerwy w długim przewodzie zakopanym w ziemi.
- 2024-05-27 PT500
- 2024-05-28 Łódź => SAP CO Consultant <=
- 2024-05-28 Białystok => Senior Developer React Native <=
- 2024-05-28 Kraków => Mid/Senior QA Engineer <=
- 2024-05-28 Wrocław => Key Account Manager <=