Bascom - projekt - gdzie jest błąd? POMOCY!

Sep 27, 2004 8 Replies

Pomocy, programik nie działa.



Zrobiłem projekt sterownika do pompy przy piecu i fajnie działa. Ale skończyły mi się procesory ze starych zapasów (seria z 1996) i kupiłem nowe. Kupiłem 5 sztuk każdy z innej serii (z 1998, i nowe z 2003) Programator MAX nie chce ich zaprogramować (wywala się na losowo wybranej komórce) ale Willem nie robi problemów.



formatting link
W linku jest schemat układu i poobcinane źródło do samego programu głównego. Wygląda to tak:



- włączany jest timer który generuje przerwanie co 250uS



- w obsłudze przerwania są zaszyte liczniki które odliczają czas na odczyty temperatury z DS1821 oraz obsługa wyświetlaczy



teraz w pętli głównej:



- po wystartowaniu liczników odmierzany jest czas około 3,5 sekundy, po którym wysyłana jest komenda konwersji temperatury do DS1821



- po kolejnych 1,5 sekundy licznik przekracza wartość 999 i jest skok do podprocedury odczytującej temperaturę.



W czym problem? ...po osiągnięciu temperatury TLO następuje włączenie przekaźnika (stan H na P3.5) który uruchamia pompkę.. liczniki zię zerują i nastepuje odmierzanie znowu czasu 3,5sek - pompka pracuje dalej. Potem kolejne 1,5sek i następuje aktualizacja temperatury oraz wyłączenie pompki !!! (stan L na P3.5). Dajej to już jest klepanie przekażnikiem:



- 3,5 sek wyłączony przekaźnik (po aktualizacji temp)



- na 1,5 sek się włącza (po wysłaniu komendy startu konwersji)



- wyłącza się znowu po odczycie i aktualizacji temperatury.



Co jest grane? Zrobiłem próbę i zanegowałem P3.5. Tzn poniżej temperatury włączenia jest stan wysoki a po osiągnięciu jej niski. No i klepie jak jest niska temperatura, a po przekroczeniu jej ustawia się stan niski i ciszaa. Coś nie tak ze stanem wysokim jest. Ale co?



Pomocy... na starej kości z 1996 roku wszystko działa. Nowych sprawdziłem w sumie 8 sztuk i na wszystkich to samo. Programator MAX firmy ACS się sypie a po zaprogramowaniu Willemem takie krzaki.


WItam ponownie.

Pozakładałem ręczne pułapki i... przekaźnik puszcza w momencie wykonywania podprogramu odczytu temperatury, a dokładnie w trakcie jej odczytu z DS:

Get_temp: 1wreset 1wwrite &HAA ' odczytaj temp Temp_buf = 1wread()

wie ktoś dlaczego??

Użytkownik "Henry(k)" snipped-for-privacy@op.pl napisał w wiadomości news:cj8scn$2q3$ snipped-for-privacy@nemesis.news.tpi.pl

Nie wiem dlaczego. A tym bardziej nie wiem dlaczego na starym Atmelku ma działać a na nowych nie. Ale... Czy nie masz jakiegoś konfliktu pomiędzy obsługą przerwań a bascomowymi

1Wire ? Nie wiem jak te funkcje są zrealizowane w Bascomie, ale biorąc pod uwagę szerokść szczelin czasowych w 1Wire (AFAIR <15us, 15...60us 120...480us) nie da się ich pogodzić z obsługą przerwań co 250us. Tzn. najprawdopodobniej bascom na czas obslugi 1Wire musi wylączyć przerwania. Zastanów się np. co cię dzieje w razie zgubienia jednego..kilku przerwań od timera.

Użytkownik "Marek Dzwonnik" <mdz@WIADOMO_PO_CO_TO.message.pl> napisał w wiadomości news:4157f8d6$ snipped-for-privacy@news.home.net.pl...

No ok. Wyłączam przerwania na czas trwania odczytu temperatury:

Co do atmelków to faktycznie jest różnica miedzy starą a nową wersją (nastąpiła zmiana technologii). W nowych wersjach np. w uśpieniu był duży prąd rzędu 100uA, który cały czas się zmieniał. Nie wiem czy już to poprawili bo od kilku lat nie używam tych procesorków. Co do twojego projektu to zmieniłbym trzy rzeczy. Przede wszystkim powinieneś podłączyć masę do stabilizatora, po drugie spróbować podwiesić do

+5V nóżkę P3.5 przez rezystor np. 22k. Po trzecie spróbuj dać histerezę w procedurze porównania temperatur. Kiedyś robiłem regulator temperatury i też o tym zapomniałem. W okolicach temperatury granicznej przekaźnik mi szalał bo pomiar raz był równy temperturze granicznej a raz niższy (oczywiście dopóki temperatura na skutek załączonego ogrzewania nie podniosła się na tyle żeby chwilami nie spadać poniżej założonej granicy). A.S.

Użytkownik "As" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:cj94s6$j7d$ snipped-for-privacy@atlantis.news.tpi.pl...

oczywiście jest, tylko tak programik wyrysował :-)

Nie podwieszałem, bo port ma wewnętrzne rezystory

histereza jest, tylko jak napisałem to jest fragment z którego usunąłem wszystko co mogłoby zamącić cały program.

(...)

pytanie pomocnicze (z ukrytym rozwiazaniem problemu): jakie jest napiecie w stanie H na pinie P3.5 ?

pozdrawiam entrop3r

Użytkownik "entroper" snipped-for-privacy@CWD.spamerom.poczta.onet.pl> napisał w wiadomości news:cj98tg$3mr$ snipped-for-privacy@achot.icm.edu.pl...

Ja pi***e DZIAŁA

Dziękuję głównie As i Tobie !

Podciągnąłem i działa.

Napięcie na nodze było raz w stanie wysokim a raz w stanie niewiadomojakim. Nie rozumiem tego gdyż:

- wersja z 1996 roku proca działa miodzio

- port ma rezystory pull-up

czyżby rezystor raz był a raz go nie było w zależności od wykonywanego fragmentu kodu?

niewiadomojakim.

pewnie przemigrowali w strone gestszych struktur i wydajnosc portu sie zmniejszyla (i cholera wie, co sie jeszcze spieprzylo przy okazji)- BTW - w datasheecie mam podana bardzo niska wydajnosc portu (prad wyplywajacy) - ten rezystor byl i tak "na granicy". A bascom pewnie uzywa do sterowania pinem 1-wire instrukcji read-modify-write, co powoduje wlasnie takie sensacje.

pozdrawiam entrop3r

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required