Jump to content

Программирование PIC12f508 i/p


Recommended Posts

Привет, форумчане! До этого месива программировал только ардуино, а вот с "пиком" начались проблемы: стандартный код от блогеров, форумов и прочих не запускаеться, а именно жалуеться на код в местах объявления портов, по типу TRISB, PORTB и т.д. Хоть и знаю, что у этого МК контакты обозначаються GPIO, но и там я всё перерыл, не пашет: GPIO = 1; GPIObits (0x01); и еще куча кода. Стандарт сменил на "С90", ничего. Компилятор - MPLAB X IDE, программатор - pic k150, МК - PIC12f508 i/p, пишу на С. Тему по этому поводу не нашёл, если уже была - извеняйте.:crazy:

Edited by И пошёл белый дым. . .
Link to comment
Share on other sites

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

Реле, разъемы, вентиляторы, корпуса, микросхемы, конденсаторы и много другое!

Скидки до 20% на сайте электронного дискаунтера ТМ Электроникс.

Бесплатная доставка в любую точку России + кэшбэк 15%.

Подробнее

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

16 часов назад, И пошёл белый дым. . . сказал:

Привет, форумчане! 
////
извеняйте.:crazy:

От нас то что надо?

Link to comment
Share on other sites

Материалы вебинара «Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока»

Опубликованы материалы вебинара Компэл, посвященного литиевым аккумуляторам EVE Energy и решениям для управления перезаряжаемыми источниками тока.

На вебинаре мы представили информацию не только по линейкам аккумуляторной продукции EVE, но и по решениям для управления ею, что поможет рассмотреть эти ХИТ в качестве дополнительной альтернативы для уже выпускающихся изделий. Также рассмотрели нюансы работы с производителем и сервисы, предоставляемые Компэл по данной продукции. Подробнее>>

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

17 часов назад, И пошёл белый дым. . . сказал:

MPLAB X IDE

это вам не MPLAB. Ставь MPLAB.

Я не раздаю удочки. Я продаю рыбу.

Link to comment
Share on other sites

Комплексные решения с литиевыми батареями EVE для интеллектуальных систем безопасности

Литиевые химические источники тока EVE по своим характеристикам являются идеальным выбором для современных интеллектуальных систем безопасности. EVE разрабатывает литиевые батареи, опираясь на многолетние исследования таких областей применения, как беспроводная связь стандартов Bluetooth, LoRa, Wi-Fi, NB-IoT и ZigBee. Рассмотрим решения для систем безопасности с использованием батарей EVE. Подробнее>>

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

4 часа назад, солар сказал:

не MPLAB

С чего бы? Нормальная среда и нормальный компилятор.

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

Link to comment
Share on other sites

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

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

21 час назад, Изя сказал:

MPLAB - это IDE. 
Исходник выкладывай, тогда можно что то сказать.

https://youtu.be/INZjtKrzMlU

учился по етому уроку, там ничего про GPIO и блиско нету. Уточнил, что комманды можно переделать с портов A, B в порт GPIO, например, как PORTA в PORTGPIO, но пишет ошибку, а синтакиси вообще не понять. Перечитал все даташиты и форумы - ничего. Прошу показать как указывать направление порта и его состояние (вкл\выкл). Если с направлением хоть что то нарыл (TRISGPIO), то как с этим работать и как устанавливать состояние выходов - ничего. С IDEшкой популат, спасибо за поправку. Если есть бумаги про синтаксиз, который работает с этим МК - прошу на любом языке.

 

20 часов назад, солар сказал:

это вам не MPLAB. Ставь MPLAB.

все, кого встречал только на ней и кодят. Можете объяснить, что с ней не так?

 

20 часов назад, IMXO сказал:

От нас то что надо?

Да, объясните как работать с портами GPIO, каком стандарте (С-90\С-99) писать и есть ли справочник по синтаксису для pic12.

Link to comment
Share on other sites

13 часов назад, И пошёл белый дым. . . сказал:

учился по етому уроку,

Вот интересно почему страдальцы делают все, что угодно, но только не читают мануал на используемый компилятор. ?
Вырезка из мануала:

Спойлер

5.3.10 Baseline PIC MCU Special Instructions
The Baseline devices have some registers which are not in the normal SFR space and
cannot be accessed using an ordinary file instruction. These are the OPTION and TRIS
registers.

Both registers are write-only and cannot be used in expression that read their value.
They can only be accessed using special instructions which the compiler will use
automatically.
The definition of the variables that map to these registers make use of the control
qualifier. This qualifier informs the compiler that the registers are outside of the normal
address space and that a different access method is required. You should not use this
qualifiers for any other registers.
When you write to either of these SFR variables, the compiler will use the appropriate
instruction to load the value. So, for example, to load the TRIS register, the following
code:
TRIS = 0xFF;

can be encoded by the compiler as:
MOVLW 0ffh
TRIS
Those PIC devices which have more than one output port can have definitions for
objects: TRISA, TRISB and TRISC, depending on the exact number of ports available.
This objects are used in the same manner as described above.
 

 

13 часов назад, И пошёл белый дым. . . сказал:

Да, объясните как работать с портами GPIO, каком стандарте (С-90\С-99) писать и есть ли справочник по синтаксису для pic12.

 Для портов ввода/вывода без разницы в каком стандарте.
Справочник по синтаксису это: даташит на МК, мануал на компилятор, и справочник по Си Шильда.
Дополнительно все регистры и их биты описаны в хедере на используемый МК , лежат в папке include компилятора , названия битов конфигурации в html_ках папке в docs\chips.

РЫБА:

Спойлер

#include <xc.h>
// chip=PIC12F508

// CONFIG
#pragma config CP = OFF    // Code protection off 
#pragma config OSC = IntRC // internal RC oscillator 
#pragma config MCLRE = ON  // GP3/MCLR pin function is MCLR 
#pragma config WDT = OFF   // WDT disabled 


#define _XTAL_FREQ 4000000L
#define BUTTON GPIO0
#define LED1 GP1
#define LED2 GP2

void main(void)
{
  GPIO = 0x00; // 
  OPTION = 0b11000000; // подтяжка и пробуждение по входам отключены
  TRIS = 0b11111001; // GP1,GP2 = output
  GPIO = 0x00; 
  
while (1)
{
 GPIO = 0b00000010;
 __delay_ms(500); 
 GPIO = 0b00000100;
 __delay_ms(500);  
}
}

 


 

 

Edited by IMXO
Link to comment
Share on other sites

14 часов назад, И пошёл белый дым. . . сказал:

учился по етому уроку

Это не урок, это наглядный пример не рабочего говнокода для ПИКов,
Причем  производитель в каждом датащите предупреждает об этих детских граблях и как с ними бороться.

Спойлер

766602606_.jpg.fde7575dcaf844e29268006cc4ceded4.jpg

ЗЫ для тех кто не понял , в коде нет одновременного включения двух светодиодов.

Edited by IMXO
Link to comment
Share on other sites

14 часов назад, И пошёл белый дым. . . сказал:

все, кого встречал только на ней и кодят. Можете объяснить, что с ней не так?

Не все...   Не пользуюсь. Для старых моделей МК достаточно восьмерки.
Убрали возможность писать исполнительный код на асме.
Файлы проекта раскиданы по разным папкам, что не всегда удобно при использовании сторонних симуляторов, тот же протез при отладке cof-файлом не видит сишные файлы.
 

Link to comment
Share on other sites

3 минуты назад, IMXO сказал:

Убрали возможность писать исполнительный код на асме.
Файлы проекта раскиданы по разным папкам

1. С чего бы это? Все отлично пишется на АСМе. Мало того, при написании бутлоадера для чипов с перемещаемой IVT стартапный файл в принципе пишется на АСМе. Ну да, до версии 5.35 можно было кодить на MPASM, а позже только на PIC-AS. Но это все ассемблер...

2. Что мешает разместить все файлы в одной папке? Компилятор не требует разных папок.

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

Link to comment
Share on other sites

39 минут назад, my504 сказал:

а позже только на PIC-AS. Но это все ассемблер...

1, еще бы понимать как на нем писать... Вот  на гитхабе кагбе есть рыба для пик16ф886 и пик16ф84а , можете объяснить почему для одних и тех же переменных разный синтаксис описания касса и где вообще его брать?.
пик16ф886

;   Data space use by interrupt handler to save context
    PSECT   Isr_Data,global,class=COMMON,space=1,delta=1,noexec
;
    GLOBAL  WREG_save,STATUS_save,PCLATH_save
;
WREG_save:      DS  1
STATUS_save:    DS  1
PCLATH_save:    DS  1

пик16ф84а

;   Data space use by interrupt handler to save context
    PSECT   Isr_Data,global,class=RAM,space=1,delta=1,noexec
;
    GLOBAL  WREG_save,STATUS_save
;
WREG_save:      DS  1
STATUS_save:    DS  1
PCLATH_save:    DS  1

2. да не требует, он по дефолту их по разным папкам рассовывает.

Link to comment
Share on other sites

Если геморрой писать на AS-PIC, то можно работать в версии 5.35 на MPASM.

Это ведь не "восьмерка"....

Однако значения флага class имеются в мануале на этот ассемблер в таблице 5-2 расположенной на странице 46.

https://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB XC8 PIC Assembler User's Guide 50002974A.pdf

Ваше негодование мне непонятно.

COMMON - это диапазон адресов udata_shr - то есть участок ОЗУ видимый из всех банков

RAM - это диапазон адресов udata - то есть участок ОЗУ адресуемый через банк.

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

 

1 час назад, IMXO сказал:

да не требует, он по дефолту их по разным папкам рассовывает.

Не по разным, а в dist-default-production

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

Link to comment
Share on other sites

СПБ за ликбез. Никакого негодования нет.  Это просто надо осмыслить. Первое впечатление писать на AS-PIC сложнее.
Ладно забудем пока об асме.
Но пока преимуществ  переходить на десятку не вижу...

Link to comment
Share on other sites

39 минут назад, IMXO сказал:

Но пока преимуществ  переходить на десятку не вижу...

Ну у меня просто нет выбора. Я использую самые новые чипы типа 16Fxxxxx, 18Q43, 33CH...

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

Link to comment
Share on other sites

9 часов назад, IMXO сказал:

Вот интересно почему страдальцы делают все, что угодно, но только не читают мануал на используемый компилятор. ?
Вырезка из мануала:

  Показать контент

5.3.10 Baseline PIC MCU Special Instructions
The Baseline devices have some registers which are not in the normal SFR space and
cannot be accessed using an ordinary file instruction. These are the OPTION and TRIS
registers.

Both registers are write-only and cannot be used in expression that read their value.
They can only be accessed using special instructions which the compiler will use
automatically.
The definition of the variables that map to these registers make use of the control
qualifier. This qualifier informs the compiler that the registers are outside of the normal
address space and that a different access method is required. You should not use this
qualifiers for any other registers.
When you write to either of these SFR variables, the compiler will use the appropriate
instruction to load the value. So, for example, to load the TRIS register, the following
code:
TRIS = 0xFF;

can be encoded by the compiler as:
MOVLW 0ffh
TRIS
Those PIC devices which have more than one output port can have definitions for
objects: TRISA, TRISB and TRISC, depending on the exact number of ports available.
This objects are used in the same manner as described above.
 

 

 Для портов ввода/вывода без разницы в каком стандарте.
Справочник по синтаксису это: даташит на МК, мануал на компилятор, и справочник по Си Шильда.
Дополнительно все регистры и их биты описаны в хедере на используемый МК , лежат в папке include компилятора , названия битов конфигурации в html_ках папке в docs\chips.

РЫБА:

  Скрыть контент
#include <xc.h>
// chip=PIC12F508

// CONFIG
#pragma config CP = OFF    // Code protection off 
#pragma config OSC = IntRC // internal RC oscillator 
#pragma config MCLRE = ON  // GP3/MCLR pin function is MCLR 
#pragma config WDT = OFF   // WDT disabled 


#define _XTAL_FREQ 4000000L
#define BUTTON GPIO0
#define LED1 GP1
#define LED2 GP2

void main(void)
{
  GPIO = 0x00; // 
  OPTION = 0b11000000; // подтяжка и пробуждение по входам отключены
  TRIS = 0b11111001; // GP1,GP2 = output
  GPIO = 0x00; 
  
while (1)
{
 GPIO = 0b00000010;
 __delay_ms(500); 
 GPIO = 0b00000100;
 __delay_ms(500);  
}
}

 


 

 

 

 

IDEшка не ругаеться, там всё ок, но камень ничего не делает, как ни пытался. "Рыбку" уже пытался переписать, добавлял "#include <pic12f508>", упрощал просто до одного включения порта :

 


#include <xc.h>

// chip=PIC12F508

// CONFIG
#pragma config CP = OFF    // Code protection off 
#pragma config OSC = IntRC // internal RC oscillator 
#pragma config MCLRE = ON  // GP3/MCLR pin function is MCLR 
#pragma config WDT = OFF   // WDT disabled 


#define _XTAL_FREQ 4000000L
#define BUTTON GPIO0
#define LED1 GP1
#define LED2 GP2

void main(void)
{
  GPIO = 0x00; // 
  OPTION = 0b11000000; // подтяжка и пробуждение по входам отключены
  TRIS = 0b11111001; // GP1,GP2 = output
  GPIO = 0x00; 
  GPIO = 0b00000110;
}
 

Но никак запустить прогу не получилось, пробовал ни на одном камне, пока ругаюсь на программатор, может, там дела (он у меня PIC K150, везде пишут, что этот камушек поддерживаеться, но у меня у проге (DIY K150) его в выборе нету, так что в окошке стоит его собрат - pic12C508). Весь день сегодня уже сижу, пока результат один.

ЗЫ за рыбку и советы спасибо 

Link to comment
Share on other sites

4 минуты назад, IMXO сказал:

Цепи внешнего сброса поставлены?

когда это прочёл чуть не вернулся в АВР. 5 сек, гуглю, что это :wall:

5 минут назад, IMXO сказал:

Цепи внешнего сброса поставлены?

к МК подключено питание и осциолограф. Ничего более

Link to comment
Share on other sites

14 минут назад, И пошёл белый дым. . . сказал:

к МК подключено питание и осциолограф. Ничего более

:wall: В РЫБЕ англицким по белому написано:
#pragma config MCLRE = ON  // GP3/MCLR pin function is MCLR 
- включен внешний сброс!!! 4,7..10кОм + 0,1мкф

2090344264_.png.bc47481a8534fb2f5dfd812f3b2a62a1.png
на ноги питания керамику 0,1мкф

Edited by IMXO
Link to comment
Share on other sites

3 часа назад, И пошёл белый дым. . . сказал:

Не робит

а так 

#include <xc.h>

// chip=PIC12F508

// CONFIG
#pragma config CP = OFF    // Code protection off 
#pragma config OSC = IntRC // internal RC oscillator 
#pragma config MCLRE = ON  // GP3/MCLR pin function is MCLR 
#pragma config WDT = OFF   // WDT disabled 


#define _XTAL_FREQ 4000000L
#define BUTTON GPIO0
#define LED1 GP1
#define LED2 GP2

void main(void)
{
  GPIO = 0x00; // 
  OPTION = 0b11000000; // подтяжка и пробуждение по входам отключены
  TRIS = 0b11111001; // GP1,GP2 = output
 // GPIO = 0x00; 
  GPIO = 0b00000010;
  while(1)
  {
      
      GPIO ^= 0b00000110;
      __delay_ms(500);
  }
}

 

Link to comment
Share on other sites

9 часов назад, И пошёл белый дым. . . сказал:

прошивка всё та же. Не робит 

С МК программатором прошивка и бит конфигурации читается?

6 часов назад, skripach сказал:

а так 

Проблема не в коде.

Link to comment
Share on other sites

Уже с этим думаю, с К150 сейчас разбираюсь. Копашусь по форумам и докам. Фьюзы выставлены верно, орентироавчно на конфиг:

1719002701_(7).png.31e2a35bdaa9e6457d83a80c477b81dd.png

А программировать теперь вообще отказываеться, ругаеться на что то, доков на него не нашел, читаю форумы и пытаюсь его как то толкнуть. Лучше бы спаял уже программатор, с этим проблем больше.

Link to comment
Share on other sites

10 часов назад, И пошёл белый дым. . . сказал:

Фьюзы выставлены верно, орентироавчно на конфиг:

ну и к чему скрин бита конфигурации из HEX-файла?

10 часов назад, И пошёл белый дым. . . сказал:

Лучше бы спаял уже программатор, с этим проблем больше.


Для спаять нужен железный LTP или СОМ-порт на компе. через юсбишные свистки спаять не работает.
Лучше взять фирменный PicKit2 или 3 

Link to comment
Share on other sites

16 часов назад, IMXO сказал:

ну и к чему скрин бита конфигурации из HEX-файла?


Для спаять нужен железный LTP или СОМ-порт на компе. через юсбишные свистки спаять не работает.
Лучше взять фирменный PicKit2 или 3 

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

 

16 часов назад, IMXO сказал:

ну и к чему скрин бита конфигурации из HEX-файла?

А что имелось в виду?

Link to comment
Share on other sites

5 часов назад, И пошёл белый дым. . . сказал:

А что имелось в виду?

содержимое микроконтроллера.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Сообщения

    • вот, кстати, читаю тему и удивляюсь: что все так парятся по каким-то уникальным и дорогим ламинаторам? Обычная дешевая Сигма 402 из Метро прекрасно пропускает через себя плату, там валики на пружинках, они расходятся. (и неважно что там в характеристиках написано). Главное, чтобы в приемную щель влезло - а вот там конкретно у Сигмы есть нюанс, со временем пластик крышки чуть ведет и щель сужается - ну так это вопрос один раз верхнюю крышку снять и шлифмашинкой подправить если надо. У меня такая, все работает. Посмотрел на Озоне - полно китайских ламинаторов за 1500, плюс-минус, наверняка внутри точно так же сделаны. (а если и нет - ламинатор в хозяйстве штука полезная по-любому) И на авито есть авито-доставка, на почту пришлют - всегда так покупаю если что надо.   Так и делаю, но маска без прикатанной сверху пленки получается матовой (эстетический момент), и толстой (ну, это и хорошо и плохо). А отжималка от стиральной машины - это уже немного перебор, да и не настраивается там высота щели, насколько я помню ))
    • В плате ? Или выпаянной микросхемы ?
    • @Dimoncheg Акумулятор должен только физике, вам он нифига не должен. С сайту производителя взят ПДФ файл, в котором указанно следующее: Как же теперь вы объясните ни понятно откуда взятые вами цифры и странную зависимость времени зарядки от нагрузки на ИБП?
    • Я говорю о Raspberry Pi Zero (2W). Что это микрокомпьютер в курсе. Моя проблема в том, что мне "непонятен" f746-disco,  в "сравнении" с zero: сделать на zero "мои хотелки" стоит ровно 0, а разобраться нормално с srm32f7xx мне ну не два пальца ... вот.  И когда я колдую с диско, то меня уносит куда то не туда...
    • Вот и я об этом же. Невозможно собрать то, не зная что. Конечно, когда-та она всплывет, но на данный момент, насколько я знаю, она еще даже не обрела законченный вид.
×
×
  • Create New...