_Delay_us() geht nur teilweise!

OP (Firma: Devel Solutions) #664741
Lesenswert?
• ▲
▼
hallo leude,

folgender code:

uint16_t start_conv(uint8_t muxchannel)
{

  uint16_t conv_data;

  if(muxchannel == 1)
  {
    PORTA &= ~(1<<PA2);
    PORTA &= ~(1<<PA3);

  }
  if(muxchannel == 2)
  {
    PORTA = (1<<PA2);
    PORTA &= ~(1<<PA3);

  }
  if(muxchannel == 3)
  {
    PORTA &= ~(1<<PA2);
    PORTA = (1<<PA3);

  }

  _delay_us(8);
...............................]

Die Routine wird 3mal hintereinander aufgerufen und das delay 
funktioniert genau einmal und bei den bei 2 darauffolgenden aufrufen, 
geht es nicht!
Woran zur hölle kann das bitte liegen. Interrupts ausgeschaltet bringt 
an dieser stelle auch nix.

ciao
georg
#664742
Lesenswert?
• ▲
▼
@ Georg Bauerfeind (Firma igus-its) (shorsh)

>Die Routine wird 3mal hintereinander aufgerufen und das delay
>funktioniert genau einmal und bei den bei 2 darauffolgenden aufrufen,
>geht es nicht!

Das Problem liegt sicher woanders. Optimierung eingeschaltet (-O2, -O3 
oder -Os) ?

MFG
Falk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren