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

Re: PIC с нуля

Вт апр 08, 2014 13:21:56

Нашел, все равно не понимаю, вот сейчас при прошивке показывает вот это

2.jpg
(209.65 KiB) Скачиваний: 721


Судя по даташиту

1.jpg
(235.52 KiB) Скачиваний: 412


конфигурация 001, отвечает за это 0,1 и 4 биты. Откуда она там вообще взялась то? Как ее задать явно не понятно, работать начинает только если в программе задать OSCF = 4000 или еще какое то подобное число. Что это такое вообще и почему оно не 0 и 1 как в даташите сказано?

В программе у меня вот как

#include <pic.h>

__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);

#define knopka RB4
#define diod RA0


void podgot (void) {
TRISA = 0b00000000;
TRISB = 0b00010000;

CMCON = 0x07;

PORTA = 0;
PORTB = 0;
nRBPU = 0;

OSCF = 1000;
}


void main (void) {
podgot ();
while (1) {
diod = 1;
_delay (5000);
diod = 0;
_delay (5000);
}
}

Почему то еще на строку __CONFIG поругивается сама среда, но скомпилировать дает.

3.jpg
(60.16 KiB) Скачиваний: 628

Re: PIC с нуля

Вт апр 08, 2014 13:27:46

Попробовал поставить сейчас 0, работает так же как и с 4000, если ставить 1, то горит постоянно, не мигая.

Задал 1 при этом увеличив задержку до 50000, замигало, но быстро. Получается у меня где то как то не задана переменная, отвечающая за формирование задержек, связь с частотой. Как ее задать? :oops:

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

Кажется разобрался, это задание INTIO в конфиге.

Это получается при переходе на другой пик это все поновой, и переменные уже другие?
---

Остался вопрос, где настраивается _delay на частоту

Re: PIC с нуля

Вт апр 08, 2014 13:54:26

Обычно в свойствах проекта. Иногда в исходнике явно указывается частота такта.

ВСЕГДА - Смотрите примеры к вашему компилятору, инструменту!

Возможно даже руководство прочитаете :beer:

Re: PIC с нуля

Вт апр 08, 2014 16:07:32

Kotto писал(а):Кажется разобрался, это задание INTIO в конфиге.

Это получается при переходе на другой пик это все поновой, и переменные уже другие?

Здесь вам дали пример задания конфигурации.
Эти слова конфигурации обычно не отличаются от чипа к чипу, но меняется их состав. В таких простых МК их всего 4-5, в навороченных же их описание в коде может целую страницу занять.

Еще загляните в раздел 4.2.2.6 мануала. Там увидите выбор частоты в случае задания внутреннего генератора в конфиге.

Почему у вас работает так, а не иначе, я не знаю, с Си я мало знаком.
Уроки Си есть на самом сайте Майкрочипа, на английском.

Re: PIC с нуля

Вт апр 08, 2014 17:19:33

Вроде бы в 16f628 разобрался.

Можно позволю себе наглый вопрос, как теперь это перевести на пик16ф72? В нем нет встроенного источника тактов, кварц паяется на 10 и 11 ноги судя по даташиту, если я верно перевел.

Как по даташиту понять как писать конфиг? Где искать эти биты? Не силен в английском. Я написал так

#include <xc.h>

//#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=XT


#define knopka RB4
#define diod RA0


void podgot (void) {
TRISA = 0b00000000;
TRISB = 0b00010000;

// CMCON = 0x07;

PORTA = 0;
PORTB = 0;
nRBPU = 0;

// OSCF = 1;
}


void main (void) {
podgot ();
while (1) {
diod = 1;
_delay (50000);
diod = 0;
_delay (50000);
}
}

вышла фигня, откуда то вылез Code Protect и ничего не работает. Я совсем уже замучался, не помню чтобы с авр были такие проблемы
---

Хотя бы просто ткните носом в страницы даташита, кто добрый :oops:

Re: PIC с нуля

Вт апр 08, 2014 17:25:26

откуда то вылез Code Protect

отсюда вылез
#pragma config CP=ON

не помню чтобы с авр были такие проблемы

проблем подобных АВР в ПИКах вообще не существует

Re: PIC с нуля

Вт апр 08, 2014 17:42:32

Kotto писал(а):Я написал так

#include <xc.h>

//#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=XT


#define knopka RB4
#define diod RA0


вышла фигня, откуда то вылез Code Protect и ничего не работает. Я совсем уже замучался

Действительно, а откуда он вылез? :dont_know: :wink:
:)))

Re: PIC с нуля

Вт апр 08, 2014 17:49:14

Все равно хочу с пиками разобраться ) Просто с авр все прошло как то гладко, мигалку написал за день, относительно долго понимал фьюзы. Кодевизион на все контролеры как то единый код создает, ни о чем таком не думаешь.

Так и не разберусь как сопоставить даташит и конфиг, как сделать для PIC16F72 то же самое. Правильно ли ли я кварц припаял на ноги 10 и 11?

Re: PIC с нуля

Вт апр 08, 2014 17:55:22

В даташите есть раздел Спешиал фичерс. Вот в нем и смотрите Конфиг.
В даташите есть и про кварц. Главное не ленится... :wink:
ЗЫ. кстати, конфиг в пиках - это и есть фьюзы. Только в пиках не бывает плохих комбинаций. При любом раскладе можно перешить.
И да, при прошивке кварц НЕ НУЖЕН. Прошивка тактируется самим программатором.

Re: PIC с нуля

Вт апр 08, 2014 18:29:06

Да в этом удобство пиков над авр. Вы не подумайте что я ленив или хочу чтобы за меня все сделали, я гуглю без перерыва, ковыряю даташит постоянно. Я и не студент, изучаю для себя исключительно. Но вот что то идет не так, с ужасным скрипом. Не хотят пики со мной дружить :cry:

Сейчас проблема, я просто не вижу общего у пик16ф628 и пик16ф72, у тех же авр биты cksel везде одинаковые, посмотрел по калькулятору как их задать и готово
Последний раз редактировалось AlekseyEnergo Вс апр 13, 2014 15:45:14, всего редактировалось 1 раз.
Причина: Нарушение пункта 2.2 правил форума. Подредактировал. Предупредил!

Re: PIC с нуля

Вт апр 08, 2014 18:38:36

Я Вам открою один маленький секрет. Даташиты на одно семейство ПИКов писаны ПОД КОПИРКУ. Достаточно найти один на русском: http://www.microchip.ru/files/d-sheets- ... 16f62x.pdf
И английский становится вполне понятным...
http://www.microchip.ru/cdrom/ww1.micro ... 39597b.pdf
ЗЫ. Переводы тут: http://www.microchip.ru/lit/?mid=1x0

Kotto писал(а):Сейчас проблема, я просто не вижу общего у пик16ф628 и пик16ф72...

Как можно сделать единые конфиги у контроллеров С РАЗНОЙ ФУНКЦИОНАЛЬНОСТЬЮ?
Это ПЕРИФЕРИЯ одинакова.

Re: PIC с нуля

Вт апр 08, 2014 18:50:19

Не хотят пики со мной дружить


А зачем они вам сдались? Я понимаю, если бы вы 24-е мучали - там есть кое-что интересное, но 16-ю серию... :? Да и логика работы кристалла у производителей контроллеров различна по степени кривизны и неочевидности. Это примерно как удобнейшие мнемоники ассемблера на Z80 и уродство, придуманное интеллом для 8080 - у их мнемоник разная идеология построения одного и того же. Да, интелл придумала свои мнемоники и процессор первой, а разработчики Z80 (свалившие, впрочем, из интелл) сделав новый процессор не могли использовать мнемоники интелл (это их собственность) и придумали свои, на порядок удачнее, логичнее и удобнее.
Помните, в АВР есть PIN и есть PORT? В PORT пишем и помним что записали, а из PIN только читаем. А что есть в старших Пиках? А вот что:
• при записи в регистр PORTx данные записываются в защелку порта;
• при записи в регистр LATx данные записываются в защелку порта;
• при чтении регистра PORTx данные читаются с вывода порта;
• при чтении регистра LATx данные читаются с защелки порта.


Зачем нужно действие "при записи в регистр PORTx данные записываются в защелку порта;"? Оно нарушает логичность операций. И кто-то мне говорил, что не всегда срабатывает такая запись (от модели зависит что ли?) - но это я не проверял.
Что-то ещё мне в них не нравилось, как и в кортексах, но уже и не помню... хотя, вот список ошибок вот не нравится.
Ну а из приятных вещей, так это большая частота с PLL, прерывания по изменению состояния входов (CN), переназначаемые функции выходов (что так и не попробовал, но идея интересная), много периферии.

Re: PIC с нуля

Вт апр 08, 2014 19:01:42

Да на выбросе нашей лаборатории электроники как то углядел несколько пиков, лежали лежали, а недавно думаю почему бы и не попробовать, удачно собрал программатор, с первого раза завелся, пик16ф72 вроде пишут совсем доисторический, в нем нет внутреннего источника тактов, нет флеш памяти вроде бы. Даташит для него только на английском. Разве знание низшего семейства не поможет освоить быстро и легко семейство выше?


КРАМ писал(а):Я Вам открою один маленький секрет. Даташиты на одно семейство ПИКов писаны ПОД КОПИРКУ. Достаточно найти один на русском: http://www.microchip.ru/files/d-sheets- ... 16f62x.pdf
И английский становится вполне понятным...
http://www.microchip.ru/cdrom/ww1.micro ... 39597b.pdf
ЗЫ. Переводы тут: http://www.microchip.ru/lit/?mid=1x0

Kotto писал(а):Сейчас проблема, я просто не вижу общего у пик16ф628 и пик16ф72...

Как можно сделать единые конфиги у контроллеров С РАЗНОЙ ФУНКЦИОНАЛЬНОСТЬЮ?
Это ПЕРИФЕРИЯ одинакова.


Просто я сужу по АВР, у них cksel везде одни и те же, просто выставляются по разному, хотя я знаком не со столь многими авр, только тини13, 2313, мега8, 48, 88, 168 в их дип и смд исполнении и все.
Последний раз редактировалось AlekseyEnergo Вс апр 13, 2014 15:46:19, всего редактировалось 1 раз.
Причина: Нарушение пункта 2.2 правил форума. Подредактировал.

Re: PIC с нуля

Вт апр 08, 2014 19:03:56

Разве знание низшего семейства не поможет освоить быстро и легко семейство выше?


Ну в чём-то, несомненно, поможет. Но быстро и легко вряд ли. И что вы называете "освоить"? Разобраться со всей периферией и тьмой её настроек (видели, сколько в кортексах настроек подтяжек в портах? :) )? Да зачем оно вам? Всё равно забудется и для другого кристалла названия регистров или ещё что поменяются. Кстати, названия регистров и битов есть в файлах picxxxxx.h в include у MPLab - только выберите ваш контроллер.

Просто я сужу по АВР


У них иная логика. Вот у PIC взять тот же TRIS единичка - порт на вход. А у AVR наоборот.

Re: PIC с нуля

Вт апр 08, 2014 19:20:11

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

Re: PIC с нуля

Вт апр 08, 2014 19:41:41

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


#pragma config FOSC=XT

где вообще посмотреть эти параметры к конкретному МК, что и к чему приравнивать, я хоть убейте не вижу в даташите слова FOSC, точнее вижу, но не понимаю как его задавать?

Я так понял у всех МК пиков есть этот FOSC, и задавать его надо в двоичном формате?

например, для pic16f628 FOSC = 0b101, типа того?

#pragma config FOSC=INTOSCIO

а вот эта INTOSCIO это просто константа, которая означает 0b101??? Я все заголовочники уже перерыл связанные с ф628 и ф72, поиск по слову FOSC в них ничего не дал.
---

А то я скоро молотком по этому пику ударю :)))
Последний раз редактировалось AlekseyEnergo Вс апр 13, 2014 15:48:38, всего редактировалось 1 раз.
Причина: Нарушение пункта 2.2 правил форума. Подредактировал.

Re: PIC с нуля

Вт апр 08, 2014 20:17:02

Ну, например, так может выглядеть строчка конфигурации:

#pragma config OSC=HS, FCMEN=ON, WDT=OFF, IESO=ON, XINST=OFF, LVP=OFF

Тут OSC=HS задаёт режим работы генератора.

Re: PIC с нуля

Вт апр 08, 2014 20:30:03

Не компилируется, а вот это

#include <pic16f72.h>
#include <xc.h>
//#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) {
TRISA = 0b00000000;
TRISB = 0b00010000;

// CMCON = 0x07;

PORTA = 0;
PORTB = 0;
nRBPU = 0;

// OSCF = 1;
}


void main (void) {
podgot ();
while (1) {
diod = 1;
//_delay (50000);
//diod = 0;
//_delay (50000);
}
}

компилируется но на 72м отказывается работать совсем. Что тут не так? В железе все норм, взял семпл мигалки на PCWHD, скомпилировал, залил, мигает. Но там синтаксис какой то левый, по нему так и не понял как настроить. А может вообще программа не годная эта для 72го?

Re: PIC с нуля

Вт апр 08, 2014 21:02:24

#define diod RA0
По включению RA0 имеет аналоговую функцию...
См. регистр ADCON1 ...

Re: PIC с нуля

Вт апр 08, 2014 21:23:19

Нашел такой, судя по даташиту чтобы RA0 стал цифровым нужно его биты записать единицами, присвоил

ADCON1 = 0b111;

в функции podgot, ничего не изменилось. Страница 56 даташита, все правильно?
Ответить