Hy, ich arbeite gerade an meinem roboter. Der verwendete controller ist ein PIC18F6520. Das problem ist das der ADC sich selber immer beeinflusst. Wartezeit sollte eigentlich nicht wenig zu sein.

Code:
for(int i=0;i<=10000;i++);
die Initialisierung (hab den code von ein paar init-funktionen auch herauskopiert:

Code:
    // PORT-Konfiguration

    TRISA   = 0b11111111;   // 1...Eingang
    TRISB   = 0b11111101;   // 0...Ausgang
    TRISC   = 0b11111001;
    TRISD   = 0b11111111;
    TRISE   = 0b11100001;
    TRISF   = 0b11111111;
    TRISG   = 0b11100000;

    // PORT-Reset

    PORTA   = 0x00;
    PORTB   = 0x00;
    PORTC   = 0x00;
    PORTD   = 0x00;
    PORTE   = 0x00;
    PORTF   = 0x00;
    PORTG   = 0x00;

    // ADC

    ADCON0  = 0b00000001;   // AD-Enable
    ADCON1  = 0b00000000;   // alle enable
    ADCON2  = 0b10000110;   // Rechtsbündig, FOSC/64

    // PWM

    Engine1Stop();              // Sorge dafür dass die Motoren nicht anlaufen
    Engine2Stop();
    Engine3Stop();
    PR4     = 0xFF;             // PWM-Periode  // 2441.4Hz
    T4CON   = 0b00000111;       // Prescaler 1:16, Timer 2 Enable
    Engine1PWM(0xFF);           // Setze die PWM-Ports auf "Vollgas"
    Engine2PWM(0xFF);
    Engine3PWM(0xFF);
    CCP3CON = 0b00111100;       // PWM Enable   // Duty zykle 1 0
    CCP4CON = 0b00111100;       // PWM Enable   // Duty zykle 1 0
    CCP5CON = 0b00111100;       // PWM Enable   // Duty zykle 1 0

    PR2     = 0b11111001;
    T2CON   = 0b00000111;
    CCPR2L  = 0b01111100;
    CCP2CON = 0b00111100;

    // USART

    TXSTA   = 0b00100100;       // BRGH=1
    RCSTA   = 0b10010000;
    SPBRG   = baudrate;         // Baudrate
Das problem ist dass einerseits, dass alle ADC von AD9 beeinflusst werden (an AD9 ist ein Sharp-Sensor, die anderen AD sind noch nicht alle connectet.

Und anderseits, wenn ich ADCON1 nur bis AD9 einstelle, ich die Digitalwerte von RF5 und RF6 trotzdem nicht lesen kann. Es liegt aber ein korrektes signal an.

hab keinen plan mehr deswegen, brauche aber die pins. RF5 kann ich analog einlesen, aber das signal wird dann von AD9 zu stark verändert. Alle ADC eingänge sind mit mindestens 270R angeschlossen, teilweise aber mit mehreren K (bis 100K). Könnte das das problem sein?

mfg. pointhi