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



Teraz jest 30 gru 2024, o 18:12


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
Autor Wiadomość
PostNapisane: 11 lip 2024, o 13:21 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 368
Pomógł: 0

Witajcie.
Postanowiłem zgłębić tajniki obsługi kart SD. Od dawna nosiłem się z tym zamiarem, no i zaczęło się ... W sumie start był dobry. Mam zestaw atb 1.04. Podpiąłem slot karty na pokładzie do odpowiednich pinów atmegi 32. Skorzystałem z adaptera do kart microSD. Zastosowałem lekcję 15_TEST_Petit_FS z BB. Obejrzałem trzy poradniki Mirka do tego
tematu. Wszystko poszło prawie od razu.

Zależało mi na razie tylko na odczycie plików tekstowych z karty, a więc usunąłem wszystko z kodu odnoście zapisu. Następnie podpiąłem zewnętrzny slot do kart microSD, jakich pełno na
znanym portalu aukcyjnym do arduino. Wszystko śmiga bardzo dobrze i powtarzalnie na różnych kartach microSD 1gb. Wziąłem kartę 16gb na testy i utworzyłem na niej partycję fat 1gb.
Również śmiga. Robiłem to wszystko na zestawie uruchomieniowym.

Problemy się zaczęły, kiedy przeniosłem program na pcb, która to płytka jest obsługiwana przez programator usbasp atnel (na zestawie używam wbudowany programator na ftdi). Czyli podpiąłem się kartą pod złącze spi atmegi. Do sygnału CS wykorzystałem port, pin PB1. Ustawiłem ten port w pliku mmc.c biblioteki PetitFS.

Na początku jeden procek przestał działać. Nie mogę go odczytać. Wpiąłem drugi i działa póki co, ale program się ciągle zawiesza. Tzn program nie dociera do while(1). W while(1)
wyświetlam tekst "test". Jeśli z main usunę
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

to tekst z while(1) się wyświetla, czyli ok. Po odkomentowaniu zawiecha. Stanąłem w miejscu. W poradniku Mirka o testowaniu kart jest mowa o włączaniu i wyłączaniu spi. Może tu tkwi problem.
Napisałem coś takiego, ale nie jestem pewny...

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


Wiesza się program. Co robię źle ???



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lip 2024, o 15:51 
Offline
Moderator
Avatar użytkownika

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

pokaż lepiej schemat tego swojego pcb a szczególnie dokładny fragment połączeń programatora i karty bo tu może być problem

_________________
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: 11 lip 2024, o 16:26 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 368
Pomógł: 0

Witaj Mirku.
Wszystko zostało w pracy i jutro mogę ze szczegółami pokazać, ale pcb mam od roku. Mój projekt i wykonanie przez fabrykę. Wiele razy wgrywałem wsady przez usbasp.
Nie było z tym problemu. Dzisiaj również wgrywałem wsady, ale przed podpięciem czytnika.
Czytnik był wcześniej podpięty do atb 1.04. Było ok. Odpiąłem go i podłączyłem do mojego pcb, które jest ciągle w użyciu, jak mam trochę czasu i na nim coś tam zawsze robię. Ma podpięty enkoder i lcd. Zawsze działa. Chciałem do tego zaimplementować czytnik kart i dla tego podpiąłem się do tego pcb. Miso do miso, mosi do mosi, sck do sck i cs do PB1. + karty do +5v na pcb i masa-masa.

Pomijając hardware, to nie rozumiem, czemu po zakomentowaniu linijki z fragmentem:

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


Program idzie dalej i wykonuje się pętla while, gdzie dla sprawdzenia jest napis na lcd. Jak odkomentuję, to program przechodząc przez main (inicjalizacje peryferii) zatrzymuje się. Czytnik mam taki:

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lip 2024, o 18:57 
Offline
Moderator
Avatar użytkownika

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

No słuchaj - jeśli uważasz, że błędu nie masz w hardware - to hmmm co ja biedny żuczek mogę pomóc. Skoro ci zawsze działało i działa a tylko czasem nie działa - no to będziesz (nie obraź się) dalej szukał wiatru w polu. Ni odbieraj tego źle że piszę ironicznie czy coś - ale no sam sobie przeczysz i pewne rzeczy piszesz nielogicznie niestety :(

Ja z kolei po tych twoich opisach czuję problem hardware i co zrobić Panie? .... Jak mówię, w ten sposób będziesz szukał problemu w nieskończoność ... Ja zaczynam analizę, również swoich problemów) od hardware chociaż miałbym to po raz tysięczny przeglądać od nowa. Nigdy ale to nigdy nie działam na zasadzie "jak mi wcześniej działało to nie może być problemu w Hardware" bo to jest niestety bez sensu.

Skoro zatem tu go nie ma tzn schematu to ja się odmeldowuję ...

_________________
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: 11 lip 2024, o 20:22 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 368
Pomógł: 0

Mirku, nie unoś się. Jutro rano wrzucę schemat podłączenia. W domu nie mam sprzętu. Ja tylko staram się w miarę dokładnie na ten moment opisać, jak to mam podłączone.
Piszę, a żeby przekazać max informacji. Logiczne jest, że coś jest zbabolone, że nie działa. Pozdrawiam. Robert.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lip 2024, o 02:59 
Offline
Moderator
Avatar użytkownika

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

A gdzie ja się unoszę ? Ja dokładnie opisuję i mówię zawsz o co mi chodzi a gdy ktoś pisze że wie lepiej to wtedy co mam dalej zrobić ? Wtedy mówię, że się odmeldowuję i to nie jest żadne unoszenie się.

To nie jest piekarnia, nikomu nigdzie się nie śpieszy - to zwykłe forum, więc jak już będziesz miał schemat to wrzucisz i można iść dalej i sprawdzać

_________________
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: 12 lip 2024, o 07:18 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 368
Pomógł: 0

Dzień dobry.
Przyniosłem drugi czytnik, a żeby nie przekładać. Podłączyłem do atb 1.04. Wszystko działa prawidłowo. Drugi podpięty pod pcb. Sprawdziłem połączenia. Jest, jak na załączonym schemacie.
Ja wiem, że nie piekarnia. Przecież nie ponaglam. Rozumiem zasady forum. Pozdrawiam.

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lip 2024, o 08:30 
Offline
Moderator
Avatar użytkownika

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

No i dobrze myślałem - totalna masakra na schemacie jeśli chodzi o SPI. Totalna niestety ...

Jedną z najgorszych rzeczy to brak SZCZEGÓLNIE rezystora podciągającego linię CS twojego czytnika do VCC - bez tego napięcie w trakcie programowania procka na linii CS PB1 jest pływające - co jasno mówi, że może raz działać a raz nie działać. Że może 500x zadziałać ale za to kolejne 20x nie zadziałać itp itd

Kolejna sprawa to rezystory podciągające linie MOSI, MISIO i SCK - 10K do VCC

Kolejna sprawa jak się nie chce mieć problemów na czas programowania a ma się na tych samych liniach kartę pamięci to się daje na liniach MOSI, MISO, SCK rezystory 100R do USBasp. Zaś sama karta podłączona jest bez nich bezpośrednio do linii procka. Tylko programator przez rezystory

_________________
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: 12 lip 2024, o 08:32 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2590
Pomógł: 128

Hmmm, a gdzie schemat na podstawie którego robiłeś pcb? Bo chyba używałeś jakiegoś programu do zaprojektowania płytki? Czy z kartki sch robiłeś pcb w programie?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lip 2024, o 08:49 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 368
Pomógł: 0

Wielkie dzięki Mirku za chęć pomocy. Zastosuję się do wszystkich wskazówek. Zabiorę zestaw do domu, poprawię w weekend i opiszę.
Może coś przeoczyłem, ale oglądając Twoje 3 poradniki "Karty pamięci + mikrokontroler", a w szczególności part02, gdzie użyłeś programator usbasp i płytki stykowej + atmega 8, nie zauważyłem
nic, poza kabelkami. Nigdy wcześnie nie podłączałem dwóch urządzeń pod SPI i zrobiłem, jak wyżej.... Czytnik chciałem kupić ze sklepu Atnela, ale niestety niema. Podłączyłem sklepowy, który ma buforek i sadziłem, że będzie ok...... Pozdrawia. Robert.

------------------------ [ Dodano po: 11 minutach ]

micky napisał(a):
Hmmm, a gdzie schemat na podstawie którego robiłeś pcb? Bo chyba używałeś jakiegoś programu do zaprojektowania płytki? Czy z kartki sch robiłeś pcb w programie?


Schematu nie robiłem w programie, tylko ze szkicu na kartce, gdyż był zbyt prosty. Nie zawiera wiele peryferiów, a więc tak to robię w takich sytuacjach. Samo pcb robię w Sprint-layout 6.0.
Oczywiście dokładnie sprawdzam pod kontem błędów, zanim wyślę gerbery, ale tam nie było mowy o karcie sd. Podlutowałem przewody od czytnika pod piny kanda na pcb i tak to testowałem....

Z tego wszystkiego zakładam, że gdybym procek zaprogramował na innym zestawie (nie moje pcb) i podpiął dopiero w miejsce kanda na mojej płytce z pominięciem programatora, to układ powinien zadziałać. Ale byłoby to nie wygodne na częste zmiany wsadu. Chyba dobrze myślę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lip 2024, o 07:51 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 368
Pomógł: 0

Witam. Trochę czasu upłynęło.
Notoryczny brak :( A więc szczerze mówiąc utknąłem w martwym punkcie. Wykonałem połączenia rezystorowe, ale nic to nie dało. Odstawiłem na chwilę moje pcb i wróciłem do zestawu atb 1.04,
a żeby wyeliminować ewentualne babole. Wkleiłem bibliotekę MK_SPI do projektu. Biblioteka, jak i program działają wyśmienicie. Dane z karty wyświetlają się na lcd bez problemu i powtarzalnie.
Niezależnie od tego, czy dam jakiekolwiek rezystory podciągające, czy też nie. Testowane na różnych prędkościach ustawianych w bibliotece i mk_spi.h.

Cały czas wgrywany wsad przez TXD RXD Atmegi32. Na spi jest tylko karta, a więc nic się nie gryzie. Wszystko gra, dopóki korzystam ze sprzętowego spi. Jeśli przepnę CS na inny pin i próbuję to
skonfigurować, to program się wykrzacza. Dla tego zastosowałem bibliotekę MK_SPI, a żeby coś wyeliminować. Kiedy nie zmieniając pinów procka przełączę bibliotekę w trym soft spi:

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


To program przestaje działać. Mowa o pinach PB4, PB5, PB6, PB7. Próbowałem na innych pinach. Nic to nie daje. Na pewno coś przeoczyłem. Coś źle robię, ale nie ogarniam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lip 2024, o 10:26 
Online
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1165
Lokalizacja: Kraków
Pomógł: 93

Robert_1967 napisał(a):
Jeśli przepnę CS na inny pin
Może to nie pomoże, ale coś mi się przypomniało.
Dawno temu obiło mi się o uszy, że nawet jak wykorzystujesz inny pin jako CS, to ten, który jest przypisany do SPI musi być odpowiednio ustawiony. Nie znajdę tego tematu, może to nawet na innym forum było.
A jeśli wprowadzam zamieszanie, to przepraszam. Pamięć bywa zawodna...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lip 2024, o 11:29 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 368
Pomógł: 0

Dzięki Marhef
Dzięki za sugestię. Tylko że nawet nie zmieniając pinów (pozostawiam na sprzętowym spi), a w bibliotece MK_SPI przełączam na soft.... to już nie mam odczytu i ekran pusty.
Mirek w poradniku do tej biblioteki pokazał na przykładzie dogadywania się dwóch zestawów atb, że działało w obu przypadkach, czyli na hardware i software spi.

Pewnie o czymś zapomniałem, ale piszę C okazjonalnie i gdzieś poległem. Oprócz dodania biblioteki we właściwych plikach w mejnie dałem "spi_init();" i to wszystko.



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: 13 ] 

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