Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

projekt w BASCOM i 'nowe' 89C2051 - gdzie mam błąd?

Henry(k)
-
-
Posty:5
Rejestracja:27 wrz 2004, o 10:34
projekt w BASCOM i 'nowe' 89C2051 - gdzie mam błąd?

Postautor: Henry(k) » 27 wrz 2004, o 10:55

Pomocy, programik nie działa na nowych procesorach.

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.

W załączniku 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 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
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?

Edit: nie ma załącznika więc daję link: http://www.henrico.republika.pl/gdzie_blad.zip

Henry(k)
-
-
Posty:5
Rejestracja:27 wrz 2004, o 10:34

Postautor: Henry(k) » 27 wrz 2004, o 12:06

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:

Kod: Zaznacz cały

Get_temp: 1wreset 1wwrite &HAA Temp_buf = 1wread()
wie ktoś dlaczego?? No i dlaczego wykonanie kodu:

Kod: Zaznacz cały

Stop Timer0 1wreset 1wwrite &HEE Licz_odc = 701 Start Timer0
włącza go spowrotem? :?

Henry(k)
-
-
Posty:5
Rejestracja:27 wrz 2004, o 10:34

Postautor: Henry(k) » 27 wrz 2004, o 16:09

Ha :!:

Mieżyłem napięcie na P3.5. 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?

Henry(k)
-
-
Posty:5
Rejestracja:27 wrz 2004, o 10:34

Postautor: Henry(k) » 28 wrz 2004, o 15:41

A czy wogóle ktoś sprawdzał co właściwie kryje się pod komendami obsługi 1wire? Bo może jest tam taki misz-masz że lepiej jednak zacząć te proste programy w asm także pisać. Coś słyszałem że wyłączają obsługę przerwań na przykład.

PS. jakieś ciche to forum :D

Arrek
-
-
Posty:117
Rejestracja:18 wrz 2003, o 20:41
Lokalizacja:wawa

Postautor: Arrek » 28 wrz 2004, o 16:18

PS. jakieś ciche to forum :D
Zauwazylem, ze ucichlo gdy zrobilo sie zimno, widocznie wszyscy zapadaja w sen ziomowy, brrr :D.

GasM
-
-
Posty:92
Rejestracja:4 lut 2004, o 11:57

Postautor: GasM » 29 wrz 2004, o 08:54

dziwi mnie takie działanie (dla mnie C2051 z początku wieku i z jego końca muszą być takie same - standard 8051).
jedyne wytłumaczenie to poszukaj errat do tego procka na stronie atmela, to może dowiesz się co zmienili.

GasM
-
-
Posty:92
Rejestracja:4 lut 2004, o 11:57

Postautor: GasM » 29 wrz 2004, o 09:13

A czy wogóle ktoś sprawdzał co właściwie kryje się pod komendami obsługi 1wire? Bo może jest tam taki misz-masz że lepiej jednak zacząć te proste programy w asm także pisać. Coś słyszałem że wyłączają obsługę przerwań na przykład.
to by ci wyłączały też w tamtym procku. z tego co widzę to prądowo nie daje rady
podepnij tam rezystor 4,7K do Vcc pod linie P3.5 - pomoże.

po za tym ja bym aż tak bezpośrednio nie podpinał LEDów do procka, jak możesz zmienić płytkę to wepnij tam ULN2803 i drabinkę rezystorów między ULN a prockiem, jeszcze bardziej pomoże. a ósme wyprowadzenie do buczka.

Henry(k)
-
-
Posty:5
Rejestracja:27 wrz 2004, o 10:34

Postautor: Henry(k) » 29 wrz 2004, o 09:52

Rezystor podpiełem i pomogło.

A co do ledów to port spokojnie daje sobie rady i nic nie jest procesorowi, gdyż jeden egzemplarz pracuje już 2 lata non-stop i mierzy temperaturkę.
Całość bierze 50 do 70mA przy włączonym przekaźniku. Buczek 7mA przy 12V to przy 5V pewnie z połowę tego.

A errat nie ma do tego procesorka.

Pozdrawiam.

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 11 gości