Skocz do zawartości

[Attiny44] Bardzo śmieszny problem z zaprogramowaniem kontrolera


Pomocna odpowiedź

Witam,

Mam przedziwny problem, otóż robię taki projekcik, dwa panele z ledami i czujnikami HC-SR04.

Schemat jest taki:

Proszę przymknąć oko na te złącza goldpin 😅 Jak nie mogę znaleźć elementu to po prostu wstawiam goldpiny a na płytce i tak pasuje.

Ogólnie płytkę mam wytrawioną, polutowaną, panele gotowe, kawał roboty za sobą. Pisząc program jednak musiałem posprawdzać każdą część po kolei, osobno enkoder, osobno ledy, dobrać pwm itd. i na koniec jeśli będę pewien że wszystko działa, napiszę finalny program.

Mam niestety jednak wrażenie że elektronika "szuka" najbardziej głupich powodów żeby układ nie działał 🙂

Dlaczego głupich, a no dlatego że za chiny nie mogę zrozumieć o co chodzi.

Procesor jest ogólnie wykrywany przez komputer, ale do momentu kiedy podłączę zasilanie czujnika oraz pin ECHO_B, kiedy podłączę ten sygnał ECHO, dostaję komunikat na mkavrcalculator:

avrdude.exe: set SCK frequency to 2000 Hz
avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude.exe: error: programm enable: target doesn't answer. 1 
avrdude.exe: initialization failed, rc=-1
avrdude.exe: AVR device initialized and ready to accept instructions
avrdude.exe: Device signature = 0x000000
avrdude.exe: Yikes!  Invalid device signature.
avrdude.exe: Expected signature for ATMEGA8 is 1E 93 07

avrdude.exe done.  Thank you.

Compiled special for http://forum.atnel.pl (v5.11.1)

Związany z tym że albo linie SPI są źle podłączone, albo fusebity ustawione na zewnętrzny kwarc a go nie ma, albo coś z zasilaniem... Jednak ja te wszystkie kryteria mam spełnione 😖

Sądziłem, że coś jest z sygnałem MISO... wiem że też trzeba ostrożnie z podpinaniem odbiorników pod linie SPI,

ale sprawdziłem i podpiąłem ten czujnik do Atmegi88, z tym że ECHO do MOSI, a TRIG do MISO.. żeby sprawdzić czy będzie podobny problem. Ale procesor się bezbłędnie programował 👹

Jeszcze dla sprawdzenia, odłączyłem czujnik i podłączyłem MOSI do diody led przez rezystor 470 om, tutaj też procesor był wykrywany przez mkavrcalculator.(mowa tutaj o Attiny44).

Po podłączeniu ECHO, nie ma żadnych zwarć 😖 Zresztą, dokładnie ten sam czujnik w tych samych warunkach podłączony do Atmegi88 jak wcześniej wspominałem programuje się prawidłowo więc nie ma tam żadnych zwarć ani niczego co mogło by powodować ten problem.

Co ciekawe, pisząc ten post, pomyślałem że podłączę wtyczkę tego wadliwego panelu(bardziej czujnika), do po prostu drugiego panelu z drugim czujnikiem, no i wykrywa prawidłowo... Z tym że, w drugim panelu pin MOSI jest podłączony do TRIG.. ale nie chcę już mieszać.

Jeszcze pokażę na zdjęciu z czym mamy do czynienia:

Jeśli ktoś byłby chętny pomóc mi rozwiązać ten problem, to będę wdzięczny bo już nie mam niestety głowy do tego. W razie pytań bardziej szczegółowych oczywiście odpowiem.

Pozdrawiam

Link to post
Share on other sites

W zasadzie no nie musze.. 😅 ale jak to człowiek leniwy jest nie chce się odłączać wtyczki za każdym razem 😋 ale jest to pomysł, zamiast stać w miejscu to rzeczywiście mogę odłączać ten sensor.

Z tym że i tak z chęcią bym rozwiązał ten problem, bo o coś musi chodzić tylko raczej cieżko powiedzieć co 😋 Gdybym miał wolny choć jeden pin procesora to bym zostawił to MOSI i raczej by nie było problemu, ale no niestety pełny kontroler zajęty, no RESET zostawiłem wolny ale nie posiadam równoległego programatora także nie będę tutaj zmieniał fusebitów, a kto wie może i z resetem by coś krzaczyło..

[ Dodano: 25-09-2016, 18:12 ]

Teraz chwilę pogrogramowałem na Atmedze88, na wepniętym ECHO do MOSI, jak w przypadku Attiny44 i tutaj też wyskoczył mi błąd rc = -1. Z jednej strony dobrze bo nie znaczy to że coś z tym Attiny jest nie tak a z innym kontrolerem sytuacja jest taka sama. No wniosek z tego taki że lepiej nie podpinać tego ECHO do pinów SPI.

[ Dodano: 25-09-2016, 18:21 ]

Spróbuję zamienić np PA0 z dioda led na PA6, żeby ECHO wylądowało nie na żadnym SPI. Być może będzie ok.

[ Dodano: 25-09-2016, 19:04 ]

Po zamianie pinu wszystko zaczęło działać. Także problem rozwiązany 😋

Link to post
Share on other sites

Problemem jest oczywiście sterowanie linią MOSI jednocześnie przez programator i czujnik. Dwóch wyjść na raz podpinać do jednego drutu nie można - to jasne, ale można je separować.

Najprostszym wyjściem byłoby wstawienie na wyjściu czujnika opornika np. 1k - to taka "magistrala dla ubogich". W czasie normalnej pracy układu linia MOSI jest ustawiana zapewne na wejście. Wtedy opornik 1k w niczym nie przeszkadza i sygnał przechodzi, bo impedancja wejścia procesora jest duża. W stanie programowania sygnał z programatora wjeżdża bezpośrednio na wejście MOSI a sygnał z czujnika (przez 1k) jest na tyle słaby, że nie przeszkadza.

Niemniej jednak jeżeli już używasz linii SPI do innych celów niż transfer danych szeregowych, to lepiej podłączać do nich wejścia różnych rzeczy i to najlepiej takich, które nie są jakoś istotne w systemie. Głupotą byłoby sterowanie jakimś silnikiem czy serwem, bo w czasie programowania przez złącze ISP mechanika zwariuje i może być niebezpieczna, nawet dla samej siebie. Jeśli jednak będzie to jakiś bipczak, linia danych do LCD czy diodka LED, raczej nikomu to nie zaszkodzi. Słusznie więc uczyniłeś, choć inne rozwiązanie było w zasięgu ręki 🙂

Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.