Например TDA7294

Форум РадиоКот • Просмотр темы - Програмирование pic на СИ.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб янв 03, 2026 07:32:03

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 1385 ]     ... , , , 69,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт май 22, 2025 11:32:59 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24646
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Если надо иметь на выходе функции единицу, если хоть один флаг выставлен, то используйте или лог.ИЛИ или даже побитное ИЛИ.

Или можно сразу объявить структуру с полями flag_up и flag_dn, тогда return сможет вернуть оба значения одновременно.
Правда нужно помнить, что вызов функции в условии, где поочередно проверяются поля структуры возвращаемой функцией, сама функция будет вызываться столько раз, сколько полей проверяется (тут два поля). Что не торт. Поэтому лучше сначала значение функции буферизовать в локальную переменную того же типа.

ЗЫ. По существу вопроса.
А зачем вообще возвращать значение функции, если ГЛОБАЛЬНЫЕ переменные имеют это самое значение?
Бессмыслица.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пн июл 14, 2025 01:37:05 
Встал на лапы

Карма: -10
Рейтинг сообщений: -76
Зарегистрирован: Пт мар 29, 2013 23:53:14
Сообщений: 91
Рейтинг сообщения: 0
Привет. Я пытаюсь изучить программирование PIC на си.
Сочинил в mplab x простую программу под xc8 v2.50
...


I need help. :cry:


Доброй ночи!
Могу предложить тестовый проект: https://drive.google.com/file/d/1_XUKBT ... sp=sharing

Возможно, найдёте что-то что поможет в освоении пиков.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс июл 20, 2025 13:27:31 
Встал на лапы

Карма: -10
Рейтинг сообщений: -76
Зарегистрирован: Пт мар 29, 2013 23:53:14
Сообщений: 91
Рейтинг сообщения: 0
Добрый день!

Для Катэ911:

У Вас очень плохо организован опрос кнопок :)
Опросить пин ... подождать 15 миллисекунд - чтобы ещё раз опросить .... (см. скрин 1) хм...

Далее, Вам нужно ДВА флага для ваших кнопок. Зачем используете ДВА байта ?
Далее, Вы используете всего ОДИН флаг кнопок - или ПЛЮС или МИНУС, зачем тогда используете ДВА байта, и не исключаете использование второго - в случае если кнопка ПЛЮС зафиксирована?

Далее, Вы пришли в основной (майн) код. Вы собираетесь только этим заниматься, или там будет ещё куча всяких действий?

Так может не нужно просиживать по 15 - 100 миллисекунд без всяких других действий?
Может просто организовать некий тайминг с прерыванием на основе ЛЮБОГО свободного таймера, настроить его на некую константу прерываний, а всё остальное (включая задержки)
пусть пляшет от того тайминга (см. скрин 2).

В общем, я немного подправил Ваш исходник, но по уму - его нужно переписать с нуля :)
https://drive.google.com/file/d/1Grr_Yh ... sp=sharing

Добавлено after 56 minutes 20 seconds:
https://drive.google.com/file/d/1mQ8JaI ... sp=sharing


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пт авг 01, 2025 21:28:41 
Встал на лапы

Карма: -10
Рейтинг сообщений: -76
Зарегистрирован: Пт мар 29, 2013 23:53:14
Сообщений: 91
Рейтинг сообщения: 0
https://drive.google.com/file/d/10dSxBN ... sp=sharing


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб сен 13, 2025 08:22:57 
Встал на лапы

Зарегистрирован: Вс окт 11, 2009 09:54:59
Сообщений: 133
Откуда: Пенза
Рейтинг сообщения: 0
всем привет )
сразу,у меня это одно из хобби.экспериментатор(как в песенке группы Алиса)
это в общем то не совсем по языку Си ,но про Pic мк.я решил не создавать новую тему,если что сделаем.

вопрос по такому.
в МК есть аппаратные сбросы по WDT/POR/BOR,флаги их..
как мне правильно это все обрабатывать?

например мк(устройство работало штатно) произошел сброс по снижению напряжения питания.1секунда потери например.
цель - для пользователя это просто моргнул индикатор,все работает ка и было.
возьмем что то,часы пусть.
при сбросе адрес выполнения программы переходит на 0x0000,получатся начало ?
Код:
main(_)
{...

т.е. проверять флаги,ЧП сброса в начале программы,до основного цикла ( while))
правильно я понимаю ?
в общем случаем как тут быть,писать флаг что все,хорошо,затем при сбросе его проверить-если что то запуск индикатора и т.д.(часы)
но если это более серьезное ,например эбу авто.
как узнавать что на 1сек был затык ,и вернуться к норм работе?
(это конечно грубый пример,там все серъезн)


получается я могу программно проверить только в главных функциях main()
isr (interrupt )?
как понять что система работала-сброс-опа,питание упало поднялось,это было включено.это нет ,идем сюда...?


сумбурно немного :roll: но так

_________________
Интересная,однако,штука


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб сен 13, 2025 08:37:03 
Мудрый кот

Карма: 25
Рейтинг сообщений: 494
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1832
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
После ресета, до main() проверить регистр PCON: POWER CONTROL REGISTER -> Determining the Cause of a Reset
Будет ли МК что-то делать или нет потом, зависит от поставленных задач.

Код:
The Power Control (PCON) register contains flag bits to differentiate between a:
• Power-on Reset (POR)
• Brown-out Reset (BOR)
• Reset Instruction Reset (RI)
• MCLR Reset (RMCLR)
• Watchdog Timer Reset (RWDT)
• Stack Underflow Reset (STKUNF)
• Stack Overflow Reset (STKOVF)

Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт сен 18, 2025 05:42:13 
Встал на лапы

Зарегистрирован: Вс окт 11, 2009 09:54:59
Сообщений: 133
Откуда: Пенза
Рейтинг сообщения: 0
[code
#include "main.h"

#ifndef _XTAL_FREQ
#define _XTAL_FREQ 4000000L //4Mgz
#endif




__CONFIG(UNPROTECT&BORDIS&MCLRDIS&PWRTDIS&WDTDIS&INTIO&LVPDIS);


int temper = 0;
int time_h = 0;
int time_m = 0;
char time_buf[6];


void interrupt isr(void)
{


}


void init(void)
{ CLRWDT();
OPTION = 0b00000000; //internal OSC ,1:2
INTCON = 0b00000000; // interrupts at peripheral
PIE1 = 0b00000000; //tmr1 and ctmr 2 off
PIR1 = 0b00000000;

PCON = 0b00001011; // OSC 4MHz
CMCON = 0b00000111;
VRCON = 0b00000010;
TXSTA = 0b00000010;
RCSTA = 0b00000000;
PORTA = 0b00000000;
PORTB = 0b00000000;
TRISA = 0b00000000;
TRISB = 0b00000000;
GIE = 0;
}
void main(void)
{ Тут прверка ЭТИХ БИТОВ СБРОСА ???????
init();
lcd_init();
// INIT_DS();
temper = 0x01;

sprintf(time_buf,"%d",temper);

lcd_puts(time_buf);

while(1)

{
temper = 0x06;[/code]

_________________
Интересная,однако,штука


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс ноя 23, 2025 02:53:46 
Встал на лапы

Карма: -10
Рейтинг сообщений: -76
Зарегистрирован: Пт мар 29, 2013 23:53:14
Сообщений: 91
Рейтинг сообщения: 0
всем привет )

вопрос по такому.
в МК есть аппаратные сбросы по WDT/POR/BOR,флаги их..
как мне правильно это все обрабатывать?

например мк(устройство работало штатно) произошел сброс по снижению напряжения питания.1секунда потери например.
цель - для пользователя это просто моргнул индикатор,все работает ка и было.
возьмем что то,часы пусть.
при сбросе адрес выполнения программы переходит на 0x0000,получатся начало ?


Добрый вечер!

POR и BOR это флаги сброса мк. Т.е. вы запустили проц, проверили бит "POR" - если там НОЛЬ, то проц потерял питание. Обрабатываете сброс, этот флаг устанавливаете.
При следующем старте проца с нуля (с адреса 0х0000) опять смотрите этот флаг. Если он равен НУЛЮ, то у вас пропало напряжение. Опять устанавливаете для себя ... ну... если нужно ...
"BOR" - это типа пересброс проца при снижении напряжения до определённого уровня, уровень выбирается в конфигурации проца.
Принцип работы такой-же: установили в софте, при сбросе - проверили.
Вообще - это всё описано в даташите на конкретный проц, в пунктах "Reset" или "Device Configuration", и отличается от проца к процу.

А WDT - это контроль работы проца, т.е. если вы находитесь в стандартном там цикле работы (while) и периодически сбрасываете этот таймер, то проц работает нормально.
А если по каким-то причинам прога ушла куда-то ... то вы уже не сбрасываете этот таймер, и тогда автоматический сброс проца по этому таймеру - вотчдогу.
Вы можете его сбрасывать чисто в майне, можете сбрасывать в несколькиз местах, где программа бывает постоянно.
Суть этого таймера - если что-то пошло не так, и вы не в основном коде, значит вы софтово не сбросите таймер-собачку и проц сбросится, и работа начнётся с нуля.
А часы.... А часы чисто на пик16/18 делать смысла нет, проще отдельно поставить микросхему типа DS1302/DS1307/MCP7941x с отдельной батарейкой 2032 к примеру...
Когда считываешь оттуда время - туда же в свободную память ОЗУ это же время и записываешь.
Если очередной раз считал время из микросхемы, и предыдущее записанное не соответствует - значит - был сброс по каким-то причинам...
Т.е. POR и BOR использовать не обязательно, а WDT желательно при неуверенности в качестве своей прошивки. Бывают сбои внешние, типа некого электромагнитного импульса, ну или
что-то наподобие ...
При этом проц может потерять некие рабочие данные. Но при этом, не будет внутреннего сброса. Для таких целей можно через энное время ( к примеру час) обновлять некую запрограммированную инфу из ЕЕПРОМ проца.
Но это всё индивидуально, и каждый решает сам для себя - какой важности устройство, и что нужно периодически обновлять...
К примеру, есть ребята (фирмы) которые любят приинициализации (запуске) их устройства - забросить статическую инфу в индикатор (некие названия), а после - обновлять только данные.
В результате - приходишь на объект - а там кракозябры на индикаторе!
Влево-вправо страницами меню передёрнул - инфа восстановилась. Вот как-то так.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс ноя 23, 2025 13:46:59 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24646
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
А часы.... А часы чисто на пик16/18 делать смысла нет, проще отдельно поставить микросхему

Смысл в том, чтобы не было еще одной микросхемы. Просто потому, что она не нужна. Контроллер вполне справится с менеджментом своего питания в зависимости от режима работы. Для этого есть специальные версии чипов с ультрамалым потреблением PIC16LF. Но можно и на обычных делать. При питании от элементов 2032 нет никакого смысла брать LF. Саморазряд выше потребления.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс ноя 23, 2025 15:14:41 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1318
Рейтинг сообщения: 0
del


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пт ноя 28, 2025 16:53:57 
Встал на лапы

Карма: -10
Рейтинг сообщений: -76
Зарегистрирован: Пт мар 29, 2013 23:53:14
Сообщений: 91
Рейтинг сообщения: 0
А часы.... А часы чисто на пик16/18 делать смысла нет, проще отдельно поставить микросхему

Смысл в том, чтобы не было еще одной микросхемы. Просто потому, что она не нужна. Контроллер вполне справится с менеджментом своего питания в зависимости от режима работы. Для этого есть специальные версии чипов с ультрамалым потреблением PIC16LF. Но можно и на обычных делать. При питании от элементов 2032 нет никакого смысла брать LF. Саморазряд выше потребления.


Ну с одной стороны Вы правы, а с другой стороны ... микрочип почему-то не хочет делать в своих мк отдельную ножку питания ?!?
А тогда, заглядываем в раздел "Electrical Charasteristics", и находим там минимальный режим потребления.
Можно поискать в начале даташита, где указаны "Low Power Features", и тогда окажется - что если работает некий таймер-генератор 32768, то проц почему-то жрёт очень много :)

К примеру из сегодня используемых мной мелкочипов (12F629, 12F1822, 16F15214) для пультов с нормальным потреблением от батареек подходит только первый.

А в режиме работы вторичного генератора на 32768 Герц и при этом с потреблением 300 нА (DS1307) - мк у Микрочип вообще не найти ....

И тогда встаёт законный вопрос: батарейка и DS1307 за один бакс, или мучаться с выбором проца с характеристиками, которые практически недостижимы :)

Я не люблю скакать как блоха, меня устраивает продукция Микрочип, ну и соответственно - мне проще поставить стороннюю микросхему часов, да даже не стороннюю а микрочиповскую, но я буду знать - что напряжение пропало,
а часы ещё тикают лет так 6-10 :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пт ноя 28, 2025 21:46:30 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24646
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
К примеру из сегодня используемых мной мелкочипов (12F629, 12F1822, 16F15214) для пультов с нормальным потреблением от батареек подходит только первый.
А в режиме работы вторичного генератора на 32768 Герц и при этом с потреблением 300 нА (DS1307) - мк у Микрочип вообще не найти ....

Начнем с того, что ваш выбор МК Микрочипа в принципе не подходит для часов.
И дело тут даже не в потреблении, а в количестве ног и наличии отдельного LP генератора с внешним кварцем ОДНОВРЕМЕННО.
По количеству ног подходит PIC16F15214, но у него вообще нет осциллятора под внешний кварц.
А по поводу потребления у вас странные аргументы. Часы изначально предполагают 99% работы чипа в режиме PD. То есть в слипе. Внешний кварц работает на первый таймер, который генерирует прерывания с периодом в секунду или две секунды (зависит от наличия секундных показаний часов). Вычисление времени и вывод делаются НА ПРЕДЕЛЬНОЙ СКОРОСТИ возможной для внутреннего генератора без PLL (обычно это 8 или16 МГц - зависит от МК).
Все остальное время МК находится в слипе и потребляет ток этого режима. Для чипов LF это примерно 70 нА при напряжении питания 3 В.
Если написать код на АСМе и работать с интервалом прерываний 1 сек, можно получить скважность работы в активном режиме порядка 30000...50000. Эта скважность является деноминатором тока потребления на частоте работы МК (8 или 16 МГц). Делим этот ток на деноминатор-скважность и прибавляем ток слипа.
Гарантирую кратно меньшее потребление по сравнению с отдельным чипом.
Ну и про срок работы от таблетки 2032. Ее емкость составляет примерно 100 мАч доступных для разряда без извращений. Номинальная емкость 145 мАч.
Таким образом, при токе в 1 мкА она будет разряжаться 100000 часов. Это составляет 11 лет. Эта таблетка имеет срок хранения меньше этой величины.
Поэтому говорить о токе меньше 1 мкА как о необходимой величине просто смешно. Даже 3 мкА вполне отличный результат для такого питания.
Потребление порядка 100...200 нА применяется при питании устройств от слабых солнечных элементов в условиях искусственного освещения.


Последний раз редактировалось КРАМ Сб ноя 29, 2025 19:37:11, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб ноя 29, 2025 18:31:17 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт фев 28, 2017 08:13:31
Сообщений: 75
Откуда: Свердловская обл.
Рейтинг сообщения: 0
скорее всего имелись ввиду PIC16F15224 so-14

но есть же много других в so-14 где можно подключить LP
PIC16(L)F1823/24/25
PIC16(L)F18323/324/325
и прочие

среди китайских ARM нашёл интересный чип
HC32L110 ( tssop20, tssop16 )
где можно подключить кристалл LSE 32768 Hz
(можно одновременно и HSE и LSE)

и потребление достаточно небольшое
предварительные тесты ЗДЕСЬ
https://github.com/Xiamatsu/HC32L_eide#hc32l110

правда внутри это не STM32 от слова - совсем
но зато на ОЗОНе продают - недорого


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб дек 06, 2025 02:04:42 
Встал на лапы

Карма: -10
Рейтинг сообщений: -76
Зарегистрирован: Пт мар 29, 2013 23:53:14
Сообщений: 91
Рейтинг сообщения: 0
скорее всего имелись ввиду PIC16F15224 so-14

но есть же много других в so-14 где можно подключить LP
PIC16(L)F1823/24/25
PIC16(L)F18323/324/325
и прочие

среди китайских ARM нашёл интересный чип
HC32L110 ( tssop20, tssop16 )
где можно подключить кристалл LSE 32768 Hz
(можно одновременно и HSE и LSE)

и потребление достаточно небольшое
предварительные тесты ЗДЕСЬ
https://github.com/Xiamatsu/HC32L_eide#hc32l110

правда внутри это не STM32 от слова - совсем
но зато на ОЗОНе продают - недорого


Вы правы :) Это имелось ввиду PIC12F629/1822/15214 - которые работают в качестве пультов :)
и пики не продаются на Озоне в отличие от стм32 :)
А то что чуть выше, в комментах то конечно не на пик12 :)
И если смотреть на потребление, то к примеру пик18LFx5k22 ... там собакен 300 нАмпер, а 32768 всего-то 800 нАмпер :)
Но я спорить не собираюсь :)
https://drive.google.com/file/d/17c7gX2 ... sp=sharing

А делаю я много всякого "г**на", кому не лень, можете глянуть :
https://drive.google.com/file/d/1qomVgn ... sp=sharing


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб дек 13, 2025 13:17:08 
Встал на лапы

Карма: -10
Рейтинг сообщений: -76
Зарегистрирован: Пт мар 29, 2013 23:53:14
Сообщений: 91
Рейтинг сообщения: 0
Добрый день!

Небольшой архив для тех, кто учит пик контроллеры:
https://drive.google.com/file/d/1Aw9idc ... sp=sharing

Ну ... возможно - кому-то что то будет интересно :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс дек 14, 2025 21:03:37 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4599
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
ALEKS1102X, и что там ? Какие-то курсы ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб дек 20, 2025 19:30:46 
Встал на лапы

Карма: -10
Рейтинг сообщений: -76
Зарегистрирован: Пт мар 29, 2013 23:53:14
Сообщений: 91
Рейтинг сообщения: 0
У вас так всё интересно :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб дек 27, 2025 01:58:51 
Встал на лапы

Карма: -10
Рейтинг сообщений: -76
Зарегистрирован: Пт мар 29, 2013 23:53:14
Сообщений: 91
Рейтинг сообщения: 0
ALEKS1102X, и что там ? Какие-то курсы ?


А когда людям посылаешь (предлагаешь) некие данные ... они обязательно должны быть курсами по учёбе ?
Я ранее считал, что если здесь люди учаться работать с микроконтроллерами pic, то курсы не обязательны ...
Человек Darkmaster спрашивает, кто-то помогает.
В идеале - модератор - как самый знающий, а если нет, то люди со стороны.
Или я не прав?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс дек 28, 2025 14:15:55 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4599
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
ALEKS1102X писал(а):
они обязательно должны быть курсами по учёбе ?
Нет. Но Вы, похоже, не заметили, что у меня был вопрос, а не утверждение.
Качать архив без описания, чтобы посмотреть что там - такое себе занятие.
Не проще было Вам дать описание, чтобы избавить людей от лишних скачиваний ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс дек 28, 2025 18:42:53 
Прорезались зубы
Аватар пользователя

Карма: 5
Рейтинг сообщений: 25
Зарегистрирован: Ср сен 11, 2024 10:18:53
Сообщений: 247
Рейтинг сообщения: 0
Я заглянул. Авторское видение дистанционного управления воротами.

_________________
Audiatur et altera pars !


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 1385 ]     ... , , , 69,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y