AVR -prellmentesites (szoftware problema)

Pal Lukacs ekegep at yahoo.com
Thu May 10 12:52:46 CEST 2007


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.


More information about the Elektro mailing list