RTC bez zasilania awaryjnego

Feb 23, 2014 45 Replies

No i wystraszyliśmy skutecznie kolegę:-) W przypadku temperatury dokładny czas nie będzie miał znaczenia, ale trzeba zaznaczyć, że w ten sposób zarejestrowany czas będzie czasem zapisu do bazy, a nie czasem pomiaru. Jednak w samolocie już mogłoby to mieć znaczenie :-) S.

W dniu 2014-02-24 10:14, Elektrolot pisze:

Co więcej! Poszukaj w sklepach stm32f0discovery - za 40-50zł brutto masz płytkę z mikrokontrolerem i jtagiem, który możesz wykorzystać _także_ do programowania i _debugowania_ _swoich_ płytek. Najtańszy 'odpowiednik' ATmega328 to chyba STM32F030K6T6 za ~5zł brutto. Dla niektórych wadą jest brak wersji DIP. Masz TQFP 0,8mm lub TSSOP

0,65mm, możesz użyć adaptera. Dla innych wadą jest brak firmowego środowiska, ale od tego jest GCC i tutorial FreddieChopina (polski), czy też darmowe CooCox. Może brak EEPROMu też jest wadą, chociaż ST daje kody do symulowania EEPROM we FLASHu, a STM32L1 ma EEPROM. Za to zapomnisz o bardzo niewygodnym odwoływaniem się do stałych zapisanych we flash. Wystarczy const int table[1000]={...}, a w kodzie nie rozróżniasz czy dane są w RAM czy Flash. Jeden sprintf czy cokolwiek innego. To naprawdę 'miodzik' po przesiadce z AVR.

PS. Nie pracuję dla STM, chociaż z mojej wypowiedzi sam bym taki wniosek wysunął ;)

W dniu 2014-02-24 08:46, Sylwester Łazar pisze:

A, i ominąłeś moje pytanko:

Z ciekawości - jaki model, gdzie można kupić?

W dniu 2014-02-24 12:13, Sylwester Łazar pisze:

Tyle tylko, że w tym przypadku nie powinno to mieć żadnego znaczenia. Na dobrą sprawę nic nie stoi na przeszkodzie, żeby zaimplementować RTC na jednym z timerów ATmegi i co jakiś czas robić synchronizację z NTP. Wtedy będę mógł mimo wszystko oznaczyć czas pomiaru, przesyłanego w pakiecie UDP. Tylko tylko, że wartość ta w większości przypadków będzie się pokrywała z czasem odebrania informacji przez serwer. Mówię oczywiście o sytuacji, kiedy ograniczę się do dokładności do jednej sekundy. W stacji pogodowej większej nie będę przecież potrzebował.

Powiedzenia w próbie ogarnięcia tego programując pic32 w asm....

Na codzień programuję pic32 i pic18, przywykłem do obszerności ich dokumentacji.

Nie tylko jedna, pozostając w temacie rtc to np. brak pinu do batt rtc.

Standard w pic.

W dniu 2014-02-24 12:13, Sylwester Łazar pisze:

Chyba dla Macierewicza. W Tu154 odczyty danych były co 0,5 s a kompresja i zapis w pamięci ATM-QAR trwały 2 sekundy.

Też buduje serwerek do stacji m.in. zbierającej dane z różnych czujników i prezentowania ich po http. Zastanawiam się, po co Ci rtc, jeśli masz stos tcp to powinieneś mieć ntp. U mnie stos korzysta z ntp do synchronizacji czasu, nie potrzebny w ogóle rtc... z tego co pamiętam u mnie uklad co 30min koryguje timer używany do timestampu i odczuty czasu z ntp. Problem jest tylko w momencie startu gdy układ z jakiś powodów nie ma dostępu do sieci.

Aaa. Faktycznie. Przepraszam. Ja zdaje się użyłem tego: KWH043ST12-F03 V.2 Natomiast kupiłem to w opakowaniu, jako monitor cofania do samochodu. Coś ok. 130 zł/szt. Przy okazji podłączyłem do Video i sprawdziłem, czy działa :-) S.

Dzięki. S.

#SPRAWDZENIE KLAWIATURY KEYCHECK: LW KBREADA2,0x6190(BF88S6) #odczyt klawiszy i maskowanie ORI KBREADA2,KBREADA2,KBMASK #jeśli nic nie wciśnięto, to #KBREADA2=0x0000FFff ORI TEMPS1,zero,0xFFff BNE KBREADA2,TEMPS1,PRESSED #Czy klawisz wciśnięty ? ANDI TEMPS1,FLAGST6,bKPRESS BEQZ TEMPS1,KBEND #Czy był wciśnięty wcześniej? NOP #1-TAK 0-NIE OTHKEY: ANDI FLAGST6,FLAGST6,(1<<16-1)-bKPRESS-bKBAUTO #zaznacz: klawisz zwolniony J KBEND PRESSED: BEQZ TEMPS1,FIRSTK #Czy był wciśnięty wcześniej? NOP BNE KBFIRSTA3,KBREADA2,OTHKEY #Czy ten sam klawisz co za pierwszym razem ? ADDIU KBCOUNTT7,KBCOUNTT7,-1 BNEZ KBCOUNTT7,KBEND #Czy już odczekano ustalony czas? ANDI TEMPS1,FLAGST6,bKBDEB BEQZ TEMPS1,KEYDOWN #Czy już zatwierdzono naciśnięcie klawisza? XORI TEMPS1,KBREADA2,#kTWO ORI FLAGST6,FLAGST6,bKBAUTO #od teraz samopowtarzanie klawiszy ORI KBCOUNTT7,zero,KBNEXT #skróć czas oczekiwania SETCODE: ADDIU KBCODES2,KBREADA2,0 #zapamiętaj odczytany klawisz J KBEND KEYDOWN: BNEZ TEMPS1,WREP #Czy naciśnięto równocześnie UP i DOWN? ANDI TEMPS1,FLAGST6,bKBUD BNEZ TEMPS1,WREP #Czy zainicjowano już odliczanie czasu dla UP+DOWN? ORI KBCOUNTT7,zero,KBUD ORI FLAGST6,FLAGST6,bKBUD #czekamy na podtrzymanie UP+DOWN J KBEND WREP: ORI KBCOUNTT7,zero,KBAUTO #czekamy na samopowtarzanie ORI FLAGST6,FLAGST6,bKBDEB J SETCODE FIRSTK: ORI FLAGST6,FLAGST6,bKPRESS #naciśnięto klawisz o raz pierwszy ANDI FLAGST6,FLAGST6,((1<<16-1)-bKBDEB-bKBUD) #nie wiadomo czy 2 na raz ORI KBCOUNTT7,zero,KBPRESS #ustaw czas potrzebny do odczekania ADDIU KBFIRSTA3,KBREADA2,0 #nadaj wartość pierwszemu odczytowi klawisza KBEND: J GENMAIN NOP

Przeprasza, ale dałem najprostrzy fragment, aby było zrozumiane. Było o Timerach, więc może fragment o Timerach:

# OpenOC2( OC_ON | OC_TIMER_MODE32 | OC_TIMER2_SRC | OC_CONTINUE_PULSE | OC_LOW_HIGH , 0x550, 0x2a8 ); sw v0,0x3220(v1) #OC2RS Output Compare Register-Secondary addiu v0,zero,5 #długość zera sw v0,0x3210(v1) #OC2R Output Compare Register ori v0,zero,0x800D #8 właczenie bit 15 ON: Output Compare Peripheral On bit(1) #0 tryb 32 bitowy bit 5 OC32: =0 =OCxR<15:0> and OCxRS<15:0> are used for comparisons to the 16-bit timer source #8+ bit 3 OCTSEL: Output Compare Timer Select bit:1 = Timer3 is the clock source for this Output Compare module #5=D generacja bit 2-0 OCM<2:0>: Output Compare Mode Select bitsInitialize OCx pin low; generate continuous output pulses on OCx pin sw v0,0x3200(v1) #OC2CON #---WŁĄCZENIE TMR2 OKRES 1100 [ns] ----------------------------------- lui BF88S6,0xbf80 #starsza część adresu rejestrów ori v0,zero,0 #prescaler 1:1 #------PIXEL1---TMR1------------------------------------------------------ sw v0,0x600(BF88S6) #T1CON sw zero,0x610(BF88S6)#TMR1 #------PIXEL2---TMR2------------------------------------------------------ sw v0,0x800(BF88S6) #T2CON sw zero,0x810(BF88S6)#TMR2 #------PIXEL3---TMR5------------------------------------------------------ sw v0,0xE00(BF88S6) #T5CON sw zero,0xE10(BF88S6)#TMR5 #------PIXEL4---TMR4------------------------------------------------------ sw v0,0xC00(BF88S6) #T4CON sw zero,0xC10(BF88S6)#TMR4 #------ ALL TIMERS TMR1;2;5;4 ------------------------------------------- addiu v0,zero,88 #przeładowanie co 1100 nS@80 MHz sw v0,0x620(BF88S6) #PR2 sw v0,0x820(BF88S6) #PR2 sw v0,0xE20(BF88S6) #PR2 sw v0,0xC20(BF88S6) #PR2

#załączenie TIMERÓW nastąpi w POP od OC2 CLK (okres CLK T=135,5[ns]) #w następujacy sposób: ori BF80S3,zero,0x8000 #MASKA BITU ON # sw BF80S3,0x608(BF88S6) #T1CON,ON=1 (SETT1CON) # sw BF80S3,0x808(BF88S6) #T2CON,ON=1 (SETT2CON) # sw BF80S3,0xE08(BF88S6) #T5CON,ON=1 (SETT5CON) # sw BF80S3,0xC08(BF88S6) #T4CON,ON=1 (SETT4CON)

#załączenie przerwań od OC2. # jal INTEnableSystemMultiVectoredInt #ustawienie priorytetu przerwania OC2

Oczywiście nie odbieraj tego jako osobistą wycieczkę ale przewiń poniższy film do 12:50 :-)

formatting link

Zaskakujesz mnie. Podsumujmy fakty:

1) wyraziłeś swoje przekonanie o niemożliwości programowania w asm na mikrokontrolery 32 bitowe 2) po podaniu zwięzłego przykładu w asm obsługi klawiatury z eliminacją drgań zestyków i wykrywającego kombinacje klawiszy, z samopowtarzaniem, opóźnieniem detekcji po naciśnięciu klawisza, innym czasem samopowtarzania i kilka innych drobnostek, także wyśmiałeś. 3) po podaniu innego fragmentu, gdzie jest obsługa timerów (czyli dotyczy to tego wątku), podajesz link do filmiku, który nic nie wnosi do dyskusji. 4) obrażasz też innych programistów ASM, mówiąc, abym nie brał tego do siebie.

Facet na filmie wymachuje przez 19 minut płytka Arduino i dobrze się nadającym do tego projektu mikrokontrolerem, w obudowie DIP40. Przez 19 minut nie napisał ani linijki kodu w czymkolwiek, za to z szeroko otwartymi oczami, drze się i przynajmniej kilkadziesiąt razy powtarza takie słowa jak idiot, stupid itp.

Często jest tak, że ktoś nie umiejąc czegoś zrobić i nie wierząc, że się da, chwyta za coś najprostszego, jak płytkę z chipem X, wykazuje się znajomością wiedzy informatycznej pozwalającą ściągnąć sobie bibliotekę do obsługi tego co ma robić. Po tym jak już uruchomi czyjś kod w C, usiłuje powiesić sobie medal, że jest geniuszem. Następnie zaczyna wyzywać wszystkich innych od idiotów, gdyż ich droga jest co prawda naznaczona, bardziej wytężoną pracą i zazwyczaj bardziej zbliżona do założeń, nie podoba mu się. Czyni to w dodatku, nie sprawdzając tej drogi - z góry uznając ją za niemożliwą, a przynajmniej durną.

Otóż drogi kolego, fragmenty programu, które Ci pokazałem, obsługują urządzenie, wyświetlając w rozdzielczości 480x272x24bity, czyli True Color RGB, zdjęcia, pozostawiając jakieś 60% czasu procesora na inne, bardziej skomplikowane czynności. Niestety po pobieżnym przyglądnięciu się ofercie gotowych bibliotek C, doszedłem do wniosku, że niestety nic podobnego nie może mi zaoferować (w 2013 r.), żadna z bibliotek C. Ta, która by mogła, to kazała mi uśrednić 4 pixele, dobudować driver, a ważne rzeczy mogłem już tylko zrobić na dołączonej płytce Andurino.

Więc taka uwaga na przyszłość. Jeżeli Ci ktoś pokazuje, że można coś zrobić, to wypadałoby okazać trochę szacunku. Zwłaszcza, jak pokazujesz, że nie robiłeś w życiu nic takiego. Bo nie posądzałbym Cię przecież, że nie potrafisz. Isn't it?

Pozdrawiam, Sylwester

Nigdzie nie wyraziłem przekonania o niemożliwości programowania w asm ale o tym, że jest to nieuzasadnione czasowo i ekonomicznie. Od pół roku, od czasu do czasu spieramy się w tym temacie i moje zdanie znasz. Żeby nie być gołosłownym zaprezentuj swój projekt w asm wykorzystujący usb, ethrnet, tcp i vfat i napisz ile manday'i go tworzyłeś. Nie chcę oczywiście dyskredytować Twojej pracy ale myślę, że skoro tak dobrze sobie radzisz w asm to chyba troszkę marnujesz swoje zdolności, bo gdybyś je skierował w kierunku języka "wyższego poziomu" mógłbyś tworzyć jeszcze fajne rzeczy.

Wyluzuj, miej trochę dystans. Jeśli już możesz się czuć obrażony to nie przeze mnie a przez Dave, zresztą całkowicie rozumiem jego frustrację i uważam że jest uzasadniona.

Z powyższego można uznać, że użyłeś nieodpowiednie narzędzie.do realizacji zadania.

W dniu 2014-02-24 14:13, Sylwester Łazar pisze:

Chodzi Ci o ten Twój projekt:

formatting link

11.10.2013 "Chodziło o obsługę wyświetlacza LCD 24bpp, szyną równoległą 24-bitową. próbowałem w C i się nie dało... Po skompilowaniu były bzdury. Mogłem osiągąć transfer na poziomie 0,5MBs przy 24 bitach. Niestety zadawalało mnie min. 10MBs i tak też zrobiłem. No ale to już w asm." ?

Nie wiem, co ciekawego pod tym względem ma Microchip, ale STMicro jak najbardziej! STM32F429. Zobacz, co potrafi blok Chrom-ART (DMA2D). W skrócie - obsługuje SDRAM, robi konwersję formatu, miesza obrazy, obsługuje 8-bit przezroczystość (ARGB), warstwy, usprawnia obsługę fontów (nie są postrzępione), wypełnianie fragmentów, przesuwanie fragmentów i do tego wypasiona biblioteka Seggera za friko. Krótki opis:

formatting link
to względna nowość (jak na 2013 rok) i może w następnym projekcie wykorzystasz. Zamiast zużywać CPU do 'głupiego' machania pinami mógłby w tym czasie zaoszczędzić trochę prądu.

Poczytaj wątek:

formatting link
ć i nie zbaczaj z tematu :)

Myślę, że nie wykorzysta i będzie to samemu w asm implementował, przypomina to podatność na syndrom "not invented here" ;)

formatting link

Skąd wiesz, skoro tego nie robisz? Aby móc coś porównać musisz to zrobić. Inaczej jesteś gdybaczem.

O to musisz poprosić. Może inaczej. Pokaż w końcu swój projekt, taki o jakim piszesz, bo na razie tylko puszczasz linki do obcych projektów i się nimi zachwycasz.

Windows 9? Są ludzie, którzy się w pewnych tematach specjalizują. Ty potrafisz znaleźć, skompilować, coś dodać i sprzedać. Nie każdy lubi być handlowcem. Są też inne drogi.

To jest właśnie Twoja retoryka. Typowe dla takich ludzi , jest zaczynanie zdania od pozornie grzecznej formuły, po to tylko, żeby w dakszej części obrazić ze zdwojoną siłą. Czyli tak. Najpierw obrażasz, podajesz link do filmu, gdzie inny facet, którego, jak piszesz rozumiesz, używa ubogiego słownictwa i prezentuje swój poziom intelektualny na poziomie przedszkolnej grupy zajączków. Potem zwalasz winę na tego samego i umywasz ręcę mówiąc: "To nie ja, to Dave!" Myślę, że wielu tu obecnych widzi Twój charakter. Przejawia się w każdym niemal zdaniu. Wydaje mi się, że siądziesz sobie za 20 lat i poczytasz, jak to obrażałeś ludzi i... zrozumiesz lub nie. Najgorsze dla Ciebie jest to, że będą to oglądać Twoje dzieci i wnuki. S.

Tylko idiota. Urządzenie zostało zaprojektowane, wykonane i działa. Dodatkowo ma margines mocy CPU 60%. S.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required