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ę

moj pierwszy projekt

Wlosy
-
-
Posty:7
Rejestracja:20 kwie 2004, o 21:48
moj pierwszy projekt

Postautor: Wlosy » 20 kwie 2004, o 21:56

Mam problem. skladam wlasnie moj pierwszy projekt oparty na mikroprocesoze AT89S8252 i natrafiam na coraz nowsze problemy. Skladam zegar i na wyswietlaczu LCD pojawia mi sie godzina 165:165 i data 165-16 i mimo usilnych porb nie potrafie tego zmienic. Czy moglby mi ktos pomoc? dodaje zalacznik schemat pracy i program w bascomie.

Wlosy
-
-
Posty:7
Rejestracja:20 kwie 2004, o 21:48

Postautor: Wlosy » 20 kwie 2004, o 22:03

niemoge wyslac w zalacznikach schematu i programu wiec podaje do nich adres:
www.3000.pl/wlosy/projekt/

Bardzo prosze o jakas pomoc.

Awatar użytkownika
Kamilkozi
-
-
Posty:229
Rejestracja:19 mar 2004, o 11:48
Lokalizacja:Gdańsk
Kontaktowanie:

Postautor: Kamilkozi » 20 kwie 2004, o 22:07

Nie działją mi te twoje linki ([404] File Not Found : Plik nie istnieje
--------------------------------------------------------------------------------
The requested URL /wlosy/projekt/program.bas was not found on this server.
--------------------------------------------------------------------------------
Podany w zapytaniu URL /wlosy/projekt/program.bas nie został odnaleziony na tym serwerze).

Awatar użytkownika
Kamilkozi
-
-
Posty:229
Rejestracja:19 mar 2004, o 11:48
Lokalizacja:Gdańsk
Kontaktowanie:

Postautor: Kamilkozi » 20 kwie 2004, o 22:12

Już ok, ale nie chce mi się teraz analizować kodu.

Wlosy
-
-
Posty:7
Rejestracja:20 kwie 2004, o 21:48

Postautor: Wlosy » 20 kwie 2004, o 22:21

a tak jest drobna poprawka schematu. wyswietlacz jest przelaczony na port 2 (na schemacie jest na 0).postaram sie jak najszybciej poprawic schemat. poprawka ta jest juz uwzgledniona w programie.

Awatar użytkownika
Kamilkozi
-
-
Posty:229
Rejestracja:19 mar 2004, o 11:48
Lokalizacja:Gdańsk
Kontaktowanie:

Postautor: Kamilkozi » 23 kwie 2004, o 16:35

Dlaczego $crystal = 9809333, na schemacie jest kwarc 11,059MHz ($crystal = 11059200).
Niepotrzebne jest też polecenie Config Lcdbus = 4.

Reszta programu nie wskazuje "na oko" żadnych nieprawidłowosci mogacych powodować problem.

Napisz czy może juz uporałeś się z tym?

Wlosy
-
-
Posty:7
Rejestracja:20 kwie 2004, o 21:48

Postautor: Wlosy » 23 kwie 2004, o 20:46

wielkie dzieki za pomoc!jutro poprawie ta wartosc kwarcu (niepamietam ale gdzies znalazlem za ta wartosc odpowiada temu kwarcu,sam sie zdziwilem ale nic)i napisze czy cos sie zmienilo!jeszcze raz wielkie dzieki ze spojrzales na to.

Wlosy
-
-
Posty:7
Rejestracja:20 kwie 2004, o 21:48

Postautor: Wlosy » 25 kwie 2004, o 11:45

Zmienilem w programie wartosc tego kwarcu tak jak mi poradziles i ruszylo troche dalej. Mam problem chyba z migotaniem stykow na przyciskach (tak mi sie zdaje) bo gdy wciskam przycisk np do przejscia do timera to albo widze ze przechodzi do timera i spowrotem do wyswietlania czasu i daty albo odrazu timer rusza i odlicza czs.
Jak mam to poprawic? Probowalem poprawiac program wstawiajac opoznienie 10ms po kazdej lini kodu gdzie jest wciskanie jakiegokolwiek przycisku i nic to nie pomoglo. Moze mam to zrobic w jakiejs petli? Niemam pojecia.Prosze o pomoc!

Wstawilem tak mala pentelke na puszczenie przycisku ale nic to nie pomoglo:

If Prz3 = 0 Then
Waitms 10
If Prz3 = 0 Then
(tu co ma robic)
end if
end if

Taka petla zdaje egzamin czy nie? A moze to nie drgania stykow tylko cos innego?

Awatar użytkownika
Kamilkozi
-
-
Posty:229
Rejestracja:19 mar 2004, o 11:48
Lokalizacja:Gdańsk
Kontaktowanie:

Postautor: Kamilkozi » 27 kwie 2004, o 10:33

Zauważam, że czesto stosujesz polecenia z grupy Wait. Nie jest to najlepsze rozwiazanie, staraj się tak układać program by takich poleceń było jak najmniej. Np. Wait 1 - zwłoka na puszczenie przycisku, a jak ktos będzie trzymał przycisk dłużej, a nawet jak nie to strasznie zwalnie Ci to program.

Odczyt stanu przycisku można zrealizować:

if Prz3 = 0 then
incr x 'zmienna byte
if x = jakaś wartość then (musi być taka by następowało to po ok 30 - 60ms)
coś tam wykonaj
end if
else
x = 0
end if

teraz jeśli ktoś będzie trzymał przycisk cały czas wciśnięty to "cos tam wykonaj" zostanie powtórzone wielokrotnie. Aby temu zapobiec można wprowadzić dodatkowa zmienną bitową, albo(gorzej) użyć instrukcji bitwait, ale wtedy należy pamietać żeby była ona wstawiona dopiero po wszystkich instrukcjach jakie ma wykonać procek po wciśnięciu przycisku(czyli po "cos tam wykonaj")

Problem drgań styków można też wyeliminować przez zewnętrzny filtr RC.

Także moja rada to pozbyć się Wait. Wati używaj tylko dam gdzie to konieczne, a do normalnego odmierzania czasu lepiej użyć jakiegoś licznika (jak ten wyżej z X)

Zauważyłem też w twoim programie następne błędy. Mianowicie błędne użycie instrukcji Exit Do. Instrukcji tej używa się w pętli po spełnieniu jakiegoś warunku, u Ciebie instrukcja ta jest wykonywana pod koniec pętli. W taki wypadku pętla zawsze jest wykonywana tylko raz, a przecież nie po to jest pętla.

krzysio9999
-
-
Posty:1
Rejestracja:2 kwie 2004, o 12:20

LCD

Postautor: krzysio9999 » 4 maja 2004, o 09:13

gdzieś przeczytałem , że miałeś problem z wyświetlaczem LCD, ale go przepiąłęś ibyło wszystko OK. możesz coś bliżej napisać na ten temat? mój też wyświetla tylko prostokąciki...

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 25 gości