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.
die Initialisierung (hab den code von ein paar init-funktionen auch herauskopiert:Code:for(int i=0;i<=10000;i++);
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.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
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







Zitieren

Lesezeichen