AVR32, USB, i... czary!!!

Witam,

Zrobiłem kilka urządzeń na AVR32, a dokładnie AT32UC3B0256. Wszystko byłoby OK gdyby nie USB. To co wyprawia mi ten procek z USB to są jakieś czary.

Napisałem własną bibliotekę USB-CDC. Wszystko chodziło super. Ale do czasu aż zrobiłem znajomemu sterownik zasilaczy do magnetronów. Było to pierwsze urządzenie w którym USB jest wykorzystywane "na okrągło" - cały czas PCet steruje zasilaczami i odbiera od nich wyniki.

Historia wygląda tak:

- robię mu ten sterownik. u mnie wszystko chodzi jak burza.

- znajomy dostaje go i dorabia interfejs między sterownikiem a zasilaczami

- robi sobie testy i informuje mnie że na tym nie da się pracować! są okresy (testy robił przez kilka tygodni 2 dni w tygodniu). mówi że wystarczy włączyć lutownicę, światło, dotknąć palcem masy, albo też NIC nie robić i zwiecha.

- biorę sterownik do siebie. robię testy. rzeczywiście. załączam lampę, zwiecha, lutownica, zwiecha, każde byle co i zwiecha, czasem zwiecha bez powodu!

- zacząłem dorabiać co tylko mi do głowy przyszło - dodatkowe odsprzęganie, pojemności, indukcyjności, itp. było lepiej

- po paru dniach zawiozłem sterownik do znajomego. on robi testy. jest OK

A teraz najlepsze

- na sprawdzenia wziąłem moją płytkę z prockiem (tylko AVR32+ stabilizator 3,3V), dorobiłem stabilizator z 9V na 5V + przekaźnik na zasilaniu bez gaszenia (abym miał czym wytwarzać zakłócenia)

- napisałem program który komunikuje się z PCtem poprzez RSa i USB

- przy zakłócenia (lampa, lutownica, przekaźnik, albo NIC!) mam zwiechę USB. Program i RS nadal jednak chodzi! Tak więc mam potwierdzenia że zwiesza się tylko USB w procku.

- wymyślam różne zabiegi na liniach USB aby to odkłócić.

- wczoraj do południa dzwoni znajomy - zwiechy ma co chwilę! bez żadnej przyczyny.

- ja bawię się u siebie - mam to samo!

I teraz uwaga!!!

Mówię mu że przyjadę i powalczę z tym. Zapuszczam u siebie układ testowy i idę pod przysznic. Układ pracuje, licznik zlicza czas do zwiechy. Po jakimś czasie wracam a układ chodzi!!! Robię testy, strzelam przekaźnikiem, lampą, lutownicą i NICZYM nie mogę zwiesić USB!!!

Wsiadam w samochód, jadę do znajomego. Puszczamy jego układ i NIC!!! Wszystko chodzi. Można strzelać lutownicą, jeździć paluchami po płytce - żadnej zwiechy. Włączamy dwa zasilacze magnetronów, ładujemy na pełną moc... i NIC!!!

Ponieważ wziąłem ze sobą swój układzik testowy, testuję także i jego. Wszystko chodzi. Wywaliłem wszystko kondensatory, dławiki, kable połączyłem na pajęczynkę. I co? I niczym nie mogę uwalić transmisji po USB!!!

COŚ się zmieniło wczorajszego dnia w południe, że dwa różne układy , różny soft, różne PCty, różne zasilacze, oddalone o 20km nagle zaczęły działać!

Mam u siebie stale podpięty układ testowy w pogotowiu. Co jakiś czas testuję. Był już w lodówce, grzałem go suszarką. Wszystko chodzi. Czekam do środy/czwartku. Znajomy będzie robił testy u siebie. Jeśli będzie miał zwiechy USB, ma dzwonić do mnie. Ja wtedy od razu sprawdzam czy mam u siebie to samo.

W tej chwili przychodzi mi tylko jedna rzecz do głowy - wrażliwość procka (a dokładnie części obsługującej USB) na promieniowanie kosmiczne. Być może ostatnie szaleństwa słońca wyrzucają tyle cząstek wysokoenergetycznych że ten procek głupieje. Nie wiem na ile jest to sensowne wyjaśnienie, ale w tej chwili nic lepszego mi do głowy nie przychodzi.

SM

Reply to
SM
Loading thread data ...

SM pisze:

[...]

Może zamiast beteltrystyki, pokazałbyś schemat i pcb tego sterownika. Do tego przydałoby się przejrzeć noty katalogowe z błędami w krzemie.

Reply to
Zbych

Zbych pisze:

Na tym robię u siebie testy:

formatting link
SM

Reply to
SM

W dniu 2010-04-30 09:10, SM pisze:

Ja akurat nie wypowiadam się bezposrednio w temacie , ale schemat w jpg przy jego obecnej jakosci jest nie do odczytania (napisy).

Reply to
Szymon "JamesB0T" Kajewski

Szymon "JamesB0T" Kajewski pisze:

formatting link
SM

Reply to
SM

AS pisze:

W trakcie walki z zakóceniami było chyba wszystko:

Osprzęganie +5V z USB (VBUS) - kondensatory, dławik, rezystory, itp. To samo z liniami USB (D+ D-) - dławik tłumiący sygnał wspólny, kondensatory, itp. Krótkie połączenia, ekranowanie (włącznie z uziemieniem).

Wszystko dawało tylko niewielką poprawę.

Ale od wczoraj południa wszystko to okazało się ZBĘDNE. Wywaliłem cały dodatkowy "osprzęt" zostały tylko 2 rezystorki 39R/1% na D+ i D- i wszystko chodzi bez najmniejszego zająknięcia (dzisiaj włączyłem to około

8 rano i do teraz nie było ani jednej przerwy w transmisji).

Robię testy lutownicą transformatorową, lampą na biurku, do zasilania 9V płytki mam podłączony przekaźnik bez układu gaszącego (bardzo ładnie sieje po masie i przepięciami na zasilaniu). Z zasilania wywaliłem dławiki. Połączenia na pajęczynkę

- tym razem aby było jak najgorzej. I ani razu niczym od wczoraj południa nie mogę go uwalić!

Poczekam do środy. Zobaczę jak wypadną testy u znajomego.

Ale chyba wracam z AVR32 do ARMów. Tam takich numerów nie miałem. Robiłem podobne rzeczy na AT91SAM7S64 (USB z własną obsługą CDC). Połączenia byle jakie, USB w pajęczynce na przewodach i działało. No chyba że się okaże że jak przejdę na ARMa (atmela) to jak jeden będzie wariował to i drugi też :)

Tylko trochę szkoda, bo te AVR32 (lista instrukcji jak i peryferia w uC) były na prawdę niezłe.

SM

Reply to
SM

...no tak. Zapomniałem że ten SAM nie potrafi poprawnie zastartować jeśli napięcie zasilania zbyt wolno narasta

- wtedy się po prostu wiesza.

chyba przyjdzie mi się pożegnać z atmelami.

SM

Reply to
SM

Szkoda tylko mojej pracy.

Najpierw na AT91SAM napisałem się żeby zrobić własną USB-CDC. Wszystko krótkie, szybkie, w ASMie. I okazuje się że procek źle startuje (Atmel napisał o tym dopiero w nowej wersji PDFa

- podają minimalny czas narostu Vdd core).

No to przesiadłem się na AVR32. Znów własne USB-CDC. W ASMie, szybkie, niewiele zajmuje. A tu, po czasie, i ten procek odstawia numery (już pomijam błędy w PDFach).

Co do AVR 8bit nie mam żadnych uwag, ale poza tym chyba podziękuję Atmelowi.

Robiłem jeszcze układy na ARMach Philipsa (LPC) i Analoga (Aduc) ale bez USB.

Więć na nowo szukam czegoś niedrogiego, łatwo dostępnego, niewielkiego (64nóżki TQFP/LQFP), z USB2.0, 32bit (ARM7TDMI). Znalazłem jakiś LPC214X. Popatrze jeszcze u innych producentów.

SM

Reply to
SM

Z tych dwóch:

- LPC2141..44

- STM32F103..107R

chyba te drugie są szybsze i nieco bardziej bogatsze w peryferia, a ceny zbliżone.

Czy ktoś tu z czytających miał z nimi do czynienia i mógłby się wypowiedzieć odnośnie ewentualnych problemów w ich pracy?

SM

Reply to
SM

W dniu 2010-04-30 15:30, SM pisze:

Robiłem projekt na STM32 i jedyna wada mogąca sprawić problemy to dosyć silne zakłócanie w.cz. - na jednej płytce był moduł GPS z anteną, pomogła dopiero bardzo zoptymalizowana pcb czterowarstwowa. Przy czym problem nie tkwił w USB jako takim, ale w PLL procka, generującej zegar

48MHz.

Jeżeli potrzebujesz dużych transferów to wybieraj modele z USB OTG, bo w podstawowej wersji USB ma tylko 512 bajtowy bufor i nie da się spreparować ramki o maksymalnej wielkości wg standardu USB. W wyniku tego spada transfer.

Pozdrawiam, Paweł

Reply to
Paweł Hadam

Dzięki za konkretną odpowiedź! Z zakłóceniami powinienem sobie poradzić. Ważniejsza jest dla mnie niezadowność. 512 bajtów dla USB-CDC w zupełności mi wystarczy, gdyż zazwyczaj przesyłam ramki po wirtualnym COMie nie większe niż 64 bajty (dla USB-CDC ustawiam

4 kanały po 64 bajty i jest OK).

Zamówiłem na szybko kilka STM32F103R8T6 i zobaczę jak będą chodzić.

Pozdrawiam, SM

Reply to
SM

W dniu 2010-05-01 14:37, SM pisze:

Nie ma za co :)

No to najprostsze STM32 się nadadzą. ST nawet dostarcza gotowe biblioteki (kody źródłowe w C) do USB i jest nawet przykład wirtualnego COM'a. Chodzi praktycznie od kopa. Oczywiście można to zoptymalizować, czy pod swoje zastosowania troszkę pozmieniać. Podczas zabawy trochę brutalnie Windows reaguje na błędy konfiguracji czy software USB po stronie proca. Pamiętam jak dziś na oczekiwania za każdym razem na "ding-dong" po włożeniu wtyczki USB. Zamiast gongu można było zobaczyć błyskawicznie inicjację bios'u i test pamięci (reset bez ostrzeżenia, nawet bez bluescreena). Poza tym to do dziś nie wiem co tak naprawdę dawało ciała (poza błędem w aplikacji procka) - obsługa USB w Windowsie czy sterownik? Moim zdaniem przy niedogadaniu się z urządzeniem albo otrzymaniu od niego inicjacji niezgodnej ze standardem powinno ono zostać odrzucone. A tu występował niekontrolowany reset.

Na szczęście jak już wszystko się dograło, to akceptując ograniczenia ramki do ok. 400 bajtów danych dawało się osiągnąć transfery zbliżone do teoretycznych bez żadnych niespodzianek w postaci niestabilności.

Podziel się wrażeniami!

Pozdrawiam, Paweł

Reply to
Paweł Hadam

W dniu 2010-04-30 13:45, SM pisze:

A pomaga w takich sytuacjach zewnętrzny BOD?

Reply to
Adam Dybkowski

Na 100% nie jestem pewien, ale chyba robiłem testy z dłuższym przytrzymaniem wejście NRST procka.

Pisałem z Atmelem i odesłali mnie do PDFa:

"During startup, core supply voltage (VDDCORE) slope must be superior or equal to 6V/ms."

Ja akurat miałem mocno filtrowane zasilania przez indukcyjności i procek nie startował. I chyba z wejściem NRST robiłem różne testy.

SM

Reply to
SM

A macie obaj zasilanie z tej samej sieci energetycznej? Może to sieć sieje "porutę"?

Reply to
cepilek

snipped-for-privacy@poczta.onet.pl pisze:

Pisze że 20km od siebie, więc raczej mało prawdopodobne. Zawsze jakieś trafo się po drodze przypląta, a i zakłady w okolicy inne.

Pzd. __ Irek.N.

Reply to
Irek N.

snipped-for-privacy@poczta.onet.pl pisze:

Między nami jest 20km różnicy, chociaż linia wysokiego/średniego napięcia może być ta sama (najczęściej jak u mnie nie ma prądu to u znajomego też).

Ale testy były na różnych zasilaczach (zwykłe wtyczkowe, laboratoryjne), zasilanie mocno odflitrowane (filtry LC). PC-ty też różne (albo stacjonarny albo laptop na baterie).

SM

Reply to
SM

SM pisze:

Uszkodzone świetlówki? Mikrofalówka u sąsiadów? Piracka radiostacja w pobliżu? Próbowałeś może podpiąć oscyloskop do zasilania i zobaczyć co się dzieje?

A tak abstrahując od neutralizacji zakłóceń - jeżeli jak piszesz to tylko usb pada a sam procesor działa to może wykrywać bezczynność na łączu i wymuszać ponowną enumerację?

Reply to
Michoo

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.