Как правильно отлаживать код аналого-цифрового преобразователя в симуляторе MPLAB X v5.05

Это продолжение вопроса, заданного в разделе Как запустить файл SCL в MPLAB без кнопки «Запустить SCL».

У меня есть ассемблерный код для PIC18F458, который получает данные из канала 0 (RA0) АЦП и отображает результат на PORTC и PORTD.

Хотя мне удалось убедиться, что в Proteus код работает должным образом, я изо всех сил пытаюсь сделать то же самое в среде симулятора MPLAB X, используя файл SCL, и я подозреваю, что это связано с тем, как текстовые файлы ссылаются на к ней, выложены. (см. ниже)

      testbench for "pic18f458" is
begin
    process is
        file    datafile   : text;
        variable intVar     : integer;
        variable sampling_voltage : integer;
        variable fileStatus : file_open_status;
        variable fileLine   : line;         
        begin
            loop
                report("Analog injection started...");   
                file_open(fileStatus, datafile, "text2.txt", read_mode);
                if fileStatus == open_ok then 
                    report("Reading the values file...");   
                    while endfile(datafile) == false loop 
                        wait until ADCON0.GO_nDONE == '1';
                        report("Conversion started");
                        readline(datafile, fileLine);
                        wait for 400 ns;
                        read(fileLine, intVar);
                        sampling_voltage := intVar; -- sample input voltage
                        wait until ADCON0.GO_nDONE == '0';
                        report("Conversion ended"); 
                        if ADCON1.ADFM == '0' then  -- left justified
                            ADRESH <= sampling_voltage / 4;
                            ADRESL <= sampling_voltage * 64;
                        else                        -- right justified
                            ADRESH <= sampling_voltage / 256;
                            ADRESL <= sampling_voltage;
                        end if;
                    end loop;
                file_close(datafile);
                end if;
            end loop;
        wait;
    end process;
end testbench;

Файл SCL ссылается на 1 из 2 текстовых файлов во время моего сеанса отладки (text.txt и text2.txt), расположенных по-разному. Первый состоит из десятичных чисел от 0 до 255, а второй состоит из десятичных чисел, представляющих напряжения в мВ.

      txt.txt
    128
    192
    238
    255
    238
    192
    128
    64
    17
    0
    17
    64
    128

text2.txt
    250 mV
    500 mV
    750 mV
    1000 mV
    1250 mV
    1500 mV
    1750 mv
    2000 mV
    2250 mv
    2500 mv
    2750 mv
    3000 mv
    3250 mV
    3500 mV
    3750 mV
    4000 mV
    4250 mV
    4500 mV
    4750 mv
    5000 mV

В обоих случаях АЦП, похоже, просто штампует полученные числа, а не преобразовывает их. (Пожалуйста, смотрите изображения ниже)

Это явно нехорошо, так как я получаю значения в регистре ADRES, которые превышают 10 бит, в частности, в отношении моих значений text2.txt.

Результаты ADC с text.txt

Результаты АЦП с text2.txt

Поэтому мой вопрос заключается в том, как мне правильно отладить мой код аналого-цифрового преобразователя в симуляторе MPLAB X v5.05, используя файл SCL или любые другие методы?

0 ответов

Другие вопросы по тегам