-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!.POSTED!not-for-mail
From: Sebastian Biały <h...@p...onet.pl>
Newsgroups: pl.misc.elektronika
Subject: Re: PICowanie
Date: Thu, 10 Oct 2013 20:33:20 +0200
Organization: ATMAN - ATM S.A.
Lines: 41
Message-ID: <l36rtk$lsf$1@node2.news.atman.pl>
References: <e...@g...com>
<5254fb82$0$21838$65785112@news.neostrada.pl>
<f...@g...com>
<l34br2$8d0$1@node1.news.atman.pl>
<a...@n...neostrada.pl>
<l35dk5$950$1@node1.news.atman.pl> <l35rdb$bid$1@mx1.internetia.pl>
<l36gv3$epe$1@node1.news.atman.pl> <l36qhe$fnn$1@mx1.internetia.pl>
NNTP-Posting-Host: 193.0.194.227
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: node2.news.atman.pl 1381430004 22415 193.0.194.227 (10 Oct 2013 18:33:24
GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Thu, 10 Oct 2013 18:33:24 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:17.0) Gecko/20130801 Thunderbird/17.0.8
In-Reply-To: <l36qhe$fnn$1@mx1.internetia.pl>
Xref: news-archive.icm.edu.pl pl.misc.elektronika:653046
[ ukryj 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
- Dziwne zachowanie magistrali adresowej w 8085
- Współczesne mierniki zniekształceń nieliniowych THD audio, produkują jakieś?
- Jaki silikon lub może klej?
- Smar do video
- Litowe baterie AA Li/FeS2 a alkaliczne
- "ogrodowa linia napowietrzna"
- jaki zasilacz laboratoryjny
- jaki zasilacz laboratoryjny
- Puszka w ziemię
- T-1000 was here
- Ściąganie hasła frezem
- Koszyk okrągły, walec 3x AA, na duże paluszki R6
- Brak bolca ochronnego ładowarki oznacza pożar
- AMS spalony szybkim zasilaczem USB
- stalowe bezpieczniki
Najnowsze wątki
- 2025-02-12 Warszawa => Expert Recruiter 360 <=
- 2025-02-12 Ostrów Wielkopolski => Area Sales Manager OZE <=
- 2025-02-12 Bieruń => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-02-12 Dęblin => Node.js / Fullstack Developer <=
- 2025-02-12 Kraków => PHP Full Stack Developer <=
- 2025-02-12 Karta dźwiękowa stereo
- 2025-02-12 Dęblin => JavaScript / Node / Fullstack Developer <=
- 2025-02-12 Gdańsk => Specjalista ds. Sprzedaży <=
- 2025-02-12 Łódź => NodeJS Developer <=
- 2025-02-12 Błonie => Sales Specialist <=
- 2025-02-12 Dziwne zachowanie magistrali adresowej w 8085
- 2025-02-11 Mini pecet
- 2025-02-10 Spalił się spaliniak
- 2025-02-10 zarowka wifi - z sensowna apka lub lepiej albo lokalnie lub przez web. I zeby harmonogram miala
- 2025-02-10 Chrzanów => Programista NodeJS <=