Problem z SPI

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
DarkJarek
-
Posty: 44
Rejestracja: 21 mar 2006, 15:48
Lokalizacja: ...
Kontakt:

Problem z SPI

Post autor: DarkJarek » 10 kwie 2009, 21:59

Witam,

mam pewien układzik który ma komunikować się z uC poprzez SPI. Wszystko po podłączałem i pojawił się problem. uC odbiera jakieś różne dziwne rzeczy. Po wysłaniu dwóch bajtów pod 2 kolejne adresy a następnie odczytywaniu ich w kółko na wyświetlaczy (podłączonym do mikroprocesora) pokazują się poza prawidłowymi wartościami również nieprawidłowe, wartości cały czas się zmieniają. Nie mam pojęcia, co może stanowić problem. Używam sprzętowego SPI i kodu który na 99% działa, układ jest złożony na płytce stykowej. Jedyne przypuszczenia takie mam to zakłócenia, ale żeby aż takie?

Pozdrawiam
DarkJarek

[ Dodano: 2009-04-14, 19:49 ]
Uporałem się częściowo z problemem. Okazało się, że problemy były związane z nóżkami które zostawiłem w powietrzu (dokładnie to chyba 1 nóżka). Ale pozostał pewien problem. Owe nóżki zostały podłączone do masy, mimo to problem nie znikł dopóki nie przytknąłem do tejże nóżki kabla podłączonego do masy przy stabilizatorze (czym dalej od stabilizatora tym pojawiały się częstsze przekłamania). Zauważyłem również, że problem występuje tylko w najstarszym bicie, wartości mniejsze od 0x80 przechodzą bez problemu. SPI taktowane jest zegarem 5MHz(20MHz z preskalerem 4).

darsaj
-
Posty: 1
Rejestracja: 21 kwie 2009, 12:29
Lokalizacja: Łódź

Post autor: darsaj » 21 kwie 2009, 12:48

Witaj.

Niestety nie potrafię odpowiedzieć Ci dlaczego tak jest, ale należy przyjąć że wiszące nóżki procesora to źródło zakłuceń.
Mam natomiast prośbę czy mógłbyś poradzić jak rozwiązać komunikację między dwoma mikroprocesorami Atmega8 tak aby w określonej chwili przez Mastera, Slave wysłał 2 bajtową zmienną i została ona prawidłowo odebrana po czym wykonywał dalej swój program główny. Dzięki za zrozumienie.

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 21 kwie 2009, 13:17

A jak tam z kondensatorami na zasilaniu procka? podłączyłeś prawidłowo? Często winą błędnej pracy potrafią być zakłócenia na liniach zasilania procesora - stąd na każdej parze VCC i GND należy wieszać 100nF.

Awatar użytkownika
DarkJarek
-
Posty: 44
Rejestracja: 21 mar 2006, 15:48
Lokalizacja: ...
Kontakt:

Post autor: DarkJarek » 21 kwie 2009, 21:17

Sprawa wygląda dość dziwnie. Zasilacz który był podłączony do układu strasznie się grzał i po czasie przestał wyrabiać, musiał się ostudzić i tak w kółko. Podłączyłem więc układ do zasilacza ATX co eliminowało problem mocy, po dołożeniu jeszcze kilku kondensatorów układ o dziwo zaczął działać normalnie bez żadnych dodatkowych przewodów ale po pewnym czasie problem powrócił. Tylko tym razem jakby było mniej zakłóceń. Ale podejrzewam, że jak zaprojektuje końcową płytkę to wszystko powinno już działać bez problemu.

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 24 kwie 2009, 16:37

Zasilacz AT nie może pracować bez obciążenia, natomiast ATX może, jednak nie powinien.
Jeśli masz możliwość, to obciąż każdą linie (każde napięcie wyjściowe) obciążeniem rezystancyjnym (na żarówki po kilka watów, na odpowiednie napięcia).
Obciążenie nie zmniejszy tętnień, natomiast powinno pomóc na szpilki i nierówne obciążenie poszczególnych napięć.

Awatar użytkownika
c4r0
Moderator
Posty: 2150
Rejestracja: 13 kwie 2004, 19:56
Lokalizacja: z lasu
Kontakt:

Post autor: c4r0 » 24 kwie 2009, 17:40

M@rek pisze:Zasilacz AT nie może pracować bez obciążenia, natomiast ATX może, jednak nie powinien.
Pracowałem na przynajmniej czterech różnych zasilaczach AT w roli warsztatowych i zawsze poprawnie pracowały bez żadnego obciążenia.

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 24 kwie 2009, 18:29

Zasada działania zasilacza impulsowego jest taka, że generuje on impulsy wtedy, gdy są potrzebne (spadek napięcia).
Wiele zasilaczy może pracować bez obciążenia, lecz niektóre typu AT nie będą się zachowywać poprawnie, jeśli prąd odciążenia będzie zerowy (kondensatory filtrujące bez upływu i odłączenie wiatraczka gdy zasilacz jest zimny), gdyż wtedy tracą stabilizację napięcia wyjściowego.
innym ważnym czynnikiem poprawności pracy zasilacza jest poprawna stabilizacja napięcia. Przy różnym obciążeniu wyjść jedno napięcie będzie napięcie będzie poprawne, a inne nie będą się mieścić w zakresie tolerancji.
Niektóre zasilacze pilnują tylko jednego wyjścia (zwykle 5V), inne wyłączają się gdy po korekcie pilnowanego napięcia inne wyjdzie poza dopuszczalny zakres.

Awatar użytkownika
joon
Użytkownik
Posty: 2076
Rejestracja: 30 cze 2007, 22:56
Lokalizacja: Kraków, Przemyśl, Warszawa
Kontakt:

Post autor: joon » 24 kwie 2009, 20:24

M@rek pisze:Zasada działania zasilacza impulsowego jest taka, że generuje on impulsy wtedy, gdy są potrzebne (spadek napięcia).
Wiele zasilaczy może pracować bez obciążenia, lecz niektóre typu AT nie będą się zachowywać poprawnie, jeśli prąd odciążenia będzie zerowy (kondensatory filtrujące bez upływu i odłączenie wiatraczka gdy zasilacz jest zimny), gdyż wtedy tracą stabilizację napięcia wyjściowego.
innym ważnym czynnikiem poprawności pracy zasilacza jest poprawna stabilizacja napięcia. Przy różnym obciążeniu wyjść jedno napięcie będzie napięcie będzie poprawne, a inne nie będą się mieścić w zakresie tolerancji.
Niektóre zasilacze pilnują tylko jednego wyjścia (zwykle 5V), inne wyłączają się gdy po korekcie pilnowanego napięcia inne wyjdzie poza dopuszczalny zakres.
1:Nawet najstarsze zasilacze mają zbocznikowane wyjścia rezystorami do masy
2:99% zasilaczy sprawdza jedynie poprawność na linii 5V
3:Jeśli już obciążać to po co wszystkie linie? I po co żarówkami jak wystarczy rezystor 2R o mocy 2-5W? :roll:
4: Trochę OT zrobił się w tym temacie..
5: Jeśli musisz już uruchomiany układ zasilać z ATXa, to rób to przez linie 12V plus stabilizator 7805, wyeliminujesz w ten sposób potencjalne zakłócenia ;)

Awatar użytkownika
DarkJarek
-
Posty: 44
Rejestracja: 21 mar 2006, 15:48
Lokalizacja: ...
Kontakt:

Post autor: DarkJarek » 24 kwie 2009, 20:36

joon pisze: 5: Jeśli musisz już uruchomiany układ zasilać z ATXa, to rób to przez linie 12V plus stabilizator 7805, wyeliminujesz w ten sposób potencjalne zakłócenia ;)
Tak właśnie zrobiłem, przy czym stabilizator wydziela spore ilości ciepła po chwili działania układu. Na +5 w zasilaczu było coś koło 5.3V bez obciążenia co było wartością za dużą z uwagi na to, że uC komunikuje się z układem zasilanym z 3.3V. W tej chili mam chyba 4.92 co mnie zadowala.
Zasilacza ATX musiałem użyć z uwagi na brak innego źródła zasilania o odpowiedniej mocy.
Ostatnio zmieniony 24 kwie 2009, 23:11 przez DarkJarek, łącznie zmieniany 1 raz.

Awatar użytkownika
joon
Użytkownik
Posty: 2076
Rejestracja: 30 cze 2007, 22:56
Lokalizacja: Kraków, Przemyśl, Warszawa
Kontakt:

Post autor: joon » 24 kwie 2009, 21:57

DarkJarek pisze:Tak właśnie zrobiłem, przy czym stabilizator wydziela spore ilości ciepła po chwili działania układu
No to jest minus ale rozsądny radiator te 7W przy maksymalnym prądzie 7805 wydzieli bez problemu ;)

Awatar użytkownika
DarkJarek
-
Posty: 44
Rejestracja: 21 mar 2006, 15:48
Lokalizacja: ...
Kontakt:

Post autor: DarkJarek » 28 kwie 2009, 11:26

Zauważyłem ciekawą rzecz, czym lepsze jest połączenie układu z masą tym mniejsze są zakłócenia. W związku z tym mam pytanie czy problemem może być to, że układ jest podłączony do zasilania cienkimi kabelkami ze skrętki, podczas gdy pobiera on około 200mA przy 5V ?

Jako, że obraz mówi więcej niż 1000 słów więc zamieszczam zdjęcie z opisem, może to coś pomoże.

http://img209.imageshack.us/img209/5465/20090428217.jpg

Awatar użytkownika
c4r0
Moderator
Posty: 2150
Rejestracja: 13 kwie 2004, 19:56
Lokalizacja: z lasu
Kontakt:

Re: Problem z SPI

Post autor: c4r0 » 29 kwie 2009, 10:00

DarkJarek pisze:SPI taktowane jest zegarem 5MHz(20MHz z preskalerem 4).
To zdanie w połączeniu ze zdjęciem które zamieściłeś sprawia, że w ogóle nie jestem zdziwiony że to nie działa :) Przy takich częstotliwościach musisz mieć dobre połączenia (nie plątaninę długich drutów), solidną masę i rozsądnie rozmieszczone kondensatory na zasilaniu.

Awatar użytkownika
DarkJarek
-
Posty: 44
Rejestracja: 21 mar 2006, 15:48
Lokalizacja: ...
Kontakt:

Post autor: DarkJarek » 29 kwie 2009, 18:24

Dzięki wielkie za pomoc.
Czyli moje przypuszczenia odnoście masy się potwierdził. A układ w tej chwili działa tylko jak pisałem wcześniej z tymi dodatkowymi przewodami do masy.

ODPOWIEDZ