Перейти к содержанию
С Днём Победы! ×

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


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

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

Изменено пользователем И пошёл белый дым. . .
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

Особенности хранения литиевых аккумуляторов и батареек

Потеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов. Подробнее>>

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

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

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

Реклама: АО КОМПЭЛ, ИНН: 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.

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

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);  
}
}

 


 

 

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

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

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

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

Спойлер

766602606_.jpg.fde7575dcaf844e29268006cc4ceded4.jpg

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

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

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

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

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

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

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

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

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

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

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

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

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. да не требует, он по дефолту их по разным папкам рассовывает.

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

Если геморрой писать на 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

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

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

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

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

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

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

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

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

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

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). Весь день сегодня уже сижу, пока результат один.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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);
  }
}

 

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

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

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

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

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

а так 

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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