Hallo zusammen,

ich habe mir von http://www.e-robotix.de/epages/61660837.sf die ATMEGA32 - Bluetooth - Platine gekauft und sie mit einer eigenen Erweiterung auf Basis der IR-Entfernungsmessung (sh. Anlage) ausgestattet.

Die PINs meiner Platine habe ich so belegt:

- Anoden beider IR-LEDs auf PIN21 (PD7) des ATMEGA32
- Kathode rechte IR-LED auf PIN2 (PB1) des ATMEGA32
- Kathode linke IR_LED auf PIN8 (PB7) des ATMEGA32
- OUT vom SFH5110 auf PIN7 (PB6) des ATMEGA32

Die Software sieht so aus (Codeschnipsel):

Code:
    uint8_t objekt_sichtbar_rechts(uint8_t distance_r)
    {
       uint16_t j,z;
       
       PORTB |= (1 << PB1);   // PB1 auf HIGH (LED ausschalten)
          DDRB |= (1 << DDB7);   // Port B7 als Ausgang
          PORTB &= ~(1 << PB7);   // PB7 auf LOW

       OCR2  = 254-distance_r;   // wenn OCR2=0xFE dann Objekt sehr nahe
       z=0;
       for(j=0;j<30;j++) // loop time: 5ms
       {
          if (PINB & (1 << PB6))z++;
          Sleep(6); // 6*Sleep(6)=1ms
       }
       if (z>=29) return FALSE; // Objekt nicht gefunden
       else return TRUE;
    }

    uint8_t objekt_sichtbar_links(uint8_t distance_l)
    {
       uint16_t i,y;

       PORTB |= (1 << PB7);    // PB7 auf HIGH (LED ausschalten)
          DDRB |= (1 << DDB1);   // Port B1 als Ausgang
          PORTB &= ~(1 << PB1);   // PB1 auf LOW

       OCR2  = 254-distance_l;   // wenn OCR2=0xFE dann Objekt sehr nahe
       y=0;
       for(i=0;i<30;i++) // loop time: 5ms
       {
          if (PINB & (1 << PB6))y++;
          Sleep(6); // 6*Sleep(6)=1ms
       }
       if (y>=29) return FALSE; // Objekt nicht gefunden
       else return TRUE;
    }
So weit so gut, aber die Entfernungsmessung funktioniert nicht, auf OUT des SFH5110 messe ich z. B. keine Spannung.

Bitte um Tipps und Hinweise was ich hier falsch gemacht habe.