Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Zaehlervariable springt auf 3442 Kategorie: Programmierung C (von Endress - 8.12.2011 13:35)
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board, Pro-Bot128
Wenn Counter_KWS auf 59 springt, erhalte ich statt der erwarteten '2'
eine '3442' beim zweiten Durchlauf kommen wieder exakt 3400 dazu... Warum ?
Manchmal sinds auch 1000 oder 5500 ... dieselbe Zeile steht weiter unten im
Code nochmal und da zaehlt er brav 1 dazu !?

Port_DataDirBit(24,0);  // PortD.0 Eingang

Irq_SetVect(INT_0,IRQ_KWS); // IRQ 0 Kurbelwellensensor
Ext_IntEnable(0,2);  // Interrupt bei fallender Flanke

void main(void)
{

int kw_umdr;

kw_umdr=1;

while(1)
{  

switch(Counter_KWS)
{
case 59:
{
   Port_WriteBit(Z1_rot,0);
   kw_umdr=kw_umdr+1;
   if(kw_umdr==5)
   {
      Zylinderabschaltungsflag=0;
   }
}break;
}
}

void IRQ_KWS(void)
{
      int irq;
      irq = Irq_GetCount(INT_0);
      Counter_KWS= Counter_KWS+irq;
      Msg_WriteText("KWS:");
      Msg_WriteInt(Counter_KWS);
      Msg_WriteText(" ");
      Msg_WriteInt(kw_umdr);
      Msg_WriteText("    ");
      Msg_WriteChar(13);
}


    Antwort schreiben


Antworten:

Re: Zaehlervariable springt auf 3442 (von Endress - 8.12.2011 14:00)