Микроконтроллер (PIC16F1827) АЦП с шифрованным выходом с MCC в MPLAB - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь построить АЦ-преобразователь из потенциометра в Arduino.Я пытаюсь изучать MCC в MPLAB одновременно.До сих пор я сгенерировал код, который соответствует моему PIC (я думаю ...).Моя проблема сейчас в том, что мой битовый вывод неверен.Это то, что мой PIC16F1827 настроен (само изображение) enter image description here

RA0 = вход, RB1 и RB2 = EUSART и RB0, RB3, RA7, RA6, RB7, RB6, RB5,RB4 = выход.

Мой основной файл выглядит так (se code).Я получаю вывод, но он представлен неправильно, и я не могу понять, почему ...

char ADC_temp_in;
    while (1) //Infinite Loop
    {
        // Add your application code
        printf("pot_value =%d\r\n", ADC_GetConversion(channel_AN0_ADC));
        ADC_temp_in = ADC_GetConversion(channel_AN0_ADC);  // temp
        PORTB = ADC_temp_in;                  //Write Lower bits to PORTB
        PORTA = ADC_temp_in>>6;               //Write Higher 2 bits to PORTA
        __delay_ms(100);            //Delay     
    }

VREF + = 5 В и подключен напрямую к VDD.

Моя цель - иметь RB0как LSB и RA7 как MSB с разностью напряжений 0-5 В с помощью потенциометра.

1 Ответ

0 голосов
/ 04 марта 2019

Две вещи:
ADC_temp_in должен был быть в 16-битном значении, чтобы содержать значение больше 8 бит.
Так что попробуйте: uint16_t ADC_temp_in;
Конечно, ваша функция ADC_GetConversion должна была вернутьсяuint_16 значение.

Другое дело, чтобы получить MSB, вам нужно было сдвинуть свое значение 8 раз вправо.

PORTA = ADC_temp_in>>8;
...