avr-gcc ,hazudik az if:-)

Auth Gábor auth.gabor at javaforum.hu
Fri Sep 8 08:47:22 CEST 2006


Halihó!

Pal Lukacs ezt írta:
>  Az lcd_delay(1) 1 ms -t kesleltet,igy mar kiertekelodik az if
> rendesen. Lehet hogy kevesebb kesleltetes is elegendo lenne?

  Szinte biztos, hogy prell okozza. Próbáld meg megszámolni végtelen 
ciklusban a gomb lenyomását és írasd ki valahova (LCD, LED sor, stb). 
Meg fogsz lepődni, a sima határozottan billenő mikrokapcsoló az ATmega 
belső frekvenciájával 5-6-ot prellez, ha 16MHz-en megy az MCU, akkor ez 
néha felmegy 20-25-re is. Érdemes erre külön TIMER-t indítani, amely 
egy tömbbe beolvassa és prellmentesíti az összes bemenetet. És a 
programodban már ebből a tömbből kezeled az értékeket, de itt is úgy, 
hogy egy _külön_ változóba kiveszed a tömbből és azt olvasgatod, ha 
többször is kell, mert aljas és galád módon az if kiértékelése közben 
is befuthat a TIMER megszakítás, és akkor csalhat az if.

  MCU esetén kicsit bele kell látni a háttérbe is, mert sok hibát 
okozhatnak ezek... ha szoftveresen végképp nem tudom megoldani, akkor 
én ilyenkor átrohanok az infó tanáriból az elektró tanárbia, és ott az 
elektrós kollégák konzíliumot tartanak a probléma felett... néha ők sem 
tudnak megoldást... :)
-- 
http://www.javaforum.hu -=- http://www.enaplo.hu
Auth Gábor -=- FreeBSD 5.4 -=- http://bsd.lap.hu
http://www.javaforum.hu/web/authgabor/



More information about the Elektro mailing list