Как правильно отлаживать код аналого-цифрового преобразователя в симуляторе 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 или любые другие методы?