• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 1 głosów - średnia: 1
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino Due(sam3x8e) bezpośredni zapis do rejestrów
#1
Witam wszystkich!

Chciałbym się dowiedzieć czy w środowisku Arduino jest możliwość zapisu do dowolnego rejestru wg noty katalogowej sam3x8e? Czy jest to ograniczone przez wewnętrzną bibliotekę Arduino?
Precyzując moje pytanie chciałbym uruchomić magistralę LIN na USART wg noty od strony 805 - jest tam obszerny opis.
Wiem, że istnieją gotowe biblioteki do obsługi LIN ale działają one programowo a nie sprzętowo. To trochę tak jak wykorzystywać software serial kiedy mamy do dyspozycji sprzętowy serial.
Może jest też ktoś z Warszawy lub okolic kto odpłatnie podejmie się tego wyzwania lub też podzieli się swoimi doświadczeniami?
Odpowiadając z góry na szereg pytań:
-dlaczego w środowisku arduino? Obsługa LIN jest tylko jedną z opcji dużo większego programu, będę wykorzystywać wiele innych (przetestowanych) bibliotek a nie ukrywam, że zależy mi też na czasie aby szybko ukończyć całość.
-dlaczego sam3x8e? posiada sprzętową obsługę standardu LIN 1.3 i 2.0. Przykładowo STM32 posiadają tylko standard 2.0 o ile czegoś nie przeoczyłem.

Pozdrawiam!
 
Odpowiedź
#2
(08-11-2019, 11:22)thorn3221 napisał(a): Chciałbym się dowiedzieć czy w środowisku Arduino jest możliwość zapisu do dowolnego rejestru wg noty katalogowej sam3x8e? Czy jest to ograniczone przez wewnętrzną bibliotekę Arduino?
Możesz pisać prawie co i gdzie chcesz. To prawie,dotyczy rejestrów używanych przez biblioteki, np timer. Biblioteki nie dają możliwości "przejęcia" przerwań co często jest problemem.
 
Odpowiedź
#3
No właśnie i tutaj pojawia się pytanie czy warto się w to bawić jeśli może to być droga bez wyjścia. Oczywiście przerwania są istotne choćby w sytuacji odbioru znaku czy innych zdarzeń. Wiem, odpowiedź jest prosta: trzeba spróbować jednak czas jest tutaj moim największym wrogiem. Dlatego szukam osób, które już walczyły z podobnymi problemami.
Programowanie zaczynałem lata temu od Bascoma i "starych" atmeg przeglądając noty katalogowe tysiące razy. Jednak nawet w Bascomie wpisy do rejestrów były stosunkowo proste.
Przyznaję, że w przypadku Arduino i Sam3x8e trochę się pogubiłem i nie wiem jak do tego podejść.
Przykłady są ale dotyczą głównie konfigurowania samych portów.
Nie wiem po prostu jak daleka jest droga od mojego wpisu do rejestru przez bibliotekę arduino, kompilator itd.
Mam wrażenie, że w arduino jest dostęp do rejestrów tylko tych, które są używane w różnych funkcjach - porty, timery itd.
Przykładowo do magistrali LIN są rejestry odpowiedzialne za automatyczne obliczanie sumy kontrolnej, bitów parzystości, wyboru standardu ale nie mam póki co pomysłu jak to obsłużyć.
 
Odpowiedź
#4
(08-11-2019, 13:45)thorn3221 napisał(a): No właśnie i tutaj pojawia się pytanie czy warto się w to bawić jeśli może to być droga bez wyjścia. Oczywiście przerwania są istotne choćby w sytuacji odbioru znaku czy innych zdarzeń.  Wiem, odpowiedź jest prosta: trzeba spróbować jednak czas jest tutaj moim największym wrogiem.  Dlatego szukam osób, które już walczyły z podobnymi problemami.
Rozwiązaniem problemu jest nieużywanie Arduino. To zabawka, demo, dobre do sprawdzenia czegoś na szybko, do sensownych użytkowych rozwiązań się NIE NADAJE!

Jak chcesz zrealizować jakiś niezawodny projekt, ZAPOMNIJ O ARDUINO! Nie masz debugera i będzie realizował projekt kilka razy dłużej niz z debugerem. Biblioteki i filozofia Arduino będzie Cie ograniczać. W przypadku AVR architektura (droga) będzie Cię jeszcze bardziej ograniczać.

Odpuść sobie Arduino, zwłaszcza na AVR do komercyjnych zastosowań w nowych projektach. Będzie drogo, czas realizacji długi, możliwości rozwoju projektu bardzo ale to bardzo ograniczone. Nawet zwykłe miganie LEDem (WS2812x) jest ograniczone w przypadku Arduino. Jak nie wierzysz sprawdź i zamigaj tysiącem czy nawet setką LED w tym czasie spróbuj odbierać dane po UART, nawet z niedużą prędkością 115200 o 921600 nie wspomnę. Są problemy?
 
Odpowiedź
#5
Oczywiście, w pełni się z Tobą zgadzam jeśli chodzi o AVR. Ciężko dziś robić złożone projekty na architekturze 8 bitowej sprzed 20 lat w szczególności na Arduino.
Może jednak moje informacje przydadzą się dla innych użytkowników. Dlaczego wybrałem Arduino?
Dlatego, że miałem do zrealizowania m.in. komunikację ze sterownikiem PLC Siemens S7.
Istnieje projekt Settimino. Oczywiście na AVR kiepsko to działa ale przy Arduino DUE czy też STM32 efekty są świetne. Napisałem testowy program do odczytu sporej ilości DB bloków + licznik błędów transmisji. Zostawiłem tak pracującą płytkę na kilka dni(moduł Arduino Due+ ethetnet WIZZ + 25metrów kabla do PLC). Byłem zaskoczony bo po kilku dniach licznik błędów transmisji wynosił "0"!!! Dodam, że odczyt był średnio co 10ms. Ktoś po prostu zrobił kawał świetnej roboty.
Oczywiście nie jestem zwolennikiem bibliotek arduino bo są pisane "programowo". Można wiele rzeczy zrobić o wiele sprawniej bezpośrednimi wpisami do rejestrów stąd też mój wątek na forum. Jednak wtedy dany projekt nie będzie tak łatwy do przeniesienia na inne procesory i tutaj się łamie zamysł arduino.
Nie chce tutaj wchodzić w dyskusję czy warto coś robić na arduino. Działam w przemyśle, automatyce i wiele osób będzie zaskoczonych, że w wielu małych i średnich firmach na liniach produkcyjnych działają płytki arduino! W ramach oszczędności zamiast kupować drogie moduły rozszerzeniowe właściciele firm wybierają tanie rozwiązania + posadzą studenta, który napisze program i wszyscy są zadowoleni. Takie polskie realia.
Też wybrałem arduino ze względu na dobrą bibliotekę komunikacji z PLC. Złożony projekt a mam tylko 3 miesiące aby go zrealizować, uruchomić, zrobić poprawki a to wszystko po godzinach pracy.
Dla zainteresowanych zwykłe AVRy też potrafią wiele, pracują w niejednym sprzęcie pomiarowym(przesyłowym) znanych producentów czy też projekt, który realizuje...Atmega 128 sterowała falownikiem(modbus), dokonywała pomiarów, robiła obliczenia, UART na 115200 + magistrala LIN. Fakt, że program nie był pisany w arduino ale da się z nich trochę wycisnąć. Jednak właśnie koszty - tutaj kolega ma rację. w cenie np. ATmegi2560 można kupić w jej porównaniu potężnego STM32F4.
 
Odpowiedź
#6
@thorn3221, zgadzam się z Tobą w "całej rozciągłości". Niestety a może w tym przypadku "stety" ważna jest cena!
Jak już pisałem, do zabawy, Arduino ok, dla przemysłu definitywnie NIE!
To, że używają się "złącza" Arduino, nie znaczy, że to coś z Arduino ma wiele wspólnego "poza złączem".
Wątek autora jest w stylu "komercja za niska kasę". Nie da się! To iluzja. Ci co próbowali to się przejechali.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości