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

Загрузил прошивку CDC в камень через USB Bootloader, запустил, установил дрова из директории проекта, открыл терминал, посылал символы и получал эхо. Ножки TXD и RXD на микроконтроллере замкнул.

 

Выкинул ввод\вывод на UART, перелопатил под свои задачи - LCD, ADC. CDC работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Связался с саппортом Keil, они сказали что действительно пример НЕ работает на Windows 7, их команда сейчас работает над поиском и устранением ошибки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я по поиску сюда пришел. Я не понял что вы вообще переделывали для отправки данных через CDC. Пример из Keil? Я такое же нашел в LPCExpresso IDE раньше работало нормально. Сейчас виснет (CDC). Если есть другой пример, Может ли кто-нибудь его выложить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CDC виснет при включенной оптимизации. Т. к. все переменные, асинхронно меняемые в прерываниях не объявлены volatile. Объявил как положено - всё заработало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как отключить оптимизацию? Убрать -O из командной строки?

 

Нашел что такое -O. Но все равно volatile нужно объявлять все переменные в файле с драйвером USB или где? Просто тот же пример у меня работал еще полгода назад. Повторюсь я пишу в lpcexpresso.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

usbhw.c - в функции delay() внутрь цикла вставил __asm__ __volatile__ ("nop"); иначе цикл выкидывался.

usbcore.c и serial.c (и соотв. *.h) - все (чтобы не долго думать) глобальные переменные объявил volatile

Вроде бы больше ничего.

Компилирую в среде Eclipse тулчейном Code Sourcery Lite. Оптимизация -Os

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте,

столкнулся со следующей непонятной мне ситуацией.

 

Пример USBCDC для LPC1343 для Keil работает как и положено, то есть при замыкании линий TxD и RxD приходит эхо через виртуальный порт.

Переделываю его немного, следующим образом:

 

высылаю пакет через UART

отправляю с компа через виртуальный порт пакет и возвращаю его копию назад (задействован только USBCDC)

 

Таким образом, в моем понимании у меня два независимых порта, по каждому из которых ведется свой опрос, однако при замыкании линий TxD и RxD, наблюдаю как к эхо-пакету по возвращеному через USBCDC присоединяется весь пакет, который я выслал через UART!!!

 

Пытался разобраться в коде примера, но мало понимаю как работает USBCDC, там инициализируется виртуальный порт. Так может именно это каким то образом и соединяет USB И Serial между собой.

 

Буду благодарен за любую помощь, спасибо..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...