Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Re: PIC с нуля

Вт апр 08, 2014 22:11:50

Для того чтобы работали нормально программные задержки сделайте так:
Код:
#include <xc.h>

#ifndef _XTAL_FREQ
 // Unless already defined assume 4MHz system frequency
 // This definition is required to calibrate __delay_us() and __delay_ms()
#define _XTAL_FREQ 4000000
#endif

можно использовать типа так:
для микросекунд __delay_us(485); для миллисекунд __delay_ms(750);
тут у вас закомментировано
Код:
diod = 1;
//_delay (50000);
//diod = 0;
//_delay (50000);

пробуйте так:
Код:
diod = 1;
__delay_ms(500);
diod = 0;
__delay_ms(500);

Re: PIC с нуля

Вт апр 08, 2014 22:38:38

oleg110592 писал(а):для микросекунд __delay_us(485); для миллисекунд __delay_ms(750);


Насколько помнится с такими параметрами у xc8 проблемы в макросах задержки , и рекомендуется юзать свои обертки типа:
Код:
void delay(unsigned short del)
{
    while (del--) __delay_ms(1);


}

Re: PIC с нуля

Вт апр 08, 2014 22:53:18

вроде в xc8 с этим стало получше:
Изображение

Re: PIC с нуля

Вт апр 08, 2014 22:54:56

oleg110592 писал(а):вроде в xc8 с этим стало получше:

Не а . Воткни ему 500 и увидишь . Правда на MPLABX тестил.
ЗЫ надеюсь podgot это не твой репертуар ? :)))

Re: PIC с нуля

Вт апр 08, 2014 23:07:41

долго симулирует - ни нашим и не вашим - 200 :) :
Изображение
podgot скопипастил выше, пользуюсь (не всегда :? ) рекомендациями: http://habrahabr.ru/post/172091/
13. Все имена следует записывать по-английски.
fileName; // НЕ РЕКОМЕНДУЕТСЯ: imyaFayla
Английский наиболее предпочитетелен для интернациональной разработки.

Re: PIC с нуля

Вт апр 08, 2014 23:20:22

oleg110592 писал(а): ни нашим и не вашим - 200 :) :


Ну да для Mid Range работает . Это у мну в проекте на 18ом ошибки гонит . :)))
Хотя я такие задержки и не юзаю , лучше на таймерах и не тупые а на state machine ...

Re: PIC с нуля

Ср апр 09, 2014 11:50:11

На PIC16F72 так и не работает :cry: Печаль, беда. Как для нее инициализацию сделать? Я похоже сам так и не разберусь, буду очень благодарен за помощь!
---

Почему на PIC16F628 не надо было явно нигде переключать выходы из аналогового состояния в цифровое?

Re: PIC с нуля

Ср апр 09, 2014 12:02:16

Инициализацию чего? Конфига? Портов?
Конфиг в разделе 11.1, порты в разделе 3. Там в таблицах 3-1..3-6 расписаны функции портов и регистры, связанные с этими портами (А,В,С). Пройдите по всем регистрам и сконфигурируйте их под свои нужды.

Касательно второго вопроса ответ очень простой: в 628-м нет АЦП, порты только цифровые. Но там еще компаратор есть, его инициализировать надо.

Re: PIC с нуля

Ср апр 09, 2014 12:09:17

в симуляторе Mplab 8 работает:
Спойлер
Код:
#include <xc.h>
#ifndef _XTAL_FREQ
 // Unless already defined assume 4MHz system frequency
 // This definition is required to calibrate __delay_us() and __delay_ms()
#define _XTAL_FREQ 4000000
#endif
//#pragma config MCLRE=OFF
//#pragma config CP=ON
//#pragma config CPD=OFF
#pragma config BOREN=ON
#pragma config WDTE=OFF
//#pragma config LVP=OFF
#pragma config PWRTE=ON
#pragma config FOSC=HS

#define knopka RB4
#define diod RA0

void podgot (void)
{
   ADCON1 = 0b00000111;
   TRISA = 0b00000000;
   TRISB = 0b00010000;
   PORTA = 0;
   PORTB = 0;
   nRBPU = 0;
}
void main (void)
{
   podgot ();
   while (1)
   {
      diod = 1;
      __delay_ms (500);
      diod = 0;
      __delay_ms (500);
   }
}

СпойлерИзображение
Изображение

на всякий hex файл
Led_probe.zip
(271 байт) Скачиваний: 263
Последний раз редактировалось oleg110592 Ср апр 09, 2014 12:18:43, всего редактировалось 2 раз(а).

Re: PIC с нуля

Ср апр 09, 2014 12:11:17

Zhuk72 писал(а):там еще компаратор есть, его инициализировать надо.

Наоборот... его отключать надо...

Re: PIC с нуля

Ср апр 09, 2014 12:14:32

Отключение или включение - суть инициализация. Это уже от конкретных нужд зависит.

Забыл упомянуть про УСАРТ. Но он не мешает, если его спецом не включать.

Re: PIC с нуля

Ср апр 09, 2014 12:47:24

Zhuk72 писал(а):Отключение или включение - суть инициализация.


Сам то понял что ляпнул ? :)))
Инициализация - есть включение и конфигурация , а тебе сказали - выключить ...
Последний раз редактировалось dosikus Ср апр 09, 2014 12:47:46, всего редактировалось 1 раз.

Re: PIC с нуля

Ср апр 09, 2014 12:47:25

Залил готовый хекс, не работает :shock: Отлаживаю свой проект, фигня идет какая то, в RA0 должна быть 1 после шага на скрине, но там ничего не поменялось, вечно ноль сидит.

1.jpg
(106.58 KiB) Скачиваний: 583


-----

Поменял порт на RB0, по крайней мере отладка пошла, состояние порта меняется, сейчас вживую попробую

Re: PIC с нуля

Ср апр 09, 2014 12:51:20

А что можно увидеть при задержке 50 тактов ?

Re: PIC с нуля

Ср апр 09, 2014 12:52:58

Так если делать Step Ower, то в отладке то видно как меняется состояние порта, там без разницы какая задержка, или нет? Вот щас поставил порт RB0, но еще хекс не залил, попробую как на живом будет
---

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

Re: PIC с нуля

Ср апр 09, 2014 13:37:56

Гы, так в живую на светодиоде меандр... Отладки в этом контроллере нет....
Вот он и светится..., в полнакала.

Re: PIC с нуля

Ср апр 09, 2014 13:42:54

dosikus писал(а):Сам то понял что ляпнул ? :)))

Я знаю, что компаратор нужно отключить. "Инициализация компаратора на отключение" пойдет? Если и это не устроит, то хорошо, признаюсь, что я выразился неоднозначно. Какая разница как выразиться. Я и так сомневаюсь, что автор темы вообще понял, что означает загрузка в CMCON0 значения 0х07.


Kotto, если delay 50 означает задержку в 50 милли- или микросекунд, то как это должно отражаться на светодиоде? Вам же выше предлагали писать
Код:
      diod = 1;
      __delay_ms (500);
      diod = 0;
      __delay_ms (500);


А для лучшей визуальности вообще 1000.

Re: PIC с нуля

Ср апр 09, 2014 14:02:36

Да я уже от нуля до 50 тыщ интервалы прогнал, с шагом в 500, ни так ни сяк, светится и все тут, не мигая

Re: PIC с нуля

Ср апр 09, 2014 14:20:48

Напишите __delay_ms (1000), как выше советовали.
50000 тактов, как я понимаю, при написании просто delay дадут 50 мс задержку. При ней мигания не будет.

Re: PIC с нуля

Ср апр 09, 2014 14:23:52

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

Даже в Протеусе этого пика нет
Последний раз редактировалось Kotto Ср апр 09, 2014 14:26:09, всего редактировалось 1 раз.
Ответить