Skocz do zawartości

[Bascom] Atmega32 program do terrarium nie działa poprawnie, opóźnienia w reakcji na przyciski


grunz

Pomocna odpowiedź

Witam.

Dostałem "płytkę z Atmegą32" i program "sterownik terrarium", który podobno działa... Wgrałem go i niestety lipa.

Tzn. niektóre funkcje działają jednak nie wszystkie.

Można ustawić godzinę, czasy włączenia/wyłączenia urządzeń zewnętrznych jednak po upływie określonego czasu nie ma żadnej reakcji. Poza tym przełączając poszczególne funkcje w programie czasami wystarczy raz przycisnąć przycisk a czasami muszę kilka razy albo chwile przytrzymać, żeby układ zareagował na naciśnięcie...

Elektronika jest sprawna ponieważ wgrywałem inne "uniwersalne programy" i te działały bez problemu.

Z tego też wnioskuję, że fusebity są dobrze ustawione...

Wrzucam zdjęcie płytki i w załączniku program

sterownik.zip

Link do komentarza
Share on other sites

grunz, coś mi się tu nie zgadza. Napisałeś, że masz płytkę z megą32, ale program w kodzie ma megę16. Do tego jeśli masz nowy mikrokontroler i sam go programowałeś to pewnie działa nie na zewnętrznym rezonatorze tylko na wewnętrznym oscylatorze nastawionym albo na 1MHz albo na 8MHz, stąd pewnie wynikają problemy z włączaniem po określonym czasie i działaniem przycisków.

Jeśli to problem z częstotliwościami to musisz zmienić fuse bity tak aby odpowiadały stanowi rzeczywistemu czyli zewnętrznemu rezonatorowi.

Możesz zrobić prosty test, ustaw czas włączenia na za minutę i zmierz czas po jakim się włączy. Jak włączy się po 8 minutach to masz fuse bity ustawione na 8MHz z wewnętrznym dzieleniem zegara przez 8 (ckdiv8 to się jakoś nazywa w Bascomie, taki checkbox).

Link do komentarza
Share on other sites

Zmieniłem jedną linię, w której było "m16def.dat" na "m32def.dat" i od tego czasu jakoś działa jednak nadal reakcja na przyciski nie jest taka jak powinna.

Zrobiłem test włączenia za minutę i zadziałało to prawidłowo.

Link do komentarza
Share on other sites

jednak nadal reakcja na przyciski nie jest taka jak powinna.

Co oznacza, że nie jest taka jak powinna? Jak się zachowują przyciski? Nie widzę schematu, ale ani na płytce, ani w kodzie nie ma "obsługi" drgania styków. Trochę nieprawidłowo jest zaprojektowana płytka pod ten sterownik. Do tego skoro otrzymałeś coś, za co pewnie zapłaciłeś, to powinieneś ze swoim problemem zwrócić się do źródła, czyli do osoby, od której dostałeś ten układ. Prawdopodobnie gdy raz naciśniesz przycisk to przez drgania styków menu przeskakuje Ci wielokrotnie.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Płytkę wraz z atmegą32 i płytą CD, na której jest kilka programów dostałem od znajomego za darmo.

On natomiast kupił ten cały zestaw kilka lat temu na portalu aukcyjnym, po czym zapomniał o tym i tak przeleżało to u niego do czasu porządków...

Przyciski zachowują się tak, jakby nie zawsze kontaktowały (sprawdzałem miernikiem i są w pełni sprawne).Czasami muszę przytrzymać wciśnięty ponad sekundę, żeby zaskoczył a czasami muszę wduszać kilkakrotnie... Natomiast gdy wgrałem inny program (testowy) to wszystko jest ok.

A może prostszym sposobem będzie wymiana na Atmegę16 pod którą ten program jest napisany?

Link do komentarza
Share on other sites

grunz, to nie jest kwestia mikrokontrolera. Problemy są dwa, jeden to niewłaściwie zaprojektowany obwód od przycisków (tak też działa ale gorzej) a dwa to źle napisany program i tu jedynie można dokonać jakichś poprawek. Ale z tego co czytałem to jest tam trochę zamotana obsługa przycisków i menu. Ja pisałem sobie menu i działało bez problemu, ale odczyty przycisków robiłem kilkaset, jeśli nie kilka tysięcy razy na sekundę. Tu jest to trochę inaczej zrobione.

Link do komentarza
Share on other sites

Czyli pozostaje "zabawa" z programem...

A mógłbyś mnie trochę naprowadzić które części kodu są odpowiedzialne za przyciski???

Coś tam z programowania ze szkoły pamiętam ale cudów nie ma 🙂

Link do komentarza
Share on other sites

Przyciski są opisane aliasami:

Up_sw Alias Pinb.5 ' Przycisk "UP"

Down_sw Alias Pinb.7 ' Przycisk "DOWN"

Ok_sw Alias Pinb.6 ' Przycisk "ENTER"

szukaj więc w kodzie tych aliasów bądź bezpośrednich odwołań do pinów 5, 6 i 7 portu B.

Aha może jest to już poprawione w najnowszej wersji Bascoma, ale ja miałem problem z aliasami. Nie chciały mi działać. Spróbuj pozamieniać wszystkie aliasy na bezpośrednie odwołania do pinów

Link do komentarza
Share on other sites

Wreszcie mam czas się za to zabrać.

Sabre pisałeś o niewłaściwie zaprojektowanym obwodzie od przycisków.

O co dokładniej chodzi? Jeśli o nieodpowiedni montaż na płytce, mogę to przerobić ponieważ i tak przyciski będą montowane w obudowie i doprowadzone do płytki przewodami.

Jeśli chodzi o program to czy możesz mi podrzucić wzór jak powinna wyglądać obsługa przycisków?

Przeglądałem kilka innych programów i w każdym jest to tak opisane jak w tym moim.

Link do komentarza
Share on other sites

grunz, przyciski w AVRach powinny być zwierane do masy plus najlepiej aby miały dodany obwód przeciw drganiom styków tak jak na moim schemacie:

Obsługę przycisków robi się wystawiając najpierw 1 na pinie przycisku (włączamy wewnętrzny rezystor podciągający do plusa, nie trzeba go wtedy lutować dodatkowo na płytce) potem sprawdzamy czy jest 0. Czyli najpierw set port z przyciskiem na 1 a potem sprawdzasz czy pin jest 0 czy 1, jak 0 to wciśnięty jak 1 - nie.

Link do komentarza
Share on other sites

U mnie przyciski zwierają do masy odpowiednio nóżki 6-8 Atmegi.

Jest to zrobione bez żadnych rezystorów.

Dobrze rozumiem, że obwód przeciw drganiom styków u Ciebie to R5-R7 i C8-C10.

Link do komentarza
Share on other sites

Dołożyłem obwód przeciw drganiom ale nie wiele to zmieniło...

Mam pytanie:

Czy ktoś podjąłby się przerobienia programu podanego w pierwszym poście, żeby miał następujące funkcje:

1.Pomiar (tylko pomiar)wilgotności

2.Sterowanie ogrzewaniem w trybie DZIEŃ/NOC

3.Sterowanie ogrzewaniem w trybie DZIEŃ/NOC

4.Sterowanie ogrzewaniem w trybie DZIEŃ/NOC

5.Sterowanie oświetleniem

6.Sterowanie oświetleniem

7.Sterowanie oświetleniem

W trybie czuwania ważne, żeby na wyświetlaczu były widoczne trzy temperatury i wilgotność

Teoretycznie proste aczkolwiek tylko dla kogoś kto się zna. Ja próbowałem(nadal próbuję) ale jakoś kiepsko mi to idzie 🙁

Link do komentarza
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.