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



Teraz jest 27 lis 2024, o 08:40


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 ]
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 ]
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 ]
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: 27313
Lokalizacja: Szczecin
Pomógł: 1041

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 ]
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: 27313
Lokalizacja: Szczecin
Pomógł: 1041

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: 27313
Lokalizacja: Szczecin
Pomógł: 1041

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: 2586
Pomógł: 128

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 1 gość


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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO