PIC16F84A - Proteus vs Реальность

Поклонники продукции Microchip Technology Inc тусуются тут.
Denis-1307
Родился
Сообщения: 12
Зарегистрирован: Сб сен 28, 2024 16:19:04

PIC16F84A - Proteus vs Реальность

Сообщение Denis-1307 »

Всем доброго времени суток.
Решил я тут начать изучать программирование микроконтроллеров PIC и вот с какой проблемой столкнулся.
Написал простейшую мигалку светодиодом для PIC16F84A (есть небольшой опыт в программировании AVR). В протеусе все прекрасно работает, а вот на реальном железе либо не работает вообще, либо светодиод моргает раз в несколько секунд.
Помогите разобраться, что я делаю не так.

Вот код программы. Среда разработки - MPLAB X IDE, компилятор - XC8, программатор - PicKit 3

Код: Выделить всё

/* PIC16F84A
 * Config bits: 3FF1
 * File:   main.c
 * Author: Denis
 * Project: Blink
 * Created on 12.04.2025 */
#include <xc.h>

#define _XTAL_FREQ 4000000

#pragma config FOSC = XT        // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF       // Watchdog Timer (WDT disabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (Power-up Timer is enabled)
#pragma config CP = OFF         // Code Protection bit (Code protection disabled)

void main(void)
{
    TRISB &= ~(1<<2); //пин RB2 режим работы - выход
    PORTB &= ~(1<<2); //0 В на пине RB2
    while(1)
    {
        __delay_ms(500); //ждем 0,5 сек
        PORTB ^= (1<<2); //инвертируем значение на пине RB2
    }
    return;
}


Всем спасибо за оказанную помощь.
Аватара пользователя
Zikon
Встал на лапы
Сообщения: 92
Зарегистрирован: Вт фев 28, 2017 08:13:31
Откуда: Свердловская обл.

Re: PIC16F84A - Proteus vs Реальность

Сообщение Zikon »

1. А где задан чип в исходнике (#define) ? // ой, да там при компиляции подставляется
2. Лучше бы взял pic16f628a или pic16f690, и то это только для тренировки.
Denis-1307
Родился
Сообщения: 12
Зарегистрирован: Сб сен 28, 2024 16:19:04

Re: PIC16F84A - Proteus vs Реальность

Сообщение Denis-1307 »

1. А где задан чип в исходнике (#define) ?

А разве MPLAB IDE этого не делает когда создаешь проект? Там ведь указывается тип контроллера для которого пишется прошивка.
Если MPLAB этого не делает, то тогда это записывается так?
#define <16F84A.h>
Если не прав, поправьте.
Уош
Опытный кот
Сообщения: 700
Зарегистрирован: Вс мар 23, 2025 14:56:55

Re: PIC16F84A - Proteus vs Реальность

Сообщение Уош »

Покажите схему реального железа.
Denis-1307
Родился
Сообщения: 12
Зарегистрирован: Сб сен 28, 2024 16:19:04

Re: PIC16F84A - Proteus vs Реальность

Сообщение Denis-1307 »

Покажите схему реального железа.

Сейчас не могу, все на работе осталось. В понедельник покажу :))
OKF
Это не хвост, это антенна
Сообщения: 1379
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: PIC16F84A - Proteus vs Реальность

Сообщение OKF »

Да, есть такая проблемка с Протеусом. Не всё на 100% эмулирует.(
А зачем return? Это к делу не относится.)
Аватара пользователя
valentinovich
Держит паяльник хвостом
Сообщения: 999
Зарегистрирован: Ср окт 04, 2017 20:47:40

Re: PIC16F84A - Proteus vs Реальность

Сообщение valentinovich »

Denis-1307, вот -
https://микроник.рус/pic16f84a-migaem-svetodiodom/
Да и вообще - данный сайт молча ответит на множество подобных (как у ТС и не только) вопросов. Изображение
Аватара пользователя
Asmodey
Друг Кота
Сообщения: 6122
Зарегистрирован: Сб янв 28, 2006 22:47:24

Re: PIC16F84A - Proteus vs Реальность

Сообщение Asmodey »

Denis-1307, данные в порты записывайте через регистры-защелки latch, а не напрямую в порт.

Время выполнения кода смотрите в между точками останова в MPLAB, а не в Протеусе.
Астролябия-сама меряет, было бы что мерять!!!
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25117
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: PIC16F84A - Proteus vs Реальность

Сообщение КРАМ »

В понедельник покажу :))

Вы кварц с керамикой на МК, надеюсь, повесили? :)
Изображение
Уош
Опытный кот
Сообщения: 700
Зарегистрирован: Вс мар 23, 2025 14:56:55

Re: PIC16F84A - Proteus vs Реальность

Сообщение Уош »

Asmodey, а у этого пика нет регистра-защёлки (я тоже сначала об этом подумал)
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25117
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: PIC16F84A - Proteus vs Реальность

Сообщение КРАМ »

я тоже сначала об этом подумал

Он пишет в единственный пин. Поэтому предупреждение неактуально. Проблемы RMW для единственного пина не существует. Проблема возникает при перекрестной побитной модификации.
Уош
Опытный кот
Сообщения: 700
Зарегистрирован: Вс мар 23, 2025 14:56:55

Re: PIC16F84A - Proteus vs Реальность

Сообщение Уош »

Да, уже забываю об этом, спасибо!
Аватара пользователя
Asmodey
Друг Кота
Сообщения: 6122
Зарегистрирован: Сб янв 28, 2006 22:47:24

Re: PIC16F84A - Proteus vs Реальность

Сообщение Asmodey »

Asmodey, а у этого пика нет регистра-защёлки
Тем хуже для него. Придется искать причину в какойнить метафизической области. Положим, в отсутствующих блокирующих конденсаторах по питанию.
Астролябия-сама меряет, было бы что мерять!!!
Уош
Опытный кот
Сообщения: 700
Зарегистрирован: Вс мар 23, 2025 14:56:55

Re: PIC16F84A - Proteus vs Реальность

Сообщение Уош »

Вот потому я и предложил показать схему. Я грешил на плавающий сброс, КРАМ на кварц, и вот теперь конденсаторы питания... Три мнения об обвязке. Вероятность повышается.
Аватара пользователя
Zikon
Встал на лапы
Сообщения: 92
Зарегистрирован: Вт фев 28, 2017 08:13:31
Откуда: Свердловская обл.

Re: PIC16F84A - Proteus vs Реальность

Сообщение Zikon »

А если не читать с порта а хранить в переменной текущее записанное значение? Что-то изменится?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25117
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: PIC16F84A - Proteus vs Реальность

Сообщение КРАМ »

Замените xor на прямой вывод в порт, а xor делайте с переменной в ОЗУ и значение этой переменной выводите в порт.
Но если пин порта у вас не нагружен, то вероятность бага связанного с RMW будет стремится к нулю.
ЗЫ. Есть смутное подозрение, что светодиод у вас висит на пине без балласта... и в этом вся проблема. Тогда RMW в полный рост.
:facepalm:
Аватара пользователя
Asmodey
Друг Кота
Сообщения: 6122
Зарегистрирован: Сб янв 28, 2006 22:47:24

Re: PIC16F84A - Proteus vs Реальность

Сообщение Asmodey »

Я грешил на плавающий сброс, КРАМ на кварц, и вот теперь конденсаторы питания...
К слову, без конденсаторов по питанию может и по цепям сброса рандомно помеха пробегать. Два в одном.
Астролябия-сама меряет, было бы что мерять!!!
Denis-1307
Родился
Сообщения: 12
Зарегистрирован: Сб сен 28, 2024 16:19:04

Re: PIC16F84A - Proteus vs Реальность

Сообщение Denis-1307 »

[uquote="Denis-1307",url="/forum/viewtopic.php?p=4704472#p4704472"]В понедельник покажу :))

Вы кварц с керамикой на МК, надеюсь, повесили? :)
Изображение[/uquote]
Да, кварц с керамикой на 22 пФ.
Единственное что не делал, так это конденсаторы по питанию. Возможно в них проблема, но проверить смогу только завтра.
Как проверю отпишусь.
Спасибо за советы.

Добавлено after 3 minutes 16 seconds:
Замените xor на прямой вывод в порт, а xor делайте с переменной в ОЗУ и значение этой переменной выводите в порт.
Но если пин порта у вас не нагружен, то вероятность бага связанного с RMW будет стремится к нулю.
ЗЫ. Есть смутное подозрение, что светодиод у вас висит на пине без балласта... и в этом вся проблема. Тогда RMW в полный рост.
:facepalm:

Светодиод подключён через резистор 220 Ом
Denis-1307
Родился
Сообщения: 12
Зарегистрирован: Сб сен 28, 2024 16:19:04

Re: PIC16F84A - Proteus vs Реальность

Сообщение Denis-1307 »

Покажите схему реального железа.


Схема вообще не подает признаков жизни.
Вложения
IMG_7980_1.jpg
(196.88 КБ) 116 скачиваний
veso74
Поставщик валерьянки для Кота
Сообщения: 1902
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: PIC16F84A - Proteus vs Реальность

Сообщение veso74 »

Какая надпись на конденсаторах к кварцу? Какая надпись на кварцевом резонаторе? Установите хотя бы один фильтрующий конденсатор. Подключите подтягивающий резистор MCLR к VDD.
Ответить

Вернуться в «PIC»