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 15 lip 2025, o 22:11


    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 ] [ Zaznacz wszystko ]
    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: 27416
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27416
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27416
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27416
    Lokalizacja: Szczecin
    Pomógł: 1043

    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 ] [ Zaznacz wszystko ]
    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: 27416
    Lokalizacja: Szczecin
    Pomógł: 1043

    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 ] [ Zaznacz wszystko ]
    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: 27416
    Lokalizacja: Szczecin
    Pomógł: 1043

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