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

ДЕЙЛ

Свой
  • Постов

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

  • Посещение

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

    5

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


  1. Ctrl+Tab не помогает, ничего не открывается. Где слева искать кнопку Edit? у меня какие-то связи по F4 появляются
  2. Открыл книгу автора Макса Шлее, в главе первой есть пример первой программы. Вроде элементарнейший пример Hello World, но сразу же появились вопросы: 1. Как открыть редактор кода? (в делфи нажатием кнопки F12) 2. Добавил кнопку на форму. Справа есть окно со свойствами. Где искать список событий и как редактировать, к примеру, обработчик нажатия кнопки? 3. С какой книжки лучше начать изучать Qt? Желательно в стиле Флёнова по Delphi. Или где в интернете почитать общее описание среды Qt для Windows?
  3. Имеется данный модуль (MGGS2217) Споектирован в России и в лучших традициях без нормальной документации. Нашёл вот это русское описание, но там никаких команд нет, есть ещё какое-то описание, но там только три команды Где остальные команды искать? Пробовал от других модулей команды, но что-то не то. То ли пока по неопытности, то ли команды не подходят к моему модулю. Мне нужно отключить приём ненужных данных и в идеале оставить только RMC.
  4. Недавно имел дело с SD-картой. Осциллографом смотрел картинку - после команды чтения никаких пауз не видел. Думаю, что если они и возможны, то только как вынужденные, когда выполняется обработка принятого байта или при заполнении буфера, если используется аппаратный интерфейс работы с картой. Частота тактирования начинается от 0 герц, поэтому ничего не случится, если будет приостановка. Для большей убедительности подпаяльте провода МГТФ к данным сигналом в заводском девайсе и полюбуйтесь картинкой на осциллографе.
  5. я немного поспешил с ответом, потом подредактировал, посмотрев получше на МК
  6. Atmega8515 - из сорока ног 33 ввода-вывода будут+выход RX-TX, две ноги на кварц, две ноги питания и сброс, всё под завязку, ничего лишнего. Только нагрузочную способность посмотри - она может быть разная у разных портов. Цена в 2 раза ниже, чем у 128
  7. В книжке "1000 и 1 микроконтроллерная схема, ч.1" есть хорошая подборка схем управления всяким транзимсторами, в т.ч. схемотехника защиты самих МК от всяких наводок и выбросов со стороны нагрузки. В твоём варианте из первого поста схема в общем случае долго не проживёт хотя бы по причине многократных кратковременных режимов КЗ по причине невозможности мгновенной зарядки ёмкости затвора.
  8. Можно ли через JTAG считать прошивку и записать её обратно в контроллер? Как это сделать в IAR? МК LPC1768, защита от считывания не установлена. Полазил по ИАРу, но никаких пунктов меню типа Read Flash to file не нашёл.
  9. Теоретически могу предположить следующее: 1. Частота ШИМ должна быть больше 20 кГц, чтобы двигатель не свистел. 2. По даташиту входная ёмкость 4 нФ и если в затвор поставить резистор 200 Ом, то постоянная времени будет чуть меньше микросекунды, т.е. импульс ШИМ минимальной длительности должен быть больше 4 микросекунд. Если используется 8-битный таймер, то период должен быть 256*4мкс=1 мс, т.е. 1000 Гц, что хорошо слышно. Более высокая частота ШИМ и будет приводить к нагреву ввиду бОльшего соотношения времени переходных процессов и времени статического состояния транзистора. 3. Для повышения частоты до 20 кГц следует уменьшить резистор затвора в 20 раз, чтобы уменьшить нагрев, т.е. номинал должен быть порядка 10 Ом. 4. Для резистора 10 Ом следует учесть нагрузочную способность драйвера или сделать его самому из мощных транзисторов. Драйвер я применял при управлении мостовой схемой, а тут только один нижний транзистор. ПЫСЫ: на истиность не претендую, это только мои измышления в вакууме. :rolleyes: Интересно узнать, насколько они правильные.
  10. Что можно почитать на эту тему? В какой книжке? Давно в детстве начинал кодить на ПХП, ставил Денвер, но всё делалось по методичке.
  11. Если всё равно, то лучше начни с книги "Библия Delphi", автор Флёнов. Я только по ней начал относительно нормально ориентироваться, что с чем и как связывается. До этого пару раз начинал безуспешно со всяким самоучителям "Полный курс делфи за пару вечеров". Ну и примеров проектов на делфи7 в инете куча.
  12. попалось случайно на глаза http://articles.org.ru/cn/showdetail.php?cid=9088 мошть пригодится
  13. Понапридумывают же... :) Попробую ещё раз перечитать про USB, мошть понятнее станет.
  14. Если инициирование программное, то после него ведомое устройство может передавать данные в комп? Если оно может передавать данные, то почему нельзя их передать без инициации самовольно? Мне пока не нужно, чтобы комп правильно определил тип устройства, просто хочу увидеть свои байты в нём.
  15. Инициирование программное? Хост отправил какие-то данные, их примет EP0, потом контроллер посмотрит, что принято и после этого будет думать, что дальше сделать. Так?
  16. в папке с примером 107 файлов. Покрутил эти 4 файла - наглядности маловато и пример не для моей платы. Хочется увидеть минимальный код для отправки пакета, а потом уже глубже копать. Светодиодом моргать никто не начинал с распутывания килобайтов кода. Если не трудно, то напишите последовательность действий для отправки пакета в комп. Как в общих четрах строить алгоритм? Какие биты менять, какие проверяить и что в обработчике прерывания писать?
  17. Что куда и как отправлять? Как это будет выглядеть на примере моего кода? Что нужно дописать или изменить? Приятно удивило, что там добрая сотня файлов, в которых мне копаться неделю надо. Пока хочу с простейшего начать.
  18. Чем бряк поможет? Аппаратную часть из программы не видно, остаётся наслово верить руководству, что пакет оправляется при очередном прерывании фрейма после проверки буфера. Я ожидаю увидеть свои байты в мониторе USBTrace. Как ещё можно увидеть, что кадр отправлен? Если только через какие-то флаги смотреть, но в конечном итоге нужно увидеть принимаемые данные на компе в мониторе. 12.14.3 Data transfer for IN endpoints When writing data to an endpoint buffer, WR_EN (Section 12.10.4.5 ”USB Control register”) is set and software writes to the number of bytes it is going to send in the packet to the TxPLen register (Section 12.10.4.4). It can then write data continuously in the TxData register. When the number of bytes programmed in TxPLen have been written to TxData, the WR_EN bit is cleared, and the TxENDPKT bit is set in the DevIntSt register. Software issues a Validate Buffer (Section 12.12.14 ”Validate Buffer (Command: 0xFA, Data: none)”) command. The endpoint is now ready to send the packet. For IN isochronous endpoints, the data in the buffer will be sent only if the buffer is validated before the next FRAME interrupt occurs; otherwise, an empty packet will be sent in the next frame. If the software clears WR_EN before the entire packet is written, writing will start again from the beginning the next time WR_EN is set for this endpoint. Both RD_EN and WR_EN can be high at the same time for the same logical endpoint. Interleaved read and write operation is possible.
  19. Пытаюсь отправить пакет в ПК, где его ждёт программа-монитор USBTrace. При включении подтягивающего резистора в мониторе вижу, что винда отправила какой-то запрос, все байты на виду, но мне они пока не нужны. Жду окончания запроса и пытаюсь отправить свой пакет, но почему-то пока никак. Делаю всё по описанию - включаю изохронную точку на выход, указываю максимальную длину пакета и начальное значение счётчика, затем записываю данные в буфер и вызываю команду проверки буфера, после которой при первом прерывании фрейма этот буфер улетает в ПК. Для индикации прерываний фреймов задействовал одну ножку и на осциллографе наблюдаю импульсы через каждую миллисекунда с точностью до микросекунд, т.е. тактирование настроено правильно. #include "iolpc1778.h" #include "LPC17xx.h" unsigned int i; void main(void) { { //INIT SCS |= 0x20; //подключение осциллятора while(!(SCS&0x40)){} //ожидание запуска //Настройка тактирования ЦПУ PLL0CON |= 0x01; //включение PLL0 PLL0CFG |= 0x09; //умножение частоты на 10 PLL0FEED = 0xAA; //разрешение PLL0FEED = 0x55; //изменений CCLKSEL |= 0x100; //переключение источника тактирования //настройка тактирования USB PLL1CON |= 0x01; //Включение PLL1 PLL1CFG |= 0x03; //Умножаем частоту на 4 (12МГц*4=48МГц) PLL1FEED = 0xAA; //разрешение PLL1FEED = 0x55; //изменений USBCLKSEL = 0x201; //Тактирование USB от PLL1 и частота тактирования 48МГц IOCON_P1_25 = 0; //PIO FIO1DIR = 0x2000000; //Выход PIN1_25 для индикации прерывания { //init USB PCONP |= 0x80000000; //включение питания USB USBCLKCTRL |= 0x12; //устанавливаем флаги DEV_CLK_EN + AHB_CLK_EN while(!(USBCLKST & 0x12)){}//ждём установки флагов USBCLKCTRL |= 8; //устанавливаем флаг доступа к регистру выбора конфигурации функции порта while(!(USBCLKST & 0x08)){}//ждём установки флага USBPORTSEL = 3; //U2 - ведомый USBCLKCTRL &=~8; //сброс флага доступа IOCON_P0_31 = 1; //функция ножк U2D+, на U2D- других функций нет IOCON_P0_14 = 0; //USBCONNECT - управление подтягивающим резистором FIO0DIR |= 0x4000; //bit 14 - OUT USBDEVINTEN = 0x01; //разрешение прерываний FRAME } PCLKSEL = 1; //тактирование переферии 1:1 CLKSRCSEL |= 1; //тактирование CPU от PLL0 AIRCR = 0x05FA0200; //настройка IP1 = 0x00000800; //и разрешение NVIC_EnableIRQ(USB_IRQn); //прерываний } while(1) { FIO0SET |= 0x4000; //1.5 kOm USBREEP |= 0x80; //задействована изохронная точка 7 (IN) while(!(USBDEVINTST & 0x100)){} //ждём установки флага EP_RLZED for(i=0; i<0x2FFFFFF; i++ ) { __NOP(); } //небольшая пауза для пропуска запроса от windows USBTXPLEN = 40; //начальное значение счётчика байтов в пакете USBEPIN = 7; //индекс конечной точки USBMAXPSIZE = 40; //максимальный размер пакета для указанной конечной точки while(!(USBDEVINTST & 0x100)){} //ждём установки флага EP_RLZED USBCMDCODE = 0x0500 + 0x070000; //выбор конечной точик USBCTRL = 0x2 + 0xC; //WP_EN = 1, LOG_ENDPOINT = 3; TDATA = 0x12345678; TDATA = 0x91011121; TDATA = 0x31415161; TDATA = 0x71819202; TDATA = 0x12223248; TDATA = 0x12345678; TDATA = 0x12345678; TDATA = 0x12345678; TDATA = 0x12345678; TDATA = 0x98765432; //после этой команды сбрасывается WP_EN USBCMDCODE = 0x0500 + 0xFA0000; //команда + проверка буфера for(i=0; i<0x8FFFFFF; i++ ){__NOP(); } FIO0CLR |= 0x4000; //отключение резистора 1.5 кОм for(;;){} } } void USB_IRQHandler (void) { USBDEVINTCLR |= 0x3FF; //clear alls interrupt FIO1CLR = 0x2000000; FIO1SET = 0x2000000; FIO1CLR = 0x2000000; NVIC_ClearPendingIRQ(USB_IRQn); return; } что я не так делаю? LPC.rar
  20. Вот ещё один раздел. Ошибок там хватает, т.к. пока вживую не гонял USB, поэтому прошу указать на ошибки. Вопросительным знаком помечаю непонятные для меня моменты. Раздел 13. Хост USB _______13______USB.pdf
  21. Я в детстве делал электромагнит из тысяч витков волоска на гвозде, подключал к 9вольтовой кроне и отключал, так вот во время отключения меня по всей руке трясло сильнее, чем от розетки. Не мог понять, как 9 вольт так вот трясут, поэтому продолжал искрить до разрядки батарейки. Этот опыт мне запомнился и намного позже в универе уже ясно представлял себе, что катушка может запасать энергию и пытаться через воздух пустить ток. :rolleyes: Повторять эксперимент не советую. Приведу ещё одну аналогию: конденсатор можно зарядить током 1 мА, но при замыкании на нагрузку может дать ток 20мА, 20А, 20кА при сохранении в первый момент на обкладках той же разницы потенциалов, что была и до коммутации на нагрузку. С катушкой всё аналогично, но отличие в том, что она пытается сохранить ток, который был до момента переключения на нагрузку, отсюда и повышение напряжения. Представь, что катушка подключена к источнику напряжения 10В через резистор 10 кОм, т.е. в ней течёт ток 1мА, если её быстро извлечь из цепи и замкнуть на резистор 100 кОм, то по закону Ома в первый момент на катушке будет напряжение не 10В, а 100кОм*1мА = 100В, это и есть повышение напряжения.
  22. ну а по делу? Не у всех же с рождения в голове прописана спецификация USB и алгоритмы работы с этой штукой.
  23. Согласен. Только почему-то нет разделов USB Host и USB OTG. О чём в двух словах там расписано? И чем эти разделы отличаются от раздела USB device? Это отдельные модули или отдельные режимы работы одного модуля?
  24. имел дело с RS485, могу сказать, почему применил бы его 1. Число ведомых до 32 нагруженных, как подсказывает википедия 2. Опторазвязка никогда лишней не будет, я имел дело с преобразователями RS485<>232 MAX1480, если правильно вспомнил. Древние, дорогие, но с трансформатоной развязкой по питанию и опторазвязкой по передаче данных. Ещё они дубовые, т.е. надёжные. 3. Помехоустойчивость такая, что даже при расположении витой пары вдоль шин питания мегаваттных двигателей с частотным регулированием картина не портилась. Сам осциллографом смотрел.
×
×
  • Создать...