Перейти к содержанию
    

ДЕЙЛ

Свой
  • Постов

    767
  • Зарегистрирован

  • Посещение

  • Победитель дней

    5

Весь контент ДЕЙЛ


  1. Появилось предположение, что дело в разряде статичекого напряжения. Двигатель пластмассовый? На ковре висит? Электризованную пыль гоняет? Попробуй движок другого типа или из электропроводных частей.
  2. Точно по земле помеха? Почему бы для эксперимента полностью не развязать гальванически МК и двигатель? Т.е. два независимых источника питания и связь только через оптопару. Ещё я посмотрел бы осциллографом шум на самой земле, т.е. между точками подключения минуса МК и минуса двигателя. Для чистоты осциллограф запитал бы от бесперебойника или от встроенного аккумулятора, если в нём такой имеется. Лучше самому осциллографом ток померить в цепи и убедиться, что двигатель не шумит. Можно попробовать другой поставить и все остальные элементы методом замены перепробовать, чтобы быть уверенным в их нормальной работоспособности и при необходимости продолжать искать неисправность в разведке земель. Дальше следует вчитываться в методы обеспечения помехоустойчивости микроконтроллеров, в частности обратить внимание на разводку дорожек под кварцем, если частоты порядка десятков мегагерц.
  3. подборка схем управления двигателем есть в книжке "1000 и одна микроконтроллерная схема" _____________________________.pdf
  4. недавно похожую схему сочинял, номиналы пересчитал под твои пороги срабатывания. Сам её один в один не макетировал, но интересно узнать результат.
  5. Вот картинка из Агурова. Правильно я понимаю, что байты команд хоста во время инициализации можно увидеть в буфере нулевой конечной точки? Или они невидимы для программиста со стороны контроллера?
  6. Как-то измерял количество тактов для выполнения функции арктангенса и для вывода на дисплей. Считать слишком муторно было, поэтому пользовался обычным таймером с частотой тактирования 1:1. Перед функцикцией запускал, а после завершения сразу останавливал. В регистре счётчика таймера было количество тактов. Это если точность большая не нужна(+\- 10 тактов). Для бОльшей точности можно в пошаговом режиме отладки смотреть на счётчик циклов, а если в железе проверяется, то точками останова можно попользоваться.
  7. у меня LPC1778, прошиваю через JTAG, Flash Magic и самопальным способом. Вот вырезал кусок схемы, через которую Flash Magic работает. Думаю, что лишней не будет и придёшь к выводу, что проще самому спаялить, чем покупать.
  8. для чего в описании USB фигурирует I2C? В общих чертах хотелось бы узнать.
  9. Оставлю тут свой код загрузчика на всякий случай, а то на домашнем компе ненадёжно. Программа принимает файл от прикреплённой программы, написанной на 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; } __________.rar
  10. Скачал Creator, поставил. Открыл им скачанный пример пректа Hello World. Могу редактировать исходник, но непонятно как его запустить. Неактивна кнопка запуска. Вот к сообщению прилепил самый первый пример проекта. В какой программе и какую последовательность действий нужно сделать с этим примером, чтобы появилось то самое окно с надписью? Hello.rar
  11. Согласен, но всё равно никак не нахожу редактор кода. Его вижу только через Форма->Показать код... , но там ничего менять нельзя и никакой подсветки синтаксиса.
  12. Вот открыл Шлее - в самом начале пример Hello World и ни слова о том, как открыть этот самый редактор для печатания примера. Версия 4.8.4 А где искать QtCreator? В папке с программой его нет.
  13. Ctrl+Tab не помогает, ничего не открывается. Где слева искать кнопку Edit? у меня какие-то связи по F4 появляются
  14. Открыл книгу автора Макса Шлее, в главе первой есть пример первой программы. Вроде элементарнейший пример Hello World, но сразу же появились вопросы: 1. Как открыть редактор кода? (в делфи нажатием кнопки F12) 2. Добавил кнопку на форму. Справа есть окно со свойствами. Где искать список событий и как редактировать, к примеру, обработчик нажатия кнопки? 3. С какой книжки лучше начать изучать Qt? Желательно в стиле Флёнова по Delphi. Или где в интернете почитать общее описание среды Qt для Windows?
  15. Имеется данный модуль (MGGS2217) Споектирован в России и в лучших традициях без нормальной документации. Нашёл вот это русское описание, но там никаких команд нет, есть ещё какое-то описание, но там только три команды Где остальные команды искать? Пробовал от других модулей команды, но что-то не то. То ли пока по неопытности, то ли команды не подходят к моему модулю. Мне нужно отключить приём ненужных данных и в идеале оставить только RMC.
  16. Недавно имел дело с SD-картой. Осциллографом смотрел картинку - после команды чтения никаких пауз не видел. Думаю, что если они и возможны, то только как вынужденные, когда выполняется обработка принятого байта или при заполнении буфера, если используется аппаратный интерфейс работы с картой. Частота тактирования начинается от 0 герц, поэтому ничего не случится, если будет приостановка. Для большей убедительности подпаяльте провода МГТФ к данным сигналом в заводском девайсе и полюбуйтесь картинкой на осциллографе.
  17. я немного поспешил с ответом, потом подредактировал, посмотрев получше на МК
  18. Atmega8515 - из сорока ног 33 ввода-вывода будут+выход RX-TX, две ноги на кварц, две ноги питания и сброс, всё под завязку, ничего лишнего. Только нагрузочную способность посмотри - она может быть разная у разных портов. Цена в 2 раза ниже, чем у 128
  19. В книжке "1000 и 1 микроконтроллерная схема, ч.1" есть хорошая подборка схем управления всяким транзимсторами, в т.ч. схемотехника защиты самих МК от всяких наводок и выбросов со стороны нагрузки. В твоём варианте из первого поста схема в общем случае долго не проживёт хотя бы по причине многократных кратковременных режимов КЗ по причине невозможности мгновенной зарядки ёмкости затвора.
  20. Можно ли через JTAG считать прошивку и записать её обратно в контроллер? Как это сделать в IAR? МК LPC1768, защита от считывания не установлена. Полазил по ИАРу, но никаких пунктов меню типа Read Flash to file не нашёл.
  21. Теоретически могу предположить следующее: 1. Частота ШИМ должна быть больше 20 кГц, чтобы двигатель не свистел. 2. По даташиту входная ёмкость 4 нФ и если в затвор поставить резистор 200 Ом, то постоянная времени будет чуть меньше микросекунды, т.е. импульс ШИМ минимальной длительности должен быть больше 4 микросекунд. Если используется 8-битный таймер, то период должен быть 256*4мкс=1 мс, т.е. 1000 Гц, что хорошо слышно. Более высокая частота ШИМ и будет приводить к нагреву ввиду бОльшего соотношения времени переходных процессов и времени статического состояния транзистора. 3. Для повышения частоты до 20 кГц следует уменьшить резистор затвора в 20 раз, чтобы уменьшить нагрев, т.е. номинал должен быть порядка 10 Ом. 4. Для резистора 10 Ом следует учесть нагрузочную способность драйвера или сделать его самому из мощных транзисторов. Драйвер я применял при управлении мостовой схемой, а тут только один нижний транзистор. ПЫСЫ: на истиность не претендую, это только мои измышления в вакууме. :rolleyes: Интересно узнать, насколько они правильные.
  22. Что можно почитать на эту тему? В какой книжке? Давно в детстве начинал кодить на ПХП, ставил Денвер, но всё делалось по методичке.
  23. Если всё равно, то лучше начни с книги "Библия Delphi", автор Флёнов. Я только по ней начал относительно нормально ориентироваться, что с чем и как связывается. До этого пару раз начинал безуспешно со всяким самоучителям "Полный курс делфи за пару вечеров". Ну и примеров проектов на делфи7 в инете куча.
  24. попалось случайно на глаза http://articles.org.ru/cn/showdetail.php?cid=9088 мошть пригодится
  25. Понапридумывают же... :) Попробую ещё раз перечитать про USB, мошть понятнее станет.
×
×
  • Создать...