Например TDA7294

Форум РадиоКот :: Просмотр темы - Засада с PIC18F25K80
Форум РадиоКот
https://radiokot.ru/forum/

Засада с PIC18F25K80
https://radiokot.ru/forum/viewtopic.php?f=58&t=199340
Страница 1 из 1

Автор:  Sergey_57 [ Чт окт 09, 2025 21:37:29 ]
Заголовок сообщения:  Засада с PIC18F25K80

Здравствуйте, коллеги!
Столкнулся с проблеммой при работе с портом А PIC18F25K80 не работает чтение порта.
Проверено на двух устройствах.
На криворукость не думать.
Смотрел листинг программы, сам пишу на Си.
Там четко перевод входов на вход и чтение откуда надо. Порты В и С читает.
После танцев с бубном Перепаял на 18F2520 (цоколёвка позволяет) и сразу всё заработало.
Хотелось узнать , чего я не знаю. Или баг.

Автор:  Mursik [ Чт окт 09, 2025 21:41:11 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

Может порт (или отдельные линии) по умолчанию включены в альтернативные режимы? (АЦП, компаратор, ШИМ, USART...)

Автор:  Sergey_57 [ Чт окт 09, 2025 21:55:32 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

Да, забыл указать -Выдача с порта идёт. Когда меняю назначение входов естественно.
Но вот замена на 18f2520 без всякой перестройки программы( только добавил 2520.h) решило проблему.
Вашу версию буду проверять.Спасибо.

Автор:  КРАМ [ Чт окт 09, 2025 22:17:42 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

Вашу версию буду проверять.Спасибо.

ANSEL нужно перевести в цифровой режим. По умолчанию он в аналоговом.
На криворукость не думать.
:)))

Автор:  Sergey_57 [ Чт окт 09, 2025 22:46:47 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

ANSEL - Где он. Это вроде 16 ПИК. Искал не нашёл.

У меня стоит setup_adc( ADC_OFF );
Вроде отключил. А как на самом деле.....

Автор:  КРАМ [ Пт окт 10, 2025 04:21:30 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

Причем тут ADC? Речь идет о регистрах порта.
И зачем искать функцию, если есть название регистра?
Возможно в компиляторе он называется ANSELA.
Ну и на дорожку. Вы когда с МК работаете, даташит на него открываете? Кроме даташита на МК есть хедер на него в папках компилятора.

Автор:  veso74 [ Пт окт 10, 2025 07:53:16 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

Цитата:
REGISTER 23-8: ANCON0: A/D PORT CONFIGURATION REGISTER 0

bit 7-0 ANSEL<7:0>: Analog Port Configuration bits (AN7 and AN0)(1)
1 = Pin configured as an analog channel: digital input disabled and any inputs read as ‘0’
0 = Pin configured as a digital port

Код:
ANCON0 = 0x00;  // set all analog pins to digital mode

Автор:  Sergey_57 [ Пт окт 10, 2025 08:41:36 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

Здравствуйте, veso74!
Да похоже в этом всё и дело.
В 2520 этого регистра нет. Потому и работает.
Осталось понять, как к нему попасть через Си.
Могу конечно через АСМ.
Пока микросхемы сдул. и напаял другие 18F2520.
Поди угадай где за этими настройками на Си стоит функция перевода в цифру.
Спасибо за науку.

Спойлер//////// Fuses: VREGSLEEP_SW,VREGSLEEP,INTRC_LP,INTRC_HP,SOSC_LOW,SOSC_DIG
//////// Fuses: SOSC_HIGH,XINST,NOXINST,LP,XT,HSH,HSM,ECH,ECH_IO,RC,RC_IO
//////// Fuses: INTRC_IO,INTRC,ECM,ECM_IO,ECL,ECL_IO,PLLEN,NOPLLEN,FCMEN
//////// Fuses: NOFCMEN,IESO,NOIESO,PUT,NOPUT,NOBROWNOUT,BROWNOUT_SW
//////// Fuses: BROWNOUT_NOSL,BROWNOUT,BORV30,BORV27,BORV20,BORV18,BORM_LOW
//////// Fuses: BORM_MED,BORM_HIGH,ZPBORM,NOWDT,WDT_NOSLEEP,WDT_SW,WDT,WDT1
//////// Fuses: WDT2,WDT4,WDT8,WDT16,WDT32,WDT64,WDT128,WDT256,WDT512
//////// Fuses: WDT1024,WDT2048,WDT4096,WDT8192,WDT16384,WDT32768,WDT65536
//////// Fuses: WDT131072,WDT262144,WDT524288,WDT1048576,CANC,CANB,MSSPMSK5
//////// Fuses: MSSPMSK7,MCLR,NOMCLR,STVREN,NOSTVREN,BBSIZ1K,BBSIZ2K,DEBUG
//////// Fuses: NODEBUG,PROTECT,NOPROTECT,CPB,NOCPB,CPD,NOCPD,WRT,NOWRT,WRTC
//////// Fuses: NOWRTC,WRTB,NOWRTB,WRTD,NOWRTD,EBTR,NOEBTR,EBTRB,NOEBTRB

Автор:  КРАМ [ Пт окт 10, 2025 08:48:12 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

Осталось понять, как к нему попасть через Си.

Это такая шутка?
Вам же написали:
ANCON0=0;
Изображение

Автор:  Sergey_57 [ Пт окт 10, 2025 09:04:09 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

Это не шутка.
В Си это можно сделать только АСМ вставку, что не хотелось.
Типа
acm
ANCON0=0;
end acm
Буду разбираться.
Ещё раз спасибо.

Автор:  Mursik [ Пт окт 10, 2025 09:16:01 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

Не, без асм-вставки это делается. Просто в разных компиляторах разные команды.

Автор:  КРАМ [ Пт окт 10, 2025 09:28:22 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

Это не шутка.
В Си это можно сделать только АСМ вставку, что не хотелось.
Типа
acm
ANCON0=0
end acm
Буду разбираться.
Ещё раз спасибо.

Что за чушь? :facepalm:
ANCON0=0; - это Си. В АСМ нет такого синтаксиса.
В АСМе это присвоение будет таким:
clrf ANCON0
или
movlw 0x00
movwf ANCON0

И это без учета управления секциями ОЗУ.
Вы даже в слове asm делаете ошибку :facepalm:
ЗЫ. Впрочем, я знаю истоки такой чуши. У вас не присоединен хедер контроллера к проекту и потому компилятор ничего не знает про регистры МК.

Автор:  veso74 [ Пт окт 10, 2025 09:49:12 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

Судя по строкам, используемым для конфигурационного слова:
Код:
//////// Fuses: VREGSLEEP_SW,VREGSLEEP,INTRC_LP,INTRC_HP,SOSC_LOW,SOSC_DIG

то используете CCS для PIC? Ето так?
---
Если да, то объявите порт как IO с помощью макросов/функций CCS
Код:
#use fast_io (port)
или
#use standard_io (port)
или
#use fixed_io (port_outputs=pin, pin?)

Если всe же нужны регистры, есть и такой вариант
Код:
#byte ANCON0 = 0xF5D
...
ANCON0 = 0x00;

Изображение
---
Не знаю: вопросы о программном коде без информации о программном коде - это просто догадки ...
В общем, дайте информацию о том, с чем вы работаете: среда написания кода IDE, компилятор, предоставьте копию/фрагмент инициализации, скриншот, иначе это будет похоже на "взгляд фокусника в хрустальный шар" ...
(частично пользуюсь переводчиком БГ->РУ)

Автор:  КРАМ [ Пт окт 10, 2025 13:32:43 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

#byte ADCON0 = 0xFC2
...
ADCON0 = 0x00;

Это не ADCON0, а ANCON0. Первый является регистром АЦП, а второй регистром порта.

Автор:  veso74 [ Пт окт 10, 2025 13:55:06 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

Да, :). Файлов было много. Идея ясна.
F5Dh <- ANCON0
---
#use FIXED_IO( ) достаточно, два варианта делает то же самое:
Код:
.................... #use FIXED_IO(A_outputs = PIN_A0, PIN_A1, PIN_A2, PIN_A3)
0048:  MOVLW  00
004A:  MOVWF  x5D
...
.................... ANCON0 = 0x00;
0056:  CLRF   x5D

Автор:  Sergey_57 [ Вс окт 12, 2025 00:30:36 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

Коллеги, доброй ночи! Два дня посвятил чтению документации.
Да , проглядел. Каюсь. Си немного разбаловал.
Пользуюсь CCS. Сделал ряд конструкций на ней , порт А на выход везде. А тут влип.
Итоговая вставка, Всё заработало.
Код:
#asm
   movlw   0x00
   movwf  ANCON0,1     
#endasm

В кампиляторе была попытка это сделать, есть команда с синтаксисом, но описано не внятно. И не указано как перевести в цифровые входы.
Только как в аналоговые. и не работает.
Но есть конечно , вопросы.
Код:
 #define ANCON0      0xF5d;   

С точки зрения АСМ вы не можете присвоить ANCON0 в команде movwf ANCON0,1 такой адрес.
Код:
MOVWF Move W to f
Syntax: MOVWF f {,a}
Operands: 0 < f < 255
a  [0,1]
Operation: (W) в f

Однако работает с 0xF5d. Банки , как оказалось. роли не играют. При переключении банков всё пишется в нулевой, если адрес 0x5d .
Спросить только на форуме можно. Мои знакомые не в теме.
Ещё раз большое спасибо.

Автор:  КРАМ [ Вс окт 12, 2025 05:33:49 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

Си немного разбаловал.

Может нужно на XC8 перейти? Тогда все сразу наладится и не нужно будет в гамаке и стоя.... :)))

Автор:  Mursik [ Вс окт 12, 2025 09:24:36 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

Коллеги, доброй ночи! Два дня посвятил чтению документации.
Да , проглядел. Каюсь. Си немного разбаловал.
Пользуюсь CCS. Сделал ряд конструкций на ней , порт А на выход везде. А тут влип.


Вы не то читаете видимо. Зачем так сложно, если есть базовая команда:

setup_adc_ports();

set_analog_pins(NO_ANALOGS);

Вам надо описание компилятора почитать. И всё.

https://www.ccsinfo.com/downloads/ccs_c_manual.pdf

Автор:  Sergey_57 [ Вс окт 12, 2025 14:45:52 ]
Заголовок сообщения:  Re: Засада с PIC18F25K80

Уважаемый, Mursik!
Проверил, всё работает.
Код:
 set_analog_pins(NO_ANALOGS);

Решило проблему.
Вот сижу и думаю, как упустил. Собирал из нескольких проектов.
Спасибо.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/