Например TDA7294

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





Текущее время: Пт апр 19, 2024 01:57:57

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


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



Начать новую тему Ответить на тему  [ Сообщений: 1334 ]     ... , , , 49, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт мар 15, 2018 07:06:22 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 1368
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7214
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Скажем так, что мне влом искать лекарство, пока это меня сильно не напрягает. С другой стороны, это забота микромела, чтобы у пользователей были удобные средства разработки - тогда они будут популярны и востребованы. А если они давятся из-за каждой копейки, то есть еще куча других производителей, на которые можно перейти. И у которых доступны внятные компиляторы. Ну это уже оффтоп.

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

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт мар 15, 2018 08:24:32 
Открыл глаза

Зарегистрирован: Пт янв 11, 2013 10:54:43
Сообщений: 60
Рейтинг сообщения: 0
XC8 ver. 1.45 ругается
Код:
implicit signed to unsigned conversion
на такую строку
Код:
lcd_putch(r[0] + 48);
Аргументы функции и переменная r[0] объявлены как u8. В ver. 1.38 такого нет, у обоих
Код:
 --warn=-3
.
Забить?


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

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21806
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
это про XC8 - платный он дюже дорог. А триальными 60-ю днями я уже в прошлом году воспользовался и это счастье больше мне не светит.

Пользуйтесь помесячной лицензией. 30 дней - 1800 рублей.
А вообще, я как то обхожусь для 8-разрядных АСМом. Если уж на них делается объемный проект со стеками протоколов, то тогда имеет смысл минимизировать затраты помесячной лицензией.
http://www.microchip.com/developmenttoo ... 006021-sub
https://www.microchipdirect.com/product ... 006021-sub
ЗЫ. К слову, лицензий с бесконечным сроком нет. Есть либо месячная, либо годовая.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт мар 15, 2018 09:27:08 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
XC8 ver. 1.45 ругается

тож ругается на старую проверенную чужую библиотеку, но в железке работает - где то на форуме Микрочипа вроде обещали, что поправят


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт мар 15, 2018 09:31:36 
Потрогал лапой паяльник

Карма: 11
Рейтинг сообщений: 62
Зарегистрирован: Сб авг 08, 2009 23:02:57
Сообщений: 392
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Код:
lcd_putch(r[0] + 48);
Аргументы функции и переменная r[0] объявлены как u8.
Код:
 --warn=-3
.


По умолчанию число 48 - signed
Микрочип рекомендует:
The warning is caused by the "i - 1"; this results in a signed value which is being used as an array index. Make it "i - 1U" instead.

Ваш код
Код:
lcd_putch(r[0] + 48U);


А от разработчика компилятора
Цитата:
I don't know if this qualifies as a "good" answer, but it's the only one I've got:

XC8 generates that message in a number of situations where it arguably should not. We don't yet know precisely why it does (and thus we don't know how we can change the compiler to stop it), which is why it was designated a level "-3" warning, when the compiler's default warning level is "0". But MPLAB X recently changed to explicitly set the compiler's warning level to "-3" so you get the warning now.

You can eliminate many often-bothersome warning messages by changing your MPLAB X project settings to specify a warning level of "-2" (which is the level I have historically recommended as being most helpful while still least distracting). Selecting this level means you will miss out on some useful warnings, but you will also avoid a lot of noise. It's up to you if this tradeoff is acceptable.


Что соответствует выбору - "забить"

_________________
__________________
Все, что нельзя запрограммировать на ассемблере, приходится паять


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт мар 15, 2018 10:18:07 
Открыл глаза

Зарегистрирован: Пт янв 11, 2013 10:54:43
Сообщений: 60
Рейтинг сообщения: 0
Цитата:
По умолчанию число 48 - signed

Глупый вопрос - это стандарт?
Цитата:
Ваш код
Код:
lcd_putch(r[0] + 48U);

Тем не менее приводится в норму без предупреждений:
Код:
r[0] += 48;
lcd_putch(r[0]);

Код:
Что соответствует выбору - "забить"

Мне кажется не тот случай, путаница с типами не такая уже редкая ошибка. И предупреждения здесь уместны.
Только сейчас заметил, если аргументом функции lcd_putch() является signed переменная, то XC8 1.38 не предупреждает при
Код:
--warn=-3
Вывод: один и тот же уровень "WarningLevel" разных версий ХС8 отвечает за разный набор кодов предупреждений.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт мар 15, 2018 11:02:42 
Потрогал лапой паяльник

Карма: 11
Рейтинг сообщений: 62
Зарегистрирован: Сб авг 08, 2009 23:02:57
Сообщений: 392
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Цитата:
По умолчанию число 48 - signed

Глупый вопрос - это стандарт?
.


ХЗ. я обычно не применяю не именованные константы, делаю так

Код:
const uint8_t divider = 48;


Потом настройки программы можно делать из одного места а не лазить по всему коду.

_________________
__________________
Все, что нельзя запрограммировать на ассемблере, приходится паять


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт мар 15, 2018 12:08:14 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
48 - ascii код нуля, интересно прокатит ли lcd_putch(r[0] + '0');
з.ы. в itoa.c в папке xc8 есть
Код:
char      c;
....
c += '0';
....


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

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Код:
lcd_putch(r[0]+'0');
не ругается.
Версия 1.45


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср апр 11, 2018 12:36:45 
Встал на лапы

Зарегистрирован: Ср ноя 05, 2014 19:04:31
Сообщений: 114
Рейтинг сообщения: 0
Доброго времени суток! Решил в этой ветке задать вопрос: пробую использовать таймер 0 в контроллере PIC18f47J53. Но почему то результата 0
Код:
void init_Timer0()
{
   T5CON.T08BIT  = 0;   // 16 бит
   TMR0L = 0x47;       
   TMR0H = 0x71;     
   T0CON.PSA = 0;     
   T0CON.T0CS = 0;
   T0CON.T0SE = 0;
   T0CON.T0PS0 = 0;   //*****************
   T0CON.T0PS1 = 1;   // прескаллер 1:128 *
   T0CON.T0PS2 = 1;   //*****************
   T0CON.TMR0ON = 1; // старт таймера
}

void interrupt() {
     //USB Interrupt
     USB_Interrupt_Proc();
     
     if (INTCON.TMR0IF&&INTCON.TMR0IF)
     {
       PORTD.f5 = ~(PORTD.f5); // моргаю светодиодом
       INTCON.TMR0IF = 0;
       TMR0L = 0x47;
       TMR0H = 0x71;
     }

}


Светодиод зажигается один раз и горит постоянно. Частота МК 24МГц


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср апр 11, 2018 12:47:29 
Потрогал лапой паяльник

Карма: 11
Рейтинг сообщений: 62
Зарегистрирован: Сб авг 08, 2009 23:02:57
Сообщений: 392
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Для 18 серии надо писать в LAT.
Пример макроса

Код:
#define LED_1_Toggle()             do { LATBbits.LATB4 = ~LATBbits.LATB4; } while(0)

_________________
__________________
Все, что нельзя запрограммировать на ассемблере, приходится паять


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

Зарегистрирован: Ср ноя 05, 2014 19:04:31
Сообщений: 114
Рейтинг сообщения: 0
Для 18 серии надо писать в LAT.



Попробовал писать в LATD светодиод быстро моргает 3 раз и затем постоянно горит.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср апр 11, 2018 13:18:25 
Потрогал лапой паяльник

Карма: 11
Рейтинг сообщений: 62
Зарегистрирован: Сб авг 08, 2009 23:02:57
Сообщений: 392
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Еще возникает вопрос по этой строке

Код:
T5CON.T08BIT  = 0;   // 16 бит


Если в ней ошибка и надо TOCON то еще поменяйте местами строки

Код:
       TMR0L = 0x47;
       TMR0H = 0x71;


Так как запись в таймер происходит по записи в L регистр а в H из защелки
-----
Similarly, a write to the high byte of Timer0 must also
take place through the TMR0H Buffer register. The high
byte is updated with the contents of TMR0H when a
write occurs to TMR0L. This allows all 16 bits of Timer0
to be updated at once.
-----

_________________
__________________
Все, что нельзя запрограммировать на ассемблере, приходится паять


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

Зарегистрирован: Ср ноя 05, 2014 19:04:31
Сообщений: 114
Рейтинг сообщения: 0
Подозрение, что не заходит в обработчик прерывания. Сейчас все лишнее из программы удалил оставил только обработчик таймера. В итоге светодиод не горит.

Добавлено after 2 hours 21 minute 28 seconds:
Проблемы с английским вытекают в глупые ошибки. Не правильно перевел даташит.. Небходимо было разрешить прерывание от таймера.

INTCON.T0IE=1;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пн май 14, 2018 09:13:22 
Открыл глаза

Зарегистрирован: Пн авг 05, 2013 12:18:46
Сообщений: 54
Рейтинг сообщения: 0
Коллеги мне нужна помощь, есть готовое устройство, схема обсуждению не подлежит ее менять нельзя, нужно написать на него программу. При старте программа читает положение джамперов для настройки один раз и далее динамическая индикация.
С чтением проблем вроде нет, по Х поочередно даем 0, Y - входы с подтяжкой.
X1=0;X2=1;X3=1;Set[1-1]=pinY2;Set[4-1]=pinY1; //читаем джамперы J1,J4
X1=1;X2=0;X3=1;Set[2-1]=pinY2;Set[5-1]=pinY1; //читаем джамперы J2,J5
X1=1;X2=1;X3=0;Set[3-1]=pinY2;Set[6-1]=pinY1; //читаем джамперы J3,J6
и заполняем массив Set[6]
а вот с динамической индикацией голову сломал, ну понятно, делаем прерывание с нужной частотой.
Далее рассуждения такие: X3=0 и больше его не трогаем. Поочередно по выходам X1 или X2 даем 1.
Если допустим X2=1 и светодиод D1 нужно зажечь то Y2=0 а если потушить то Y2 нужно перевести как вход без подтяжки (потому что если сделать просто Y2=1 то он может встретится с X=0 через D16 или D18 и возможно замкнутые джамперы )
и в свою очередь если светодиод должен быть потушен и на X2=1 то он получит на Y2 низкий уровень через джампер и диод с X1 и X3 и все равно будет светиться. Получается и X если он не 1 нужно переводить на вход без подтяжки, как-то все коряво и сложно получается на элементарной вроде схеме.
Подскажите пож как красиво обслужить такого типа схемку на динамической индикации и может опрос входов тоже проще можно сделать??


Вложения:
Комментарий к файлу: схема
1.jpg [72.19 KiB]
Скачиваний: 761
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср май 23, 2018 10:54:36 
Нашел транзистор. Понюхал.

Карма: 3
Рейтинг сообщений: 3
Зарегистрирован: Пн мар 06, 2017 18:53:23
Сообщений: 152
Откуда: Казань.
Рейтинг сообщения: 0
о обучении.
в компиляторах есть библиотеки готовых функций и описаны они с хорошим вкусом и их можно и нужно использовать в качестве обучающего материала.
к тому же описание на сам компилятор является главным учебным пособием по программированию PIC.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт авг 30, 2018 10:00:44 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
Подскажите как сделать ассемблерную вставку, что-то типа такого
Код:
#define SetBit(adr, bit) asm("BSF adr, bit")


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт дек 04, 2018 09:27:11 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Вс дек 18, 2011 14:41:24
Сообщений: 273
Откуда: Ангарск
Рейтинг сообщения: 0
Добрый день. Нужно вывести из ножки PIC24 8-битное число, начиная со старшего бита (для сдвигового регистра). Написал такую функцию.
Код:
HC164(int x) //record the byte to 74HC164
{ unsigned char b;
   char j;
   for(j=7;j>-1;j--)
   {b=x; //записываем входное число от 0 до 255 в 8-битную переменную без знаков.
     b»j; //сдвигаем на j, чтоб записываемый бит оказался младшим (начинаем запись с самого старшего)
     PORTCbits.RC0=b; //serial data пишем бит
     PORTBbits.RB3=1; //clock дрыгаем clock
     PORTBbits.RB3=0;}} //clock


В результате, на RC0 результат совершенно отличается от ожидаемого (то стабильно в единице, то стабильно в нуле). Сам порт и регистр работает (проверял записью конкретно заданных бит).

Я правильно понимаю, что PORTbits записывает в порт только младший бит? Проверил записью чисел больше 1. При записи нечетных светодиод горит, при четных - не горит. Осциллограф отобразил появление только младшего бита. Если код в корне не правильный, то как сделать правильно?

Добавлено after 7 minutes 22 seconds:
Также попробовал PORTAbits.RC0<<b; результат тот же.


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

Карма: 46
Рейтинг сообщений: 1368
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7214
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
у pic24 нет регистра LAT? возможно, вы нарвались на старую проблему, что у пиков записанное не обязательно равно прочитанному (по крайней мере сразу). Потому как читается состояние входов, а "свежевыведенное" на ножки может устанавливаться чуть дольше, чем работает процессор.

ой, как всё запущено.
Код:
for(j=7;j>-1;j--)
на эту строчку варнингов нет? j у вас по умолчанию без знаковое. так что сравнение всегда истинно.
Код:
PORTCbits.RC0=b; //serial data пишем бит
тут я не уверен.... что писаться будет именно младший бит. Для надёжности я бы замаскировал остальные биты типа
Код:
PORTCbits.RC0 = b & 0x01u; //serial data пишем бит
Может было бы правильнее просто двигать маску:

Код:
unsigned char mask = 0x80;
for (j=0 ; j < 8; j++) {
  PORTCbits.RC0 = (x & mask) ? 1 : 0 ;
  mask >> 1;
}

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср дек 05, 2018 08:38:47 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Вс дек 18, 2011 14:41:24
Сообщений: 273
Откуда: Ангарск
Рейтинг сообщения: 0
Код:
? 1 : 0


Можно подробней про эту команду? Что она делает?

Добавлено after 28 minutes 39 seconds:
Кстати, таки заработало. Благодарствую.

Добавлено after 1 hour 46 minutes 41 second:
А, понял. Сишная запись "if-else"


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

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


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

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


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

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


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