Article View: pl.comp.lang.delphi
Article #345744Re: Rpi/Lazarus - odczyt bajtowy
From: darekm
Date: Fri, 21 Apr 2017 11:52
Date: Fri, 21 Apr 2017 11:52
54 lines
3953 bytes
3953 bytes
W dniu czwartek, 20 kwietnia 2017 03:35:21 UTC+2 użytkownik stch...@gmail.com napisał:
> W dniu środa, 19 kwietnia 2017 11:23:33 UTC+2 użytkownik darekm napisał:
> > W dniu sobota, 15 kwietnia 2017 10:05:18 UTC+2 użytkownik stch...@gmail.com napisał:
> > > Witam,
> > > Albo się nie doczytałem czegoś w sieciowych dokumentacjach, albo się nie da tego zrobić?! Z tego co się doczytałem w dokumentacji Rpi, jest możliwość komunikacji ze Światem Zewnętrznym na poziomie jednego bitu. Odczyt wciśniętego buttona, zaświecenie LED'em i takie tam pierdulamenty...
> >
> >
> > Pewnie że się da.
> > Można to zrobić bezpośrednio odwołując się do rejestrów
> > doczytaj dokumentację BCM2835
> > w bibliotekach typu HAL są przykłady odwołań bezpośrednio do rejestrów
> >
> > linki do bibliotek tu:
> > http://wiki.freepascal.org/Lazarus_on_Raspberry_Pi
> >
> > osobiście używam http://asphyre.net/products/pxl
> >
> > --
> > Darek
>
> ============
>
> Jestem mile zaskoczony. Bo juz myślałem że sie nie da. Jak wcześniej pisałem, w temacie programowania nie zaliczam się do "Guru". Za parę linijek kodu, jak podpiąć Rpi_GPIO do n-bitowego ADC (akurat sensowne HW - podpięcie , to małe piwko) , i jak do tego się dobrać, będę b. wdzięczny. Temat jest komercyjny, więc jeżeli nie tutaj, to na priva. Tam omówimy szczegóły...
Możemy tutaj
tak jak mówiłem używam biblioteki Asphyre
zajrzyj do modułu PXL.Boards.RPi
tam jest klasa TFastGPIO
i czytanie bitu:
<code>
function TFastGPIO.GetPinValue(const Pin: Integer): TPinValue;
var
PinBCM: Integer;
begin
PinBCM := ProcessPinNumber(Pin);
if ReadMemSafe(GetOffsetPointer($34 + (Cardinal(PinBCM) div 32) * 4)) and (1 shl (PinBCM mod 32)) > 0 then
Result := TPinValue.High
else
Result := TPinValue.Low;
end;
</code>
biblioteka pracuje bezpośrednio na rejestrach systemowych (taki myk z mapowaniem pamięci )
jak widać czytany jest jeden rejestr a potem wycinany jeden bit,
więc nie ma problemu otrzymanie całego słowa.
tyle że faktycznie może być problem z szybkością,
nawet jeżeli poświęcisz jeden rdzeń na czytanie to nie wiem czy osiągniesz wiele więcej niż kilka MHz a jeszcze gdzieś musisz zapisać otrzymane dane
Inaczej musisz się zacząć bawić z DMA (przykładowo https://github.com/notro/spi-bcm2708/blob/master/spi-bcm2708.c)
--
Darek
Technical Details
Message-ID:
<6615325d-1757-4102-8205-cebca97890c3@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!c45no4543212qtb.1!news-out.google.com!t13ni1570qtc.1!nntp.google.com!t52no2714766qtb.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<6e8a3eec-fdeb-4e4b-b4a6-3b9e097d8120@googlegroups.com> <e93ddca3-58e0-4844-b397-c5a333c12780@googlegroups.com> <ec1f70e2-f9c7-4c76-bb97-58e11a2ba90c@googlegroups.com>Show Full Headers
Complete Article Headers
X-Received: by 10.129.69.7 with SMTP id s7mr6097867ywa.147.1492775526858; Fri, 21 Apr 2017 04:52:06 -0700 (PDT) X-Received: by 10.157.28.164 with SMTP id l36mr275119ota.2.1492775526815; Fri, 21 Apr 2017 04:52:06 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!c45no4543212qtb.1!news-out.google.com!t13ni1570qtc.1!nntp.google.com!t52no2714766qtb.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.delphi Date: Fri, 21 Apr 2017 04:52:06 -0700 (PDT) In-Reply-To: <ec1f70e2-f9c7-4c76-bb97-58e11a2ba90c@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=79.187.5.190; posting-account=6P-hIAoAAABxr6lAQMLKUD1hFgl3QW6K NNTP-Posting-Host: 79.187.5.190 References: <6e8a3eec-fdeb-4e4b-b4a6-3b9e097d8120@googlegroups.com> <e93ddca3-58e0-4844-b397-c5a333c12780@googlegroups.com> <ec1f70e2-f9c7-4c76-bb97-58e11a2ba90c@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <6615325d-1757-4102-8205-cebca97890c3@googlegroups.com> Subject: Re: Rpi/Lazarus - odczyt bajtowy From: darekm@emadar.com Injection-Date: Fri, 21 Apr 2017 11:52:06 +0000 Lines: 82 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit