Например TDA7294

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

Текущее время: Пт сен 26, 2025 23:45:08

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


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



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

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

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

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


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

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


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

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

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

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

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


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


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

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


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

Карма: 25
Рейтинг сообщений: 458
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1673
Откуда: 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
Сообщений: 131
Откуда: Пенза
Рейтинг сообщения: 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]

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


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

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


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

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


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

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


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