[51] 89s52 jak zamarza to przemarza

Int0 i int1 zwieram do masy. Wywołuję tym przerwanie, które odwraca bit, który steruje ledą, żeby było widać co i jak.

  1. Tryb bez oszczędności - wszystko jest ok i zgodnie z przewidywaniami.
  2. Uśpienie - przerwanie budzi układ - jest okej, jak wyżej.
  3. Zamrożenie - nie jest okej, klawisze raz dają reakcję, raz nie dają, czasem trzeba mocno wciskać po kilka razy, coś jak by się zawieszało. Według specyfikacji z zamrożenia można wyjść za pomocą int0 i int1, a tu takie jaja. Napięcia okej, próbowałem na zboczach/poziomach, ale skoro działa na uśpieniu okej...

Jakieś sugestie? Albo czegoś nie wiem?

Reply to
Janko Muzykant
Loading thread data ...

Janko Muzykant napisał(a):

A próbowałeś podciągnąć piny int0, int1 do plusa rezystorem? Może są jakieś nieścisłości w specyfikacji.

pozdrawiam Robert

Reply to
robmac

Podciągnąłem i nic. Obgryzłem program do minimum, może ktoś spojrzy.

org 00h sjmp reset

org 03h ;obsługa przerwania int0 cpl p0.0 ;tu siedzi led reti

org 33h reset: clr it0 ;int0 aktywowane poziomem mov ie, #10000001b ;włączone przerwania z int0 petla: mov pcon, #00000010b ;zamrożenie procesora sjmp petla

Zamiana linii: mov pcon, #00000010b ;zamrożenie procesora na: mov pcon, #00000001b ;uśpienie procesora albo jej wywalenie sprawia, że układ zachowuje się logicznie.

PS. ie, pcon, it0 zadeklarowane ja należy ;)

Reply to
Janko Muzykant

Wedle Atmela w 89S52 działają te dwa z wejść int. No i działają tylko średnio chętnie.

Reply to
Janko Muzykant

Wcześniej miałem pętlę opóźniającą w przerwaniu i różne warianty ''mrugania diodą''. Generalnie układ się ''zawiesza'' przy nerwowym gmeraniu przy klawiaturze. Spróbuję jeszcze z kondensatorem, ale znaczące opóźnienia nie będą mi pasowały w aplikacji docelowej, widać taki urok tego wynalazku z zamrażaniem, że do szybkich spraw się nie nadaje. No nic, do urządzeń ''standby'' 51 to nie to.

Reply to
Janko Muzykant

Sorry, nie w przerwaniu, tylko po jego obsłużeniu, pętla na styk klawiatury, zresztą było tam sporo różnych rzeczy, po których wykonaniu (kilkaset ms) urządzenie zamarzało. Klawisze na int0/1 miały właśnie owo urządzenie budzić. Takie samo rozwiązanie na resecie działało okej (metoda znana z dawna, kiedy była to jedyna możliwość budzenia po zamrożeniu). Tylko reset jest jeden i trzeba kombinować, a mnie potrzebne akurat dwa klawisze.

Zresztą jak by był jakiś błąd, to program wariował by także po uśpieniu, a działa okej.

Reply to
Janko Muzykant
Reply to
Patryk Sielski

Sprawdzałem no i różnie :( Czasem zostaje zamrożony (5uA), czasem idzie pełna (katalogowa) para (kilkanaście mA) (6MHz)

Reply to
Janko Muzykant

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.