Hallo Leute. Ich versuche gerade den umstieg auf PICs (bitte hierzu noch keine Kommentare). Jetzt bin ich aber leider an einer Stelle angekommen, an der ich nicht mehr weiter weiß! µC: PIC18F2550 Board: PICDEM 2 Plus Programmer: ICD2 Takte: ext 4MHz Oszillator Compiler: c18 (v3.40) Library: MPLAB C18 Lib Auf dem Board ist ein Poti am RA0/ANA0 angeschlossen. Ich versuche den Wert des ADCs auszulesen und via USART auszugeben. Der UART funktioniert auch so weit! Nur mein ADC liefert mir nur die Werte 0 oder 1023 (was ja das min bzw. max des darstellbaren Wertes darstellt) Hat einer von euch einen heißen Tipp für mich? Vielen Dank für eure Hilfe Hansi
1 | #include <p18f2550.h> |
2 | #include <delays.h> |
3 | #include <usart.h> |
4 | #include <stdio.h> |
5 | #include <stdlib.h> |
6 | #include <adc.h> |
7 | |
8 | #pragma config FOSC=XT_XT |
9 | #pragma config PWRT=ON //Power on timer |
10 | #pragma config BOR=OFF //Brown out reset |
11 | #pragma config WDT=OFF //Watchdog timer |
12 | #pragma config LVP=OFF //Low voltage progr. |
13 | #pragma config MCLRE=ON //Master clear reset |
14 | |
15 | void delay_ms(int ms); |
16 | void INIT_IO(void); |
17 | |
18 | void delay_ms(int ms) |
19 | { |
20 | int z; |
21 | for (z=1; z<ms; z++) |
22 | { |
23 | Delay10TCYx(25); |
24 | } |
25 | } |
26 | |
27 | void INIT_IO(void) |
28 | { |
29 | PORTA = 0x00; |
30 | TRISA = 0x10; //Port A Bit 4 = input |
31 | PORTB = 0x00; |
32 | TRISB = 0x00; //Port B all Bits = Output |
33 | } |
34 | |
35 | void main (void) |
36 | { |
37 | int result; |
38 | char temp_str[]="00000"; |
39 | |
40 | INIT_IO(); |
41 | |
42 | OpenUSART( USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 25); |
43 | OpenADC( ADC_FOSC_2 & ADC_RIGHT_JUST & ADC_0_TAD, ADC_CH0 & ADC_INT_OFF,1); |
44 | Delay10TCYx( 50 ); // Delay for 50TCY |
45 | |
46 | while (1) |
47 | { |
48 | if(!(PORTA & 0x10)) |
49 | { |
50 | ConvertADC(); |
51 | while( BusyADC() ); // Wait for completion |
52 | result = ReadADC(); // Read result |
53 | itoa(result, temp_str); |
54 | putrsUSART((const rom far char *)"\n\rADC"); |
55 | putsUSART(temp_str); |
56 | while(!BusyUSART()); |
57 | } |
58 | else |
59 | { |
60 | delay_ms(1000); |
61 | PORTBbits.RB3 = 1; |
62 | delay_ms(1000); |
63 | PORTBbits.RB3 = 0; |
64 | } |
65 | } |
66 | CloseUSART(); |
67 | CloseADC(); |
68 | } |