NoweMillennium napisał: Który z AVRmega ma dwa I2C?
A programowo kolega nie umie zrobić? Działa i to dobrze.
NoweMillennium napisał: Ardymenty sie kończą czy kolega chce zabłysnac wiedza na temat I2C?
"Ardymenty" się nie kończą ale myślałem, że kolega trochę o tym poczyta i coś z tego, co wyczyta, rzuci mu się w oczy w odniesieniu do kontekstu wątku.Widocznie się przeliczyłem
NoweMillennium napisał: Zaczyna się komplikować a wydawało by się, ze to jest proste
.
Jeśli ustawienie flagi, odczyt jej stanu w pętli głównej, reakcja na stan i reset flagi są dla kolegi skomplikowane to nie wiem ... rozkładam ręce.
NoweMillennium napisał: Transmisję rozpoczac od poczatku? A co jak przerwania od expandera przychodza tak często, ze całej transmisji nie jestem w stanie zrealizować?
Przeczytaj jeszcze raz, powoli, temat wątku. Przeczytaj jeszcze raz, powoli, w jakim wątku i dlaczego zaproponowałem użycie ESP8266 do realizacji kompletnej stacji pogodowej, zamiast kombinacji ESP + Arduino. Przeczytałeś? Zrozumiałeś? To teraz powiedz mi, dlaczego użytkownik miałby siedzieć przed stacją i non stop naciskać przycisk co, powiedzmy 1ms ??
Wątek jest o stacji pogodowej, a Ty wyskakujesz z maszynami urywającymi ręce, koniecznością pełnej obsługi przycisku w przerwaniu w czasie 3ms itd. Jeśli pominąć temat wątku, to ktoś, kto MUSI odczytywać cokolwiek w przerwaniach ciągłych, jednocześnie wysyłając ważne dane ( gdziekolwiek ) i użył do tego wszystkiego expanderów I2C to po prostu spier**ł projekt. Choć i tu spokojnie można sprawę załatwić ale w aplikacjach "krytycznych" tego się nie robi bo to druciarstwo
.
NoweMillennium napisał: Pozwole sobie tego niekomentowac
Co będziesz komentować, skoro nie masz racji? Wyjaśnię - co takiego w stacji pogodowej ( czy każdej innej aplikacji z UI ) wymaga pełnej obsługi przycisku w przerwaniu? Co robisz przyciskami? Inkrementujesz zmienną, zmieniasz "menu", zatwierdzasz itp. Ok, zrobisz to w przerwaniu i.. co dalej? Kiedy to zostanie wysłane na LCD? Czy użytkownik musi zobaczyć zmianę w ciągu "Twoich" 3ms?? Zauważy różnicę, jeśli to będzie 20ms zamiast 3??? Na LCD ??? W obsłudze przerwania ustawiasz flagę " przycisk_wcisniety", a resztą zajmuje się pętla główna. Jeśli wpieprzyłeś, jak mówiłeś, pierdyliard delay() w pętlę główną to spieprzyłeś program. Wytłumaczyć jeszcze jaśniej czy chcesz znów wyciągać coś z worka : multiplexing czy eliminację drgań styków ?( a propos - pewnie elimininację drgań styków kolega też by chciał w przerwaniu robić ? ( da się.. ale. . po co ? )
zster napisał: To jest sedno pewnego problemu - ludzie wrzucają w IDE jakieś biblioteki, nie zawsze dobrze napisane i są rozczarowani "szybkością" czy niezawodnością. A później czyta się posty, gdzie ktoś poleca jakiegoś "potężnego" ARMa do zrobienia "przysłowiowego kalkulatora" z 4 działaniami...
NoweMillennium napisał: Nie uzywam Arduino. To sie do niczego powaznego nie nadaje. Przenosiłem biblioteki LCD z Arduino na ARM i napisane są kiepsko. Wyświetlanie napisów jest żałośnie wolne. Akurat w tym konkretnym przypadku,problem nie leży w szybkości SPI tylko beznadziejnej implementacji rysowania znaku. Biblioteki do TM1637 porażka.
Nawet nie przypuszczałem, że pisałem o Tobie.. a jednak

Zdefiniuj "poważne"? I dlaczego musisz uzywać bibliotek ze środowiska Arduino? Napisz własne. Pisz bez bibliotek. Poprawiaj istniejące. Pisz w asemblerze. Płytka Arduino = AVR. A Ty piszesz ( w potach wcześniej ) że na Arduino coś nie działa a na AVR już tak.
To, co kolega tu wypisuje jako OGROMNY problem ( użycie expanderow do przycisków i LCD, z przerwaniami ) doskonale i bez problemów realizuje nawet dziurawa biblioteka Wire. Bez zająknięcia. Napisałem - nie wierzysz, sprawdź sam. Albo przyjedź do mnie, to Ci to na przykładach pokażę. Na żywo. Bez teoretyzowania.
Żeby było jasne - nie trzymam sie kurczowo AVR. To już wiekowa architektura i ma sporo ograniczeń. Coś, nad czym na AVR trzeba się nie raz nagłowić, by zrobić, już np. na XMEGA robi się prosto. Ale twierdzenie, że AVR do niczego się nie nadaje, bo używa się dziurawych bibliotek czy nie umie się czegoś zrobić, to zwykła głupota.
NoweMillennium napisał: Wystarczy ekspander włączyc na osobnej magistrali I2C.
No tak, można też wstawić kolejny uC .. i kolejny, jeśli mamy więcej urządzeń po I2C....
ex-or napisał: I co, wtedy byś napisał, że I2C na AVR jest be bo w przerwaniu transmisja nie dochodzi do skutku albo co gorsze program się wiesza?
Widocznie NoweMillenium średnio radzi sobie z rozwiązywaniem prostych problemów i czuje imperatyw tworzenia sobie problemów tam, gdzie ich nie ma.
I PONOWNIE, dla kol. NoweMillenium, temat wątku, gdyby jednak znów przeoczył : "Stacja pogodowa oparta na Arduino + WiFi".
Dodano po 26 [minuty]: NoweMillennium napisał: O przerwaniach nadawczych dla TWI, USART, SPI to autorzy bibliotek dla Arduino nie słyszeli.
To chyba kolega o tym nie słyszał. "Standardowe", dołączane do Arduino IDE biblioteki : HardwareSerial, Wire, SPI używają przerwań przy "nadawaniu" jak i "odbieraniu". Coś jeszcze?