AVR -prellmentesites (szoftware problema)
safi
safi at externet.hu
Thu May 10 13:07:46 CEST 2007
Szia!
Prellmentesíts szoftverbol !
Pl.:
- elso élváltozásra végrehajtani a funkciót, majd valamennyi ideig nem
figyelembevenni az élváltozásokat (100-200 ms-ig) Így rögtön bill.
lenyomásra muködik a dolog.
- elso élváltozáskor érzékeled a bill. lenyomását, x ideig nem vizsgálod a
bill.-ut (50-200 ms), majd megint megnézed, és vársz a felengedésre. Ha
felengedték, akkor végrehajtod a funkciót. Így bill. felengedésekor fog
muködni.
(Egyik esetben sem kell kondi.)
Természetesen elképzelheto még bármilyen más megoldás is.(hardveres is
nagyon sokféle !)
safi
----- Original Message -----
From: "Pal Lukacs" <ekegep at yahoo.com>
To: <elektro at tesla.hu>
Sent: Thursday, May 10, 2007 12:52 PM
Subject: AVR -prellmentesites (szoftware problema)
> Sziassztok!
>
> Egy pici segitseget szeretnek kerni Toletek.
>
> Epitettem egy nixie orat.
> ATmega8 PORTD: 0-4 bitjet hasznalom bemenetnek,ezeken van 5
> nyomogomb,amelybol ketto az INT0 -es INT1 -en van.Ezek a +-
> nyomogombok.Mindegyik gomb belso felhuzoellelallassal van es 10uF
> prellmentesitessel.
> A PORTD 5,6,7 biteket MUX vezerlo biteknek hasznalom.
>
> A kondenzatoros prellmentesites ellenere oriasi a prell.(az orat
> keptelenseg beallitani)
> Probalkoztam 47uF kondival is.Mivel gombnyomaskor (L szint) van az
> INTerrupt,mikor a nyomogombot elengedem,akkor egy kis ideig nincs prell
> aztan kezdenek szaladni a kijelzon a szamok.
> Ekkor jottem ra hogy a gond szoftverhiba.A MUX vezerlo kodreszlet valt ki
> INTerruptokat mivel ugyanazon porton vannak a nyomogombok es a MUX,igy
> valami osszeakad.
> Probalkoztam mar biteltolasos,es -vagy mindefele modszerekkel,eredmeny ua.
>
> Jelenlegi MUX vezerlo kodreszletet beszurom:
>
> main()
> {
> ...
> for (;;)
> {
> if (cnt1 == THRESHOLD) //4ms
> {
> cnt1 = 0;
> //wdt reset
> __asm__ __volatile__ ("wdr"); //reset WDR
>
> if (nixie > 3)
> {
> nixie = 0;
> }
> //mux
> //csovek jobbrol-balra 0-3ig.
> switch (nixie)
> {
> case 0:
> PORT_DATA_OUT = perc % 10; //0. csonek adat
> PORT_MUX_AND_BUTTONS = 0x1F; //elozo MUX vezerlo biteket
> toroljuk; -->
> // 0. cso anod kapcsolva.
> break;
> //1. cso
> case 1:
> PORT_MUX_AND_BUTTONS = 0xFF; // mindegyik cso kikapcs
> PORT_DATA_OUT = perc / 10; //1. csonek adat -> katod testre
> PORT_MUX_AND_BUTTONS &= 0x3F; //port:5-7.bit: 5.bit H; 1
> cso anod bekapcs
> break;
> //2.cso
> case 2:
> PORT_MUX_AND_BUTTONS = 0xFF;
> PORT_DATA_OUT = ora % 10; //2. csonek adat
> PORT_MUX_AND_BUTTONS &=0x5F; //port:5-7.bit : 6. bit H;
> 2. cso anod bekapcs
> break;
> //3.cso
> case 3:
> PORT_MUX_AND_BUTTONS = 0xFF;
> PORT_DATA_OUT = ora / 10; //3. csonek adat
> PORT_MUX_AND_BUTTONS &=0x7F; //port:5-7.bit : 5.-6. bit
> H; 3. cso anod bekapcs
> break;
> }
> nixie++; //kovetkezo cso.
> }
> }
> }
>
>
> Segitsegeteket elore is koszonom!
>
>
> ---------------------------------
> Ahhh...imagining that irresistible "new car" smell?
> Check outnew cars at Yahoo! Autos.
> -----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list