| Форум РадиоКот 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 Буду разбираться. Ещё раз спасибо. Что за чушь? ANCON0=0; - это Си. В АСМ нет такого синтаксиса. В АСМе это присвоение будет таким: clrf ANCON0 или movlw 0x00 movwf ANCON0 И это без учета управления секциями ОЗУ. Вы даже в слове asm делаете ошибку ![]() ЗЫ. Впрочем, я знаю истоки такой чуши. У вас не присоединен хедер контроллера к проекту и потому компилятор ничего не знает про регистры МК. |
|
| Автор: | КРАМ [ Пт окт 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/ |
|


