![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
ДЕЙЛ
-
Постов
776 -
Зарегистрирован
-
Посещение
-
Победитель дней
5
Сообщения, опубликованные ДЕЙЛ
-
-
Моя версия-
запитывал двумя лучами питания разными МК и +12 мотора. Проблема была той же. Общая у них земля была. Так вот то, что сейчас видим, это скорее всего прыгающая земля. От туда и пики наверх, когда она сильно ниже становится.
А вот как бороть?
Точно по земле помеха? Почему бы для эксперимента полностью не развязать гальванически МК и двигатель? Т.е. два независимых источника питания и связь только через оптопару. Ещё я посмотрел бы осциллографом шум на самой земле, т.е. между точками подключения минуса МК и минуса двигателя. Для чистоты осциллограф запитал бы от бесперебойника или от встроенного аккумулятора, если в нём такой имеется.
Ну не может земля прыгать. Не может моторчик 50-100мА давать такие эффекты. Выкладывайте полную схему - от розетки и до моторчика.Лучше самому осциллографом ток померить в цепи и убедиться, что двигатель не шумит. Можно попробовать другой поставить и все остальные элементы методом замены перепробовать, чтобы быть уверенным в их нормальной работоспособности и при необходимости продолжать искать неисправность в разведке земель. Дальше следует вчитываться в методы обеспечения помехоустойчивости микроконтроллеров, в частности обратить внимание на разводку дорожек под кварцем, если частоты порядка десятков мегагерц.
-
подборка схем управления двигателем есть в книжке "1000 и одна микроконтроллерная схема"
-
если уровень напряжения выше 11.5, то питание подается на устройство, если уровень падает ниже 10.5, то прекращается подача питания до тех пор, пока оно вновь не станет выше 11.5В .
недавно похожую схему сочинял, номиналы пересчитал под твои пороги срабатывания. Сам её один в один не макетировал, но интересно узнать результат.
-
-
И не забудьте к циклам выполнения инструкции ядром добавить циклы доступа к носителю информации, на котором расположена выполняемая программа и данные, с которыми она работает. Например, если это внешняя SDRAM или Flash-память, то задержки могут быть довольно существенными, особенно при переходах на другие страницы SDRAM.
В связи с этим знание количества циклов выполнения собственно ядром ничего не решает и нужно разве что из спортивного любопытства.
Как-то измерял количество тактов для выполнения функции арктангенса и для вывода на дисплей. Считать слишком муторно было, поэтому пользовался обычным таймером с частотой тактирования 1:1. Перед функцикцией запускал, а после завершения сразу останавливал. В регистре счётчика таймера было количество тактов. Это если точность большая не нужна(+\- 10 тактов). Для бОльшей точности можно в пошаговом режиме отладки смотреть на счётчик циклов, а если в железе проверяется, то точками останова можно попользоваться.
-
Выбираю ISP программатор для LPC1788. По-сути, как я понял, это просто преобразователь USB-UART с выведенными сигналами DTR И RTS.
Стоит ли на это обращать внимание, если я хочу шить LPC1788 через Flash Magic?
у меня LPC1778, прошиваю через JTAG, Flash Magic и самопальным способом. Вот вырезал кусок схемы, через которую Flash Magic работает. Думаю, что лишней не будет и придёшь к выводу, что проще самому спаялить, чем покупать.
-
для чего в описании USB фигурирует I2C? В общих чертах хотелось бы узнать.
-
Оставлю тут свой код загрузчика на всякий случай, а то на домашнем компе ненадёжно. Программа принимает файл от прикреплённой программы, написанной на DELPHI. Успеть отправить надо в течение минуты после сброса.
#include "iolpc1778.h" #include "LPC17xx.h" #define IAP_LOCATION 0x1fff1ff1 //точка входа в IAP (страница 896 мануала) unsigned int command[5]; unsigned int result[2]; typedef void (*IAP)(unsigned int[], unsigned int[]); unsigned char DATA[30000]; unsigned int command[5]; unsigned int result[2]; unsigned char RX; unsigned int index_RX; unsigned char RX_PAKET[18]; unsigned char CHSUM, FlagRX; unsigned int indexM, pauza, i; unsigned int adr_copy, stek; unsigned int *adres_stek; unsigned char OutPortByte; int sektor; void Out_UART0(); //otpravka paketa po UART0 void main(void) { { //INIT { //init UART0 IOCON_P1_25 = 0; //PIO FIO1DIR = 0x2200000; //Выходы PIN1_25, PIN1_11 PCONP |= 0x8; IOCON_P0_02 = 0x1; IOCON_P0_03 = 0x1; } FIO0DIR = 0x4+0x8; SCS |= 0x20; //подключение осциллятора while(!(SCS&0x40)){} //ожидание запуска PLL0CON |= 0x01; PLL0CFG |= 0x09; PLL0FEED = 0xAA; PLL0FEED = 0x55; CCLKSEL |= 0x100; PCLKSEL = 1; CLKSRCSEL |= 1; U0LCR |= 0x83; //razrecchenie dostupa k delitely U0DLL = 0xC8; //0xF0;//0xA0; //0x14; //0x4E; //nastrojka delitelya U0LCR &=~0x80; //zapret dostupa k delitely U0IER |= 0x1+0x4;//Разрешение прерываний UART0 //__enable_irq(); //Разрешение //__set_FAULTMASK(0); //всех прерываний //__set_BASEPRI(0); //Отключение маскирования //__set_CONTROL(0); AIRCR = 0x05FA0200; IP1 = 0x00000800; } NVIC_EnableIRQ(UART0_IRQn); //Enable IRQ UART0 (ISER0=32) indexM = 0; index_RX = 1; while(1) { if (index_RX>5) { if ((DATA[index_RX-1]==0x11)&(DATA[index_RX-2]==0x22)&(DATA[index_RX-3]==0x33)&(DATA[index_RX-4]==0x44)) самопальный признак конца файла HEX { FlagRX = 0; //COPY_FLASH adr_copy = (unsigned int)&DATA[4096]; IAP iap_entry; iap_entry = (IAP) IAP_LOCATION; for (sektor=1; sektor<5; sektor++) { //_______ПОДГОТОВИТЬ СЕКТОР К ЗАПИСИ_______// { command[0] = 50; //код команды command[1] = sektor; //начальный номер сектора command[2] = sektor; //конечный номер сектора iap_entry (command, result); } //_______ПОДГОТОВИЛИ СЕКТОР К ЗАПИСИ______// //_______СТЕРЕТЬ СЕКТОР_______// { command[0] = 52; //код команды command[1] = sektor; //начальный номер сектора command[2] = sektor; //конечный номер сектора command[3] = 120000; //системная тактовая частота в кГц iap_entry (command, result); } //_______СТЁРЛИ СЕКТОР______// //_______ПОДГОТОВИТЬ СЕКТОР К ЗАПИСИ_______// { command[0] = 50; //код команды command[1] = sektor; //начальный номер сектора command[2] = sektor; //конечный номер сектора iap_entry (command, result); } //_______ПОДГОТОВИЛИ СЕКТОР К ЗАПИСИ______// //_______КОПИРОВАТЬ ОПЕРАТИВНУЮ ПАМЯТЬ ВО ФЛЕШ_______// { command[0] = 51; //код команды command[1] = 0x1000*sektor; //начальный адрес перезаписываемой флеш command[2] = adr_copy+4096*(sektor-1); //начальный адрес оперативной памяти, откуда нужно копировать command[3] = 4096; //число байт для копирования command[4] = 120000; //системная тактовая частота в кГц iap_entry (command, result); } //_______СКОПИРОВАЛИ СЕКТОР______// //END_FLASH } VTOR = 0x1000; adres_stek = (unsigned int*)0x1000; stek = (unsigned int)*adres_stek; __set_MSP(stek); asm("mov R1, #0x1004"); asm("ldr R2, [R1]"); asm("BX R2"); } } } } void Out_UART0() { while (!(U0LSR&0x20)); U0THR=0xA0; //признак ответа для программы на ПК } void UART0_IRQHandler(void) { DATA[index_RX] = U0RBR; index_RX++; NVIC_ClearPendingIRQ(UART0_IRQn); return; }
-
Скачал Creator, поставил. Открыл им скачанный пример пректа Hello World. Могу редактировать исходник, но непонятно как его запустить. Неактивна кнопка запуска.
Вот к сообщению прилепил самый первый пример проекта. В какой программе и какую последовательность действий нужно сделать с этим примером, чтобы появилось то самое окно с надписью?
-
Не. Ну это уже слишком. В книжке по Microsoft Visual Studio тоже нет описания, как надо кликнуть на кнопку "Пуск", чтобы ее запустить.
Согласен, но всё равно никак не нахожу редактор кода. Его вижу только через Форма->Показать код... , но там ничего менять нельзя и никакой подсветки синтаксиса.
-
Во-первых, в QtCreator'e есть замечательная Справка. Для начала вам справки хватит выше крыши. Что касается чтива, то талмуд Шлее, имхо, лучший вариант.
Вот открыл Шлее - в самом начале пример Hello World и ни слова о том, как открыть этот самый редактор для печатания примера. Версия 4.8.4
Во-первых, в QtCreator'e есть замечательная Справка.А где искать QtCreator?
В папке с программой его нет.
-
то можно либо нажать кнопку Edit слева и в открывшемся дереве проекта открыть нужный файл, либо просто по Ctrl+Tab переключаться между открытыми файлами.
Ctrl+Tab не помогает, ничего не открывается. Где слева искать кнопку Edit?
Вам нужен редактор сигналов и слотов (F4). В нём добавляете новый сигнал и далее настраиваете его. Если ещё не знакомы с концепцией сигналов и слотов, то советую начать с изучения этой части, поскольку этом механизм активно используется.у меня какие-то связи по F4 появляются
-
Открыл книгу автора Макса Шлее, в главе первой есть пример первой программы. Вроде элементарнейший пример Hello World, но сразу же появились вопросы:
1. Как открыть редактор кода? (в делфи нажатием кнопки F12)
2. Добавил кнопку на форму. Справа есть окно со свойствами. Где искать список событий и как редактировать, к примеру, обработчик нажатия кнопки?
3. С какой книжки лучше начать изучать Qt? Желательно в стиле Флёнова по Delphi. Или где в интернете почитать общее описание среды Qt для Windows?
-
Имеется данный модуль (MGGS2217) Споектирован в России и в лучших традициях без нормальной документации. Нашёл вот это русское описание, но там никаких команд нет, есть ещё какое-то описание, но там только три команды
3.2 MStar NMEA Command<1>Cold Start Command
$PMST02,58*39
<2>Warm Start Command
$PMST02,48*38
<3>Hot Start Command
$PMST02,0*04
Где остальные команды искать? Пробовал от других модулей команды, но что-то не то. То ли пока по неопытности, то ли команды не подходят к моему модулю. Мне нужно отключить приём ненужных данных и в идеале оставить только RMC.
-
Недавно имел дело с SD-картой. Осциллографом смотрел картинку - после команды чтения никаких пауз не видел. Думаю, что если они и возможны, то только как вынужденные, когда выполняется обработка принятого байта или при заполнении буфера, если используется аппаратный интерфейс работы с картой. Частота тактирования начинается от 0 герц, поэтому ничего не случится, если будет приостановка. Для большей убедительности подпаяльте провода МГТФ к данным сигналом в заводском девайсе и полюбуйтесь картинкой на осциллографе.
-
есть масса SPI/I2C расширителей. I2C есть сразу с level translator у Тексаса
я немного поспешил с ответом, потом подредактировал, посмотрев получше на МК
-
Опубликовано · Изменено пользователем ДЕЙЛ · Пожаловаться
Посоветуйте пожалуйста микроконтроллер.Примерные требования.
32 дискретных вх\выхода.
Свободный порт для подключения к мах485.
Памяти много не надо, программа чистая логика + прием\отправка данных в сеть rs485.
зы.
Есть небольшой опыт работы с Атмелом, поэтому хотелось бы именно что то из этого же.
Спасибо!
Atmega8515 - из сорока ног 33 ввода-вывода будут+выход RX-TX, две ноги на кварц, две ноги питания и сброс, всё под завязку, ничего лишнего. Только нагрузочную способность посмотри - она может быть разная у разных портов. Цена в 2 раза ниже, чем у 128
-
Защиту от шокера в полной мере (с сохранением работоспособности) без выгорания каких либо деталей все рано я думаю не сделать. Поэтому надо просто сделать так, что бы замок открывал только "правильный" импульс.
В книжке "1000 и 1 микроконтроллерная схема, ч.1" есть хорошая подборка схем управления всяким транзимсторами, в т.ч. схемотехника защиты самих МК от всяких наводок и выбросов со стороны нагрузки. В твоём варианте из первого поста схема в общем случае долго не проживёт хотя бы по причине многократных кратковременных режимов КЗ по причине невозможности мгновенной зарядки ёмкости затвора.
-
Можно ли через JTAG считать прошивку и записать её обратно в контроллер? Как это сделать в IAR? МК LPC1768, защита от считывания не установлена. Полазил по ИАРу, но никаких пунктов меню типа Read Flash to file не нашёл.
-
Теоретически могу предположить следующее:
1. Частота ШИМ должна быть больше 20 кГц, чтобы двигатель не свистел.
2. По даташиту входная ёмкость 4 нФ и если в затвор поставить резистор 200 Ом, то постоянная времени будет чуть меньше микросекунды, т.е. импульс ШИМ минимальной длительности должен быть больше 4 микросекунд. Если используется 8-битный таймер, то период должен быть 256*4мкс=1 мс, т.е. 1000 Гц, что хорошо слышно. Более высокая частота ШИМ и будет приводить к нагреву ввиду бОльшего соотношения времени переходных процессов и времени статического состояния транзистора.
3. Для повышения частоты до 20 кГц следует уменьшить резистор затвора в 20 раз, чтобы уменьшить нагрев, т.е. номинал должен быть порядка 10 Ом.
4. Для резистора 10 Ом следует учесть нагрузочную способность драйвера или сделать его самому из мощных транзисторов. Драйвер я применял при управлении мостовой схемой, а тут только один нижний транзистор.
ПЫСЫ: на истиность не претендую, это только мои измышления в вакууме. :rolleyes: Интересно узнать, насколько они правильные.
-
Что можно почитать на эту тему? В какой книжке? Давно в детстве начинал кодить на ПХП, ставил Денвер, но всё делалось по методичке.
-
Мне же все равно, на чем поучиться. Главное принципы понять. А они, как я думаю, во всех версиях похожи.
Если всё равно, то лучше начни с книги "Библия Delphi", автор Флёнов. Я только по ней начал относительно нормально ориентироваться, что с чем и как связывается. До этого пару раз начинал безуспешно со всяким самоучителям "Полный курс делфи за пару вечеров". Ну и примеров проектов на делфи7 в инете куча.
-
попалось случайно на глаза http://articles.org.ru/cn/showdetail.php?cid=9088
мошть пригодится
-
Понапридумывают же... :) Попробую ещё раз перечитать про USB, мошть понятнее станет.
сделать защиту от всплесков электродвигателя
в Схемотехника
Опубликовано · Пожаловаться
Появилось предположение, что дело в разряде статичекого напряжения. Двигатель пластмассовый? На ковре висит? Электризованную пыль гоняет? Попробуй движок другого типа или из электропроводных частей.