Witam,
Mam następujący problem. Zajmuje się obsługą karty mmc przy użyciu mikrokontrolera ATmega32. Kartę obsługuje przez interfejs SPI taktowany z częstotliwością 125kHz. Zegar do mikrokontrolera to 16Mhz. Cały układ montuje przy użyciu płytki:
http://www.kamami.pl/?id_prod=6691
Kartę mmc podpinam przy użyciu ok. 20 cm`owej tasiemki.
Mój układ jest zasilany napięciem 5V dla potrzeb karty zrzucam napięcie zasilania do 3.3 przy użyciu stabilizatora a napięcie na liniach transmisyjnych przy użyciu dzielników napięciowych. Wygląda to mniej więcej tak:
http://www.captain.at/electronic-atmega-mmc.php
Mikrokontroler ma wgrany program, który dla celów testowych ma odczytać 100 sektorów karty. Po odczytaniu każdego sektora mikrokontroler ma wysłać informację potwierdzającą do komputera przez rs232.
Po włączeniu zasilania nie dzieje się nic. Jeżeli dotknę kabla transmisyjnego(SPI), układ nagle ożywa i przesyła potwierdzenia dla wszystkich 100 sektorów. Jeżeli zresetuję układ nadal trzymając kabel program ponownie wykona się poprawnie natomiast jeżeli puszczę kabel nie dzieje się nic.
Ważne jest to iż po zresetowaniu układu mogę uruchomić transmisję dotykając kabla. No i oczywiście zadziała ona od razu po resecie jeżeli trzymam już kabel.
Próbowałem zekranować kabel zwyczajną folią aluminiową i podłączyć ja do masy lub do zasilania. Niestety to nie pomaga ale nadal pomaga wręcz lekkie dotknięcie ekranu kabla. Próbowałem także pojedyncze linie SPI odkłócić kondensatorem 100nF do masy. Także bez rezultatu chociaż układ zachowywał się inaczej nieraz dotknięcie kabla już nie pomagało.
Płytka na której montuje układ ma wyprowadzone złącza SPI do programatora. Dotykanie ich pomaga tak samo jak dotykanie ekranu kabla.
Moim zdaniem problem leży w jakichś zakłóceniach bądź stanach nie ustalonych i nie wiem za bardzo jak to pokonać. Może ma ktoś jakiś pomysł?
Pozdrawiam!
Mam następujący problem. Zajmuje się obsługą karty mmc przy użyciu mikrokontrolera ATmega32. Kartę obsługuje przez interfejs SPI taktowany z częstotliwością 125kHz. Zegar do mikrokontrolera to 16Mhz. Cały układ montuje przy użyciu płytki:
http://www.kamami.pl/?id_prod=6691
Kartę mmc podpinam przy użyciu ok. 20 cm`owej tasiemki.
Mój układ jest zasilany napięciem 5V dla potrzeb karty zrzucam napięcie zasilania do 3.3 przy użyciu stabilizatora a napięcie na liniach transmisyjnych przy użyciu dzielników napięciowych. Wygląda to mniej więcej tak:
http://www.captain.at/electronic-atmega-mmc.php
Mikrokontroler ma wgrany program, który dla celów testowych ma odczytać 100 sektorów karty. Po odczytaniu każdego sektora mikrokontroler ma wysłać informację potwierdzającą do komputera przez rs232.
Po włączeniu zasilania nie dzieje się nic. Jeżeli dotknę kabla transmisyjnego(SPI), układ nagle ożywa i przesyła potwierdzenia dla wszystkich 100 sektorów. Jeżeli zresetuję układ nadal trzymając kabel program ponownie wykona się poprawnie natomiast jeżeli puszczę kabel nie dzieje się nic.
Ważne jest to iż po zresetowaniu układu mogę uruchomić transmisję dotykając kabla. No i oczywiście zadziała ona od razu po resecie jeżeli trzymam już kabel.
Próbowałem zekranować kabel zwyczajną folią aluminiową i podłączyć ja do masy lub do zasilania. Niestety to nie pomaga ale nadal pomaga wręcz lekkie dotknięcie ekranu kabla. Próbowałem także pojedyncze linie SPI odkłócić kondensatorem 100nF do masy. Także bez rezultatu chociaż układ zachowywał się inaczej nieraz dotknięcie kabla już nie pomagało.
Płytka na której montuje układ ma wyprowadzone złącza SPI do programatora. Dotykanie ich pomaga tak samo jak dotykanie ekranu kabla.
Moim zdaniem problem leży w jakichś zakłóceniach bądź stanach nie ustalonych i nie wiem za bardzo jak to pokonać. Może ma ktoś jakiś pomysł?
Pozdrawiam!