»Радиолюбитель>PIC контроллеры. Программаторы и первый проект на PIC
Teeen 05:27 28.12.2013
Здравствуйте!
С наступающим всех Новым 2014 годом!
Подскажите пожалуйста следующее: подключил к МК ч/з токовый датчик (ACS712 - 20А) электродвигатель на 12В 5А. Питание подаю на него ч/з опторазвязанное реле. Так вот, бывает, что на LCD пропадает индикация (такое впечателени от какой-то помехи при включении двигателя), но сам МК продолжает успешно работать. В чем может быть проблема?
[Ответ]
sapple 17:53 29.12.2013
Здравствуйте, с Наступающим! Подскажите пожалуйста , у меня прогорел микроконтроллер pic 16f что то там дальше . Аппарат не запускается и не подает признаков жизни. Кто сможет помочь откликнитесь. По цене договоримся
[Ответ]
мич 03:00 30.01.2014
если запитка от общего блока бп,возможно просадка при запуске движка (12в 5а)+ пятикратная перегрузка при запуске(25А) а контроллер за счет емкости по питанию держится.
[Ответ]
sapple 23:38 15.02.2014
КТо сможет написать программу для микроконтроллера??? ОТкликнитесь!!!!
[Ответ]
petrd, здравствуйте!
Подскажите пожалуйста, я правильно понимаю, что для DS18B20 можно использовать внешнее питание, например +5В, даже если микроконтроллер работает на +3.3В, подтягиваем шину данных DS18B20 ч/з резистор 4,7кОм к питанию процессора +3.3В и всё?
[Ответ]
petrd 18:06 17.04.2014
Сообщение от Teeen: petrd, здравствуйте!
Подскажите пожалуйста, я правильно понимаю, что для DS18B20 можно использовать внешнее питание, например +5В, даже если микроконтроллер работает на +3.3В, подтягиваем шину данных DS18B20 ч/з резистор 4,7кОм к питанию процессора +3.3В и всё?
ИМХО. Да, судя по даташиту можно. Как понял - главное, чтобы напряжение подтяжки не было больше напряжения питания DS-ки, а полученные от такого опуса логические уровни соответствовали уровням работающего с ней устройства.
[Ответ]
Teeen 09:35 22.04.2014
Сообщение от petrd:
ИМХО. Да, судя по даташиту можно. Как понял - главное, чтобы напряжение подтяжки не было больше напряжения питания DS-ки, а полученные от такого опуса логические уровни соответствовали уровням работающего с ней устройства.
Спасибо большое!
Не могли бы вы мне поведать/посоветовать вот что:
в цикле я опрашиваю DS18B20, который подключен по UTP 5 категории к МК. И вот бывают случаи, когда при очередном опросе датчика, в его памяти? сохранена температура -44С или -38С, хотя реально температура всегда выше 0С. Эти сбои проявляются в основном при понижении температуры, измерямой датчиком. Никакой закономерности я не выявил. Может причиной описанной ситуации быть плохой контакт от ножки МК до DS?
[Ответ]
petrd 08:29 23.04.2014
Сообщение от Teeen:
Спасибо большое!
Не могли бы вы мне поведать/посоветовать вот что:
в цикле я опрашиваю DS18B20, который подключен по UTP 5 категории к МК. И вот бывают случаи, когда при очередном опросе датчика, в его памяти? сохранена температура -44С или -38С, хотя реально температура всегда выше 0С. Эти сбои проявляются в основном при понижении температуры, измерямой датчиком. Никакой закономерности я не выявил. Может причиной описанной ситуации быть плохой контакт от ножки МК до DS?
В программе контрольная сумма (CRC) участвует в работе? Если нет, то надо задействовать. Она в DS18B20 не зря реализована.
[Ответ]
Teeen 04:42 21.05.2014
Сообщение от petrd:
В программе контрольная сумма (CRC) участвует в работе? Если нет, то надо задействовать. Она в DS18B20 не зря реализована.
Спасибо. Да не задействована. Сделал пока так, 20 раз анализирую новое показание, если оно остается в течение этих 20 раз неизменным, только тогда беру его в рассчет. Сейчас работает всё стабильно.
[Ответ]
MuShu 20:08 07.09.2015
Здравствуйте! Не пинайте сильно. Первый опыт с СИ и пиком. Написал вот такой код в качестве первого проекта для 16f1823 (таймер выключения обогрева заднего стекла). Код рабочий, но хотелось бы понять работу с прерываниями и написать обработчик кнопки через прерывания. А в это время курю даташит и Кернигана)))
Код:
bit oldstate; // Old state flag
unsigned schet; // переменная счетчика
//============================================================
void buttonn () { // Подпрограмма обработки кнопки
if (Button(&PORTA, 0, 1, 1)) { // Detect logical one
oldstate = 1; // Update flag
}
if (oldstate && Button(&PORTA, 0, 1, 0)) { // Detect one-to-zero transition
LATC0_bit = ~LATC0_bit; // Invert PORTC
oldstate = 0; // Update flag
} }
//=============================================================
void main() // Основная программа
{
ANSELA = 0; // Configure AN pins as digital I/O
C1ON_bit = 0; // Disable comparators
C2ON_bit = 0;
TRISA = 0xFF; // set PORTA as input
TRISC = 0x00; // Configure PORTC as output
PORTC = 0b00000001; // Initial PORTC value (RC1=1)
oldstate = 0;
do { // Вечный цикл do --> while
buttonn() ; // проверка состояния кнопки
if (LATC0_bit == 0) { // если на выходе RC0 лог 0, то
Delay_ms(10); // wait for 10 millisecond
schet++ ; // прибавляем к счетчику 1
LATC2_bit = ~LATC2_bit; // для наглядности моргаем RC2
if (schet > 12000) { // если счетчик больше 12000 ( =16 мин.), то
LATC0_bit = 1 ; // присваиваем RC0 лог. 1
schet = 0 ; // обнуляем счетчик
}
}
if (LATC0_bit == 1) { // если RC0 = 1, то
schet = 0; // обнуляем счетчик
}
}
while(1) ;
}
Добрый день!
Если тема не померла еще )))
Есть электронный замок от сейфа на pic16lf628a.
Коды, понятное дело, утеряны (иначе бы не писал).
Необходимо восстановить работоспособность замка (сейф открыт, замок демонтирован)
[Ответ]
petrd 22:22 09.09.2015
Сообщение от ZordraK:
Добрый день!
Если тема не померла еще )))
Есть электронный замок от сейфа на pic16lf628a.
Коды, понятное дело, утеряны (иначе бы не писал).
Необходимо восстановить работоспособность замка (сейф открыт, замок демонтирован)
Как замок-то работал? Схема есть? Если нет, то придется восстанавливать схему и по ней заново писать программу замка. Это будет денег стоить. Смысл есть?
[Ответ]
ZordraK 19:21 10.09.2015
Замок работает и сейчас.
Вопрос в другом, никто не помнит не мастер-пароль, ни пароль пользователя.
Схемы нет, но она там элементарная (фото прилагаю, также вложу инструкцию)
Может можно просто прочитать программу и посмотреть что там внутри?
Понятное дело, будет стоить денег, вопрос насколько это будет разумно.
Может проще будет поставить новый замок )
Это смотря сколько новый стоит. Если меньше 5 штук и нет интереса к погружению в тему, то видимо нет смысла возиться. Поставить задачу исполнителю и принять работу - это тоже хлопоты.
[Ответ]
petrd 20:04 10.09.2015
Сообщение от ZordraK:
.......
Может можно просто прочитать программу и посмотреть что там внутри?
...........
Может проще будет поставить новый замок )
Заранее спасибо за ответы!
Прочитать? Надо пробовать, но это ничего не даст, прошивка закрыта, 99,9%. Если есть есть возможность приобрести новый замок, то надо ставить новый. Это самое правильное решение и выйдет по-любому дешевле.
[Ответ]
ZordraK 20:05 10.09.2015
ок. спс.
буду ставить новый замок, наверное это действительно проще.
[Ответ]
Vdmit 11:26 25.02.2016
Сообщение от petrd:
Может кто-нибудь что-нибудь скажет. А то в одно лицо как-то скучно.
С последующей страницей пропало обучение ! Так классно начиналось для новичка, именно то что нужно без лишнего ... И текст программы был понятен и пояснения каждой строки зачем и для чего . Читал радовался , все понимал, получалось на практике . Но увы чем дальше , тем пропали комментарии , стали решать более частные конкретные задачи ! Может подскажите тогда где и как продолжить познавать азы ШИМ, АЦП и т.д. именно на уровне начальном ! Как работать с LCD ? Прервывания ?
[Ответ]
petrd 11:43 25.02.2016
Сообщение от Vdmit:
С последующей страницей пропало обучение ! Так классно начиналось для новичка, именно то что нужно без лишнего ... И текст программы был понятен и пояснения каждой строки зачем и для чего . Читал радовался , все понимал, получалось на практике . Но увы чем дальше , тем пропали комментарии , стали решать более частные конкретные задачи ! Может подскажите тогда где и как продолжить познавать азы ШИМ, АЦП и т.д. именно на уровне начальном ! Как работать с LCD ? Прерывания ?
Для ознакомления в сети очень много теории и примеров по всем этим вопросам. Вы же в своем посту уже сразу очень много вопросов задали. Желательно по-конкретней. Если есть вопросы и проблемы, задавайте, что хотите понять, расскажу.
[Ответ]
Vdmit 14:43 11.03.2016
Хотелось бы с шиной CAN поработать , получать и передавать сообщения ! Мне не важно какой контроллер изучать -главное стартануть, много уроков
по АРДУИНО на ютюбе , придётся на нем учиться(хотя программатор для пиков купил уже!) , т.к. по PICам ничего подобного нет ! Если и есть то для новичка сложновато !!!
[Ответ]
Vdmit 16:20 19.04.2016
Пришлось начинать , учиться на древнем PIC12f675 (просто их много валяется без дела) Хотел типа контролера ДХО на авто замутил .
кое что получается там ноги зажигать , считывать с ног ! Вот хотелось программный ШИМ(встроенного нет) . Не могли бы помочь сконфигурировать таймер и организовать импульсы на ноге , например GP3 , чтобы диод в пол накала светился ! кроме этого пока на форумах ничего не нашел
OPTION_REG = 0x87; // 66,304 ms
INTCON.T0IE=1;
INTCON.GIE=1;
[Ответ]
apozdniakov4 11:05 20.04.2016
Vdmit по can могу подсказать , есть наработки , анализатор can
[Ответ]
petrd 11:59 20.04.2016
Сообщение от Vdmit:
Пришлось начинать , учиться на древнем PIC12f675 (просто их много валяется без дела) Хотел типа контролера ДХО на авто замутил .
кое что получается там ноги зажигать , считывать с ног ! Вот хотелось программный ШИМ(встроенного нет) . Не могли бы помочь сконфигурировать таймер и организовать импульсы на ноге , например GP3 , чтобы диод в пол накала светился ! кроме этого пока на форумах ничего не нашел
OPTION_REG = 0x87; // 66,304 ms
INTCON.T0IE=1;
INTCON.GIE=1;
Рассуждения: логично использовать внутренний тактовый генератор 4 МГц, зн-т, такты для таймера будут идти с периодом 4/4 = 1 мкс, если таймер TMR0 использовать без прескалера и его на ходу не трогать, то таймер будет переполняться каждые 2^8=256 мкс, т.е. это и будет разрешение программного ШИМ. Если делать ШИМ 8-ми разрядным, то период ШИМ будет 256*8= 2048 мкс или около 500 Гц, если для светодиода, то глаз мерцания не заметит.
С GP3 не получится, он может быть только входом. В остальном примерно, так. На железе не смотрел, поэтому если, что .....
Код:
unsigned short Period, Pulse;
void interrupt ()
{
static unsigned short count = 0;
if(T0IF_bit)
{
count++;
if(count < Period){
if (count < Pulse)
GP2_bit = 1;
else
GP2_bit = 0;
}
else {
count = 0;
GP2_bit = 1;
}
T0IF_bit = 0;
}
}
void main() {
ANSEL = 0x00; //все выводы делаем цыфровыми
CMCON = 0x07; // отключаем компаратор
TRISIO2_bit = 0;// будет выходом
GP2_bit = 0;
OPTION_REG = 0x88; // TMR0 от внутренних тактов, без прескалера
T0IE_bit = 1; // разрешить прерывания от TMR0
GIE_bit = 1; // разрешить глобальное прерывание
Period = 8; // при таких числах скважность будет 50%
Pulse = 4;
for(;;);
}
Огромное спасибо ! Буду пробовать ! GP3 не обязателен , это я так на угад , получается он только на вход может работать или как MCLR. А что такое прескалер ?
[Ответ]
petrd 20:04 20.04.2016
Сообщение от Vdmit:
получается он только на вход может работать или как MCLR. А что такое прескалер ?
Да, только как вход (уровни TTL ) или MCLR (выбирается - битом №5 слова конфигурации)
Прескалер - предделитель.
[Ответ]
Vdmit 08:57 21.04.2016
Сообщение от petrd:
Да, только как вход (уровни TTL ) или MCLR (выбирается - битом №5 слова конфигурации)
Прескалер - предделитель.
Не посчитайте за наглость , но человек , который хочет научиться превосходит все рамки приличия ! Изучаю самостоятельно, любая такая информация очень ценна . Хотел бы от Вас ещё такой же урок с АЦП . Какой-нибудь незамысловатый пример от уровня напряжения на какой-нибудь ноге . Спасибо !
[Ответ]
Vdmit 09:19 21.04.2016
Сообщение от apozdniakov4:
Vdmit по can могу подсказать , есть наработки , анализатор can
Буду очень признателен , только пока не знаю что спросить ! Я новичок в этом деле, пришел мне АРДУИОНО с шилдом CAN . Для начала попробую сконфигурировать и подключить в авто Ниссан Теане к салонной CAN шине, для начала посмотрю что будет мне приходить на COM порт ПК . Анализатор- это прога? Полезно было бы уже приступить с ней знакомиться ! Буду рад любой вашей информации в плане CAN.
[Ответ]