Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 9 cze 2025, o 04:52


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
    Autor Wiadomość
    PostNapisane: 28 kwi 2013, o 20:44 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 sty 2013
    Posty: 328
    Lokalizacja: Rzgów k. Łodzi
    Pomógł: 11

    Witam.

    Dzisiaj mam do zaprezentowania dataloger. Jest to taki mój twór który zapisuje datę, czas i temperaturę na karcie SD w formacie zjadliwym dla Excela, czyli :
    28.04.13;21:09; 09,3; 21,4;
    No i tak właśnie zapisuje to ATMega na karcie SD. Dodam jeszcze że biblioteki do zapisu na karcie SD to ociężałe FatFS. Sam bałem się do tego podejść, przez to że jest taki opasły, ma tyyyle plików i kod jest taki długi. Jednak się przełamałem i ogarnąłem te biblioteki ;) Nie jest to takie trudne jak mogłoby się wydawać. Po ogarnięciu zapisu postanowiłem zrobić coś innego, bardziej trudnego. I przyszedł mi na myśl dataloger. Kod zajmuje 24KB. Po otwarciu w Excelu i zrobieniu wykresu wygląda to tak :


    Myślę że starczy już tego rozwodzenia się nad pomysłem i trudnością FatFSa. Czas przejść do meritum, czyli kodu.
    Plik main.c wygląda tak :
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Wiem że jest nawalone bardzo dużo komentarzy, ale starałem się żeby kod był bardziej zrozumiały dla zielonych i żeby uświadomili sobie że to nie jest takie trudne. Oczywiście Mirkowe biblioteki należy dokleić sobie do projektu, jednak ja zrobiłem gdzieniegdzie kilka zmian, o których zaraz napiszę.

    W pliku lcd44780.c zmieniłem to :
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    na to:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    ponieważ kompilator Tollchaina wyrzucał warninga.

    Do pliku twi.h dokleiłem również deklaracje mojej struktury czasu i kilku funkcji ;)
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    No i zmiany w pliku twi.c
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    I to chyba wszystko, jak macie jakieś uwagi to piszcie ;)

    Zapomniałem dodać, drzewko projektu wygląda tak :




    PROSZĘ POPRAWIĆ OBRAZKI W POŚCIE ---
    ZASADY UMIESZCZANIA OBRAZKÓW --- topic44.html ...:: SunRiver ::...

    _________________
    sig off ;(



    Ostatnio edytowano 8 maja 2013, o 21:04 przez PawelGaj, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 kwi 2013, o 21:10 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27407
    Lokalizacja: Szczecin
    Pomógł: 1043

    No to ja też gratuluję uporu i przejścia hmm opanowania FatFS ... masz rację - jak się już człowiek za niego zabierze to okazuje się że to całkiem przyjazne zwierzątko ;)

    odnośnie zmian w bibliotece do LCD pod atmel toolchain to warto a nawet trzeba zrobić dwie i tam mała literówka ci się zdarzyła bo specyfikator const powinien być przed typem ale ja chciałem zwrócić uwagę żebyś na przyszłość w gotowym kodzie nie używał wyświetlania stałych tekstów tak:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    tylko tak

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    to bardzo ważne bo tracisz nie tylko FLASH na ten tekst ale i RAM !!! rozumiesz ? dużo może ci go pożreć kod w którym dużo masz takich wyświetleń bez tego _P, a wtedy nagłówki dwóch funkcji trzeba przerobić o tak:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    oraz:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Jeśli zaś chodzi o sam kod - to jak pisał Anty wyżej, plus za komentarze, ale w kolejnych wersjach staraj się już dzielić go na więcej plików bo tak - analiza tego to hmmmm ... sam się przekonasz jak wrócisz do niego np za rok ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 kwi 2013, o 21:26 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 sty 2013
    Posty: 328
    Lokalizacja: Rzgów k. Łodzi
    Pomógł: 11

    Wiem, wiem o tej pamięci Flash, już nawet to zrobiłem ale był warning i w sumie jakoś to usunąłem ;) Jutro postaram się również napisać soft w C# ładnie interpretujący ten plik z datalogera, rysowanie wykresów w wybranym przedziale czasowym itd. :)

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 lis 2014, o 18:27 
    Offline
    Użytkownik

    Dołączył(a): 29 mar 2012
    Posty: 59
    Lokalizacja: Lubliniec
    Pomógł: 3

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Możecie mi wytłumaczyć ponieważ nie łapię jednego, skoro podczas inicjalizacji void FatFS_IoInit () ustawiamy pin CHIP SELECT ( PORTB |= (1<<CS) ) na jeden, a następnie nigdzie go nie zerujemy, to jak działa obsługa karty, skoro urządzenie w spi aktywuję się podając stan niski na CS?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 lis 2014, o 18:37 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27407
    Lokalizacja: Szczecin
    Pomógł: 1043

    lauba1 napisał(a):
    skoro urządzenie w spi aktywuję się podając stan niski na CS?

    A kolega myśli że co ? podczas inicjalizacji raz na zawsze należy ustawić ZERO na CS ? :( ... a co ? jeśli na SPI miałyby pracować jeszcze inne moduły ? toż byłaby istna JATKA ;)

    linią CS operuje się TYLKO i WYŁĄCZNIE podczas funkcji dostępu do modułu SPI, czyli wtedy gdy dokonujemy zapisu lub odczytu. A przy inicjalizacji właśnie na wszelki wypadek ustawia się wszystkie linie CS w stan wysoki żeby nie było konfliktu w razie czego z innymi modułami.

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 lis 2014, o 18:39 
    Offline
    Użytkownik

    Dołączył(a): 29 mar 2012
    Posty: 59
    Lokalizacja: Lubliniec
    Pomógł: 3

    Dobra sam sobie odpowiedziałem już;) jakbyś ktoś kiedyś szukał to CS jest sterowane w pliku mmc.c.

    ------------------------ [ Dodano po: 3 minutach ]

    Dziękuje panie Mirku za odp. Za szybko chce ogarnąć obsługę kart SD i później człowiek nie pomyśli, a napiszę. Ale i tak pana odp się przydała bo raz na zawsze wyjaśniła mi się funkcja CS, dzięki!;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 mar 2015, o 14:13 
    Offline
    Nowy

    Dołączył(a): 28 lut 2015
    Posty: 1
    Pomógł: 0

    Witam, chciałbym pogratulować autorowi świetnego programu, dodatkowo mam pytanie :
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    niebardzo mogę się połapać w tym, mój program błędnie zapisuje stringi różnej długości, czy sposób wywołania funkcji jak wyżej, działa tylko na stringach o jednej długości?
    pozdrawiam



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 wrz 2015, o 14:13 
    Offline
    Nowy
    Avatar użytkownika

    Dołączył(a): 18 lip 2012
    Posty: 18
    Lokalizacja: Mazowieckie
    Pomógł: 0

    Witam,
    Na początku chciałem podziękować autorowi za świetny projekt, super opisany, działa pięknie :)

    Uruchomiłem FAT FS na zestawie ATB + atmega32 + 11,059 MHz+ karta 2 GB klasy 2 - działa świetnie, ale z czasem zaczęło brakować pamięci Flash. Przesiadłem sie na Atmege644PU, poprawiłem rejestry dla Timera2 i obsługi przerwania z RTC.

    Program wgrałem, RTC - działa, przerwanie z INT - również. Krata SD sie inicjalizacje, montuje, ale nie tworzy nowego pliku i nic nie zapisuje. Obsługa błędów zwraca "FR_DISK_ERR, (1) A hard error occured in the low level disk I/O layer"
    Dioda LED przy SD miga 3 razy na sekundę (zasilanie SD zwarte niebieską zworką do GND).

    Porównałem rejestry SPI ATmegi644 z ATmegi32 - są identyczne. Zmieniłem Timer2 na Timer0 - bez rezultatu. Wyłączyłem JTAG, i CKDIV/8 we FuseBit'ach. Połączenia na zestawie ATB są prawidłowe, ponieważ zmieniając Atmege 644 na Atmege 32 program działa poprawnie. Wgrywając ten sam program z ATmegi644 na 32 (przy zmienię rejestrów Timera2 i obsługi przerwania) również jest OK.

    Zastanawia mnie tryb USART in SPI mode z danych katalogowych, oraz dzielenie wyprowadzeń kontrolera SPI z Timerem0 i przerwaniami zewnętrznymi (np. dla wyprowadzenia PB4 jest PCINT12 / OCB0/ SS). Niestety moja wiedza jeszcze nie ogarnia tak rozbudowanego kontrolera.

    Czy możecie coś podpowiedzieć ?

    Pozdrawiam
    ______________________________________________________________________________

    Problem rozwiązany, informacja dla potomnych:
    Zestaw ATB zasilałem z programatora USBISP. Po odłączeniu programatora i dołączeniu zewnętrznego zasilania FAT-FS wystartował. :D

    _________________
    ;-)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 lis 2016, o 16:58 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2014
    Posty: 279
    Lokalizacja: Kraków
    Pomógł: 4

    PawelGaj - bardzo inspirujący jest Twój kod!
    Mam pytanie, ponieważ za każdym razem gdy zresetuję uC to plik traci swoją zawartość i jest tworzony na nowo. Jeśli jesteś w temacie lub ktoś inny to jak przerobić funkcję zapisu aby DOPISYWAĆ do istniejącego już pliku. Wiecie, miesiąc się zapisywały dane, na chwilę brakło prądu i cała archiwizacja się skasowała :(
    Z góry dzięki ;)

    _________________
    http://forum.atnel.pl/topic15633.html



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2016, o 08:48 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2014
    Posty: 279
    Lokalizacja: Kraków
    Pomógł: 4

    Daję słowo, wczoraj tu była czyjaś odpowiedź :shock:

    _________________
    http://forum.atnel.pl/topic15633.html



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2016, o 08:59 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27407
    Lokalizacja: Szczecin
    Pomógł: 1043

    Była - gościu wpadł, opisał ile błędów jest w programie autora wątku - też widziałem to i czytałem - po czym jak widać skasował swój post (bo nie było kolejnego) i zniknął ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2016, o 10:08 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2014
    Posty: 279
    Lokalizacja: Kraków
    Pomógł: 4

    normalnie char'y w stringach :lol:
    powalczę jeszcze z tym FatFS

    _________________
    http://forum.atnel.pl/topic15633.html



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 lis 2016, o 21:31 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2596
    Pomógł: 129

    Moze twórz codziennie następny plik? Wtedy padnie tylko ostatni dzien. Mozna tez dorobic zapisywanie/zamykanie pliku jak zniknie zasilanie.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 lut 2017, o 17:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2014
    Posty: 279
    Lokalizacja: Kraków
    Pomógł: 4

    Jakimś cudem popchnąłem temat do przodu :P

    po pierwsze:
    update bibliotek ze strony elm-chan - potrzebna były opcja FA_OPEN_APPEND

    po drugie:
    po restarcie trzeba odpowiednio ustawić wskaźnik do miejsca od którego mają być zapisywane pliki po awarii - tu pomocna okazała się funkcja f_size

    efekt jaki uzyskałem (a raczej jego namiastka - bo pracy jeszcze sporo):
    Obrazek

    _________________
    http://forum.atnel.pl/topic15633.html



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO