Jump to content

    

ДЕЙЛ

Участник
  • Content Count

    258
  • Joined

  • Last visited

Everything posted by ДЕЙЛ


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