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



Teraz jest 28 kwi 2024, o 12:25


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 20 ] 
Autor Wiadomość
PostNapisane: 3 sie 2012, o 13:39 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Witam
Mam taki dziwny kłopot. Zrobiłem program który czyta z karty SD odpowiednie dane i zapisuje do EEPROM'u i po tym inne Atmegi wykonują pracę. Wszystko działa dobrze o ile jest tylko 12 linijek kodu na karcie SD. Jeśli jest więcej to program nie czyta po kolei tylko w cały świat. Jest to odpowiedzialne za to ze tablica do której program odczytuje dane z SD jest mniejsza niż zawartość SD jednak gdy zmieniam tablicę na większy rozmiar to wyskakuje błąd że jest to za duży rozmiar. Czemu tak się dzieję?
Załączam tylko początek programu gdyż cały program ma ponad 600linijek kodu a to co nie chce działać jest właśnie w tym fragmencie.

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

Zmieniłem wielkość tablicy z char czyli taka jak jest oryginalnie w projekcie Pana Mirka na
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

To działa czyta 12 linijek po 17 znaków (+CRLF)
Niestety to jest za mało bo ja chcę ponad 100 linijek.
Gdy zmieniłem wielkość tablicy na
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

To pokazuje błąd
Kod:
**** Build of configuration Release for project 32_CNC_uC_0 ****

make all
Building file: ../main.c
Invoking: AVR Compiler
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=8000000UL -MMD -MP -MF"main.d" -MT"main.d" -c -o"main.o" "../main.c"
../main.c:89: error: size of array 'bufor' is too large
make: *** [main.o] Error 1

Proszę o pomoc co robię źle.

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sie 2012, o 13:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

Co robisz źle ? Nic ..... tylko ci zabrakło pamięci procesora .......... chciałeś zaledwie stworzyc bufor wielkości 64 kb . Weź notę i sprawdź czy to jest możliwe ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sie 2012, o 14:00 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

No to jak to zrobić?
Przecież inni robią dataloger czy jakoś tak i tam jest setki linijek a u mnie zaledwie 12. Więc trzeba chyba inną tablicę czy jak?

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sie 2012, o 14:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

Skoro dataloger no to zrzucaj dane na kartę jak coś jest w buforze. Bufor nie służy do przechowywania danych, od tego jest karta pamięci. Bufor masz tylko po to żeby nie utracić danych w przypadku jak za szybko w danym momencie będą przychodzić dane lub jak zrobi się zator przy zapisie. Zewsze powinieneś dążyć do tego żeby bufor był pusty.
A przy takiej zabawie poczytaj troszkę o buforach cyklicznych, ponieważ one nadają się tutaj najlepiej :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sie 2012, o 14:21 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Źle mnie zrozumiałeś ja tylko odczytuje z karty SD

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sie 2012, o 14:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lis 2011
Posty: 534
Lokalizacja: Mierzyn
Pomógł: 9

Janadamis napisał(a):
Źle mnie zrozumiałeś ja tylko odczytuje z karty SD


A co dataloger ma z tym wspolnego ?

_________________
pozdrawiam
Jachu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sie 2012, o 14:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

nie ma to znaczenia ..... czy w jedną czy w drugą stronę, zmienia się tylko kierunek, ale ogólna zasada jest taka sama. Skoro są dane w buforze ........ to czas z nich skorzystać :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sie 2012, o 14:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lis 2011
Posty: 534
Lokalizacja: Mierzyn
Pomógł: 9

Malutki_27 napisał(a):
nie ma to znaczenia ..... czy w jedną czy w drugą stronę, zmienia się tylko kierunek, ale ogólna zasada jest taka sama. Skoro są dane w buforze ........ to czas z nich skorzystać :)


Dokladnie tak :) Bufor jest tylko jak sama nazwa wskazuje tymczasowym miejscem przechowywania .

_________________
pozdrawiam
Jachu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sie 2012, o 14:34 
Offline
Moderator
Avatar użytkownika

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

Ja myślę że przede wszystkim autor musi niestety doczytać rozdział o tablicach :( bo w ogóle na razie tego nie rozumie - tak mi się wydaje... ale może się mylę

No toż tablica do odczytu musi być zrobiona w pamięci RAM ..... skoro więc w procku masz tej pamięci np 1Kb czyli 1024 komórki i musi ona wystarczyć i na różne inne zmienne niż tablica i stos to jak można próbować tworzyć w tej pamięci tablicę o pojemności 64kB ?!?!?!

Nieznajomość tego zagadnienia z pewnością skutkuje brakiem zrozumienia dalszych działań i poczynań :(

Idea jest taka panie autorze,

tworzy się mały bufor i do niego wczytuje po kawałku bajty z pliku z karty. ŻADNE LINIJKI (już kiedyś pisałem ci że nie ma na karcie ŻADNYCH LINIJEK) a ty wciąż z uporem godnym podziwu piszesz o tych linijkach.....

Plik na karcie to taka oooooogromna tablica, a w niej zapisane są kolejno bajty. A tych bajtach kolejno są umieszczone te twoje znaczki z tych linijek jak je nazywasz ....

a zatem wczytujesz do bufora o wielkości np 255 bajtów sobie pierwsze 255 bajtów z pliku i jedziemy panie kochany, po kolei sprawdzamy idąc bajt po bajcie w buforze gdzie jest znak CR i to jest koniec twojej linijki - robisz z nią co chcesz i dalej - wiśta wio ;) lecimy po kolejnych bajtach bufora aż do kolejnego znaku CR i to samo ...... i tak dalej aż osiągniesz koniec bufora.....

co dalej ?????

no chyba normalne - z pliku wczytujesz kolejne 255 bajtów .... i powtarzasz to samo i tak dalej i tak dalej

a nie tam jakieś LINIJKI w PLIKU ;)

_________________
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: 3 sie 2012, o 15:32 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Co do linijek to ja to już wtedy zrozumiałem.
No dobra, czyli:
Po odczytaniu 255bajtów do bufora wyciągnąłem z nich odpowiednie dane i chcę wczytać kolejne 255 do bufora ale jak to zrobić programowo?

Można prosić o wskazówki? Jak to zrobić?

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sie 2012, o 15:44 
Offline
Moderator
Avatar użytkownika

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

Janadamis napisał(a):
Można prosić o wskazówki? Jak to zrobić?


Czy posiada kolega może moją drugą książkę ????

http://atnel.pl/jezyk-c-pasja-programowania.html

nie skłamię jeśli powiem że tam jest z milion przykładów w najróżniejszych konfiguracjach jak to robić

a opisowo .....

po pierwsze czym kolega chce to robić PetitFS czy FatFS bo są spore hmm nawet bardzo duże różnice....

_________________
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: 3 sie 2012, o 15:47 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Mam 2 część książki
I to oczywiście PetitFS
Ja tej książki jeszcze nie zacząłem wiec nie wiem co gdzie może być więc bym prosił o wskazówki na której stronie czy jak.
Bo nie mam zielonego pojęcia jak wgrać następne 255baitów :(

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sie 2012, o 16:07 
Offline
Moderator
Avatar użytkownika

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

Janadamis napisał(a):
Mam 2 część książki
I to oczywiście PetitFS
Ja tej książki jeszcze nie zacząłem wiec nie wiem co gdzie może być więc bym prosił o wskazówki na której stronie czy jak.
Bo nie mam zielonego pojęcia jak wgrać następne 255baitów :(


No to jak masz drugą książkę to trzeba było od razu mówić ;) masz w niej rozdział

PetitFS – zapis danych do dużych plików

więc teraz książka w łapki i do roboty i analizy kodu ;)

_________________
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: 3 sie 2012, o 19:25 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Po przeczytaniu tego rozdziału dowiedziałem się to i owo ale tam jest głównie jak zapisać a nie odczytać.
Ale kilka rzeczy nie rozumie.
Ta procedura odczytu jest inna niż w 1 książce i ciężko mi było dojść co do czego.
Nie wiele zrozumiałem gdyż na temat odczytu jest mało napisane.
W książce na 322str jest kod po którym doszedłem że:
Funkcja zapisu do 1 sektora jest taka sama jak do 2 sektora czyli to gdzieś indziej się ustawia.
pisze że numer sektora ustawia się poprzez wskaźnik oraz pf_lseek
Ale jak? Bo nie rozumie. :(

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sie 2012, o 20:18 
Offline
Moderator
Avatar użytkownika

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

Ok jeśli chodzi o odczyt czyli tysiąc razy prostszą sprawę niż zapis w PetitFS , to masz przykłady w kilku rozdziałach. Np w obsłudze wyświetlacza LCD TFT do odczytywania plików obrazków które trzeba wyświetlić na ekranie ;) do odczytu czcionek...

W innych rozdziałach masz odczyt plików dźwiękowych które są odtwarzane - no więc tego masz o wiele więcej

pf_seek() ustawia wskaźnik pozycji w pliku do odczytu ;)

pf_read() odczytuje dane od tego miejsca do wskazanego w argumentach bufora i jeszcze cię ładnie informuje czy udało się odczytać tą ilość bajtów jaką zadałeś do funkcji (podajesz 3 parametry)

czy tu coś więcej trzeba tłumaczyć ?

szczegóły masz właśnie w kodach ....


Autor postu otrzymał pochwałę

_________________
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: 3 sie 2012, o 21:07 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

No teraz to bardziej rozumie.
Sklepałem taki programik. Mam nadzieje ze jestem na dobrej drodze. :)
Program ma odczytać dane do bufora ale od 20 bajtu a nie od 0 a następnie wyświetlić tą zawartość na LCD

Błędów nie pokazuje to może jest nadzieja że jest dobrze, niestety nie mam teraz możliwości przetestowania tego programu.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


------------------------ [ Dodano po: 2 minutach ]

I jak użyć tego argumentu "&s1" żeby to pokazało czy dobrze odczytało?

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sie 2012, o 21:11 
Offline
Moderator
Avatar użytkownika

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

no s1 to zmienna która będzie pokazywała ile się odczytało


Autor postu otrzymał pochwałę

_________________
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: 3 sie 2012, o 21:20 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Aha
A ten program to coś takiego? Dobrze tą idee zrozumiałem ?

------------------------ [ Dodano po: 6 minutach ]

Czyli z tym s1 to wystarczy tylko to wyświetlić?
Chodzi mi na próbę czy będzie działało potem można to w funkcji włożyć.

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

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2012, o 18:18 
Offline
Użytkownik

Dołączył(a): 27 mar 2012
Posty: 511
Lokalizacja: Sląsk
Pomógł: 14

Wszystko dobrze działa :D
Bo odczytało 1200bajtów a nie jak ostatnio 240 :D

Wielkie dzięki za pomoc

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sie 2012, o 18:50 
Offline
Moderator
Avatar użytkownika

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

Janadamis napisał(a):
Wszystko dobrze działa :D
Bo odczytało 1200bajtów a nie jak ostatnio 240 :D

Wielkie dzięki za pomoc


Czyli jak to mawiał James Bond ;)

"Mission Successful"

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 20 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 8 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