Перейти к содержанию

Общие вопросы по PIC-микроконтроллерам


NebsteR

Рекомендуемые сообщения

очередной ученик пастера?

Возникла проблема mplab генерирует кривой код ,пример:
нечего на зеркало пинять , еж ли руки кривые....

1. все регистры специального назначения описаны в инклюде, который подключается в начале кода, у вас его не подключено... там же к стати описываются флаги F & W , оные в коде у вас не описаны...

2. бит конфигурации описывается специальными словами ,а не набором магических цифр...

3. у что вы хотите увидеть?, если по коду RB1=0 только 3маш.цикла или 3мкс при Fosc=4МГц

ЗЫ откройте темповский файл лежащий в папках мплаба по пути c:\Program Files\Microchip\MPASM Suite\Template\Code\16F84ATEMP.ASM и посмотрите как оформляется код на ваш МК...

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

У товарисча вообще написан бред сивой кобылы.

Вызов есть, а возврата нет.

Прежде чем смотреть в протезе, проще посмотреть ПО ШАГАМ в симуляторе мплаба.

И сразу станет ясно кто чего там неправильно накомпилировал...

Изменено пользователем my504

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Возврат есть ,это я криво скопировал,если я не ошибаюсь W определяеться автоматически? На счот паузы не имеет значения результат один и тотже, контроллер зависает после возврата в 0вой банк . НО сегодня случайно нашёл решение, стоило добавить оду строку и всё заработало пример :

LIST P=PIC16F84A

__CONFIG 0x3FF1

STATUS EQU 0x03

PORTB EQU 0x06

TRISB EQU 0x06

Reg_1 EQU 0x0C

Reg_2 EQU 0x0D

Reg_3 EQU H'0E'

org 0

bsf STATUS,5

clrf TRISB

bcf STATUS,5

clrf portb вот эта строка

m1 bsf portb,1

call Pause

clrf portb

call pause

goto m1

;delay = 500000 machine cycles

Pause movlw .85

movwf Reg_1

movlw .138

movwf Reg_2

movlw .3

movwf Reg_3

wr decfsz Reg_1, F

goto wr

decfsz Reg_2, F

goto wr

decfsz Reg_3, F

goto wr

return

end

Обьяснений етому не нашёл , что это такое и нормально ли?

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Обьяснений етому не нашёл , что это такое и нормально ли?

лапшу на уши не вешай!!!!

было

	 r1			 bsf PORTB,1
						 Call Pause
						 bcf PORTB,1
						 goto r1

стало

m1		 bsf portb,1
		 call Pause
		 clrf portb
		 call pause // вторую паузу духи надули?
		 goto m1

Ссылка на комментарий
Поделиться на другие сайты

ОК ,убираем "духов с паузой " и чо видим? А видим высокий уровень на RB1 т.к.:'' что вы хотите увидеть?, если по коду RB1=0 только 3маш.цикла или 3мкс при Fosc=4МГц'' убираем clrf portb и зависаем с высоким на RB0 RB1 RB2 RB7 , Если не знаеш чо ето так и скажи и не надо на "духов" пинять.

Ссылка на комментарий
Поделиться на другие сайты

Можно я отгадаю, что у Вас в схеме есть подтяжка пинов к питанию...

Есть такая штука, которая называется RMW (чтение-модификация-запись).

В МК (в большинстве МК, скажем СТМ32 к этому правилу не относится) нет прямой адресации отдельных пинов порта. Это не позволяет архитектура. Прочесть или записать можно только ВЕСЬ БАЙТ.

Поэтому для модификации отдельного байта ФАКТИЧЕСКИ контроллер сначала читает ВЕСЬ БАЙТ, затем модифицирует ОТДЕЛЬНЫЙ БИТ (обычно маской на этот бит), а затем ЗАПИСЫВАЕТ результат модификации ОБРАТНО В РЕГИСТР (в Вашем случает порт).

Но у младших ПИКов нет отдельного регистра выходной защелки (LAT) для чтения и чтение происходит прямо с ПИНОВ контроллера (PORT), поэтому, если Вы подвесили пины на питание через подтяжку, читаться будет ВСЕГДА ЕДИНИЦА. Модификация происходит по одному биту, а перезапись единиц ВО ВСЕ ОСТАЛЬНЫЕ.

То есть дело не в первоначальном сбросе порта, а в сбросе порта В ЦИКЛЕ.

Изменено пользователем my504

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

убираем clrf portb и зависаем с высоким на RB0 RB1 RB2 RB7 , Если не знаеш чо ето так и скажи и не надо на "духов" пинять.

вот как раз духи и подсказывают, что насилуете вы не живой камень , а модель в протезе...

а собственно в нем по дефолту при инициализации МК регистр portb = 10000111 , что соответствует таблице 6-4 даташита о случайном состоянии регистра при подаче питания... в протезе это можно менять в настройках МК....

ЗЫ а ЧМЗ здесь ни причем....

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Всем привет! Подойдет ли прошивка hex для микроконтроллера pic16f627 на микроконтроллер pic16f628a? без деассемблирования и переделки?

tanksmile.gif

За отечественную технику!

Ссылка на комментарий
Поделиться на другие сайты

  • 5 недель спустя...

Я новичок в программировании на Ассемблере для РIC, но уже имею с десяток рабочих устройств собственной разработки.

Прошу помочь с проблемой. Есть рабочая программа для PIC16F628, опрашивает кнопки, читает датчик DHT22, отображает данные на 7-сегм индикаторе, управляет релюшкой.

Память программ использована на четверть, не больше. Используется прерывание по переполнению TMR0 (для динамической индикации). Содержимое регистров STATUS и W на время прерываний сохраняется, сторожевой таймер обнуляется.

НО, на данном этапе усовершенствования, достаточно мне в тело программы добавить один оператор, даже NOP, как контроллер начинает зависать и перезагружаться. Без NOPа работает безукоризненно, с NOPом - зависает. Причем NOP может быть вставлен в разные места, где он никак влиять не должен.

Возможно, кто то сталкивался с подобным, прошу подсказать возможные причины. Заранее благодарен.

Ссылка на комментарий
Поделиться на другие сайты

сбой при переходе страниц памяти ...

В PIC16F628 2 кБ памяти, одна страница... :)

P.S. Код ни кто не видел, может там переходы $+

Изменено пользователем RGB-V
Ссылка на комментарий
Поделиться на другие сайты

Если вставлять ноп в пределах этого прыжка, то ежу понятно - будут проблемы. Конечно же, я имел в виду добавления кода в не его пределах. Нечего лезть в подобные куски, ибо они, как правило - законченные куски кода, выполняющие определённые функции.

Хотя, если автор кода - извращенец, он мог вполне высчитать такты и сделать основной цикл в виде goto $-555 :crazy:

Плюсую за пост :i-m_so_happy:

ЗЫ: ждём кода от вопрощающего. Ибо без него это всё - гадание на кофейной гуще.

Ссылка на комментарий
Поделиться на другие сайты

Погадаю ещё, если есть вывод на 7-сегм индикатор то есть и таблица символов, которая похоже где то в конце кода и не привязана к адресу, сдвиг кода делает не прогнозируемое смещение таблицы и переход улетает в неизвестном направлении.

Изменено пользователем RGB-V
Ссылка на комментарий
Поделиться на другие сайты

Вообще, нельзя так - написал код, не заработало, побежал на форум спрашивать. Если сел писать программы - научись, в первую очередь, искать в них ошибки с помощью отладки. Ведь не трудно же, запустить отладку (тот же MPLAM SIM) и пошагать по программе. Мало того не трудно, даже интересно :)

А так, автор кода мог вполне сделать защиту от дурачков на изменение (теми же $+n, либо переход на конкретный адрес), чтобы не совали нос куда не нужно.

Ссылка на комментарий
Поделиться на другие сайты

Да, скорее всего нашёл исходник и пробует модернизировать, или сделал дизасм, после дизасма такое возможно на раз. После него переходы правильно прописываются, но вот таблицы не привязаны.

Ссылка на комментарий
Поделиться на другие сайты

Да после дизасма новичку там делать вообще нечего :)

Немножко оффтопа

Меня всегда удивляли люди, просящие или ищущие чужие исходники, чтобы что-то там подправить/дописать под себя. Ну вот что ты там сможешь поправить в чужом коде, если ты собственного написать не в состоянии ?

В целях обучения - да, полезно. Но ни как не для исправлений.

Ссылка на комментарий
Поделиться на другие сайты

В PIC16F628 2 кБ памяти, одна страница... :)

ну тогда поведай что будет при вызове 5 элемента массива

  org 0x0FA
tabBCD  addwf  PCL,f
 retlw  0x00   ;
 retlw  0x01   ;
 retlw  0x02   ; ->2
 retlw  0x03   ; ->3
 retlw  0x04   ; ->4
 retlw  0x05   ; ->5

Ссылка на комментарий
Поделиться на другие сайты

Всем известно, что будет. Но давайте называть вещи своими именами, Вы сейчас говорите о блоке памяти в размере 256 байт.

- При выполнении табличного чтениявычисляемым переходом следует заботитсяо том, чтобы значение PCL не пересекло границу БЛОКА памяти (каждый блок 256 байт)

Страница памяти- Вся память разбита по 2К слова. Каждая страница разбита на блоки памяти. В 16F628 одна страница. :)

Ссылка на комментарий
Поделиться на другие сайты

Большое спасибо всем за советы. Буду проверять все версии. Сегодня обязательно выложу исходник на суд, возможно решение найдется быстрее.

Ссылка на комментарий
Поделиться на другие сайты

Выкладываю исходник. Термометр на 4-х DS18B20 с индикацией по кругу, установкой предела по каждому, включением релюшек. Все работает, пока не решил чуть изменить алгоритм, добавив пару команд. Тут программа начала виснуть и перезагружаться, на видео видно после 4-го датчика. Две версии Norma и GLUK отличаются одним NOP-ом. Испытано в железе. В Протеусе несколько датчиков на одной линии у меня не работают.

Gluk.rar

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...