За основу взят пример тов. ttabbal (модификация примера CDC из Microchip MCHPFSUSB Framework 2.3).
#elif defined(PROGRAMMABLE_WITH_USB_PK2HID_BOOTLOADER) #define REMAPPED_RESET_VECTOR_ADDRESS 0x2000 #define REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS 0x2008 #define REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS 0x2018
#if defined(PROGRAMMABLE_WITH_USB_PK2HID_BOOTLOADER)|| defined(PROGRAMMABLE_WITH_USB_HID_BOOTLOADER)||defined(PROGRAMMABLE_WITH_USB_MCHPUSB_BOOTLOADER) extern void _startup (void); // See c018i.c in your C18 compiler dir #pragma code REMAPPED_RESET_VECTOR = REMAPPED_RESET_VECTOR_ADDRESS void _reset (void) { ...
#if defined(PROGRAMMABLE_WITH_USB_PK2HID_BOOTLOADER)|| defined(PROGRAMMABLE_WITH_USB_HID_BOOTLOADER)||defined(PROGRAMMABLE_WITH_USB_MCHPUSB_BOOTLOADER) //Note: If this project is built while one of the bootloaders has
В общем то все! Можно скомпилировать и прошить в PICkit2. Как залить свою прошивку в PICkit2 читаем тут
Замечание |
---|
у меня не получилось запустить пример с прилагаемыми драйверами под Windows XP SP2 (не поставился драйвер под второй COM-порт и 2-й порт нормально не работал), пришлось обновиться до SP3. Под Windows XP SP3 драйвера установились нормально и оба виртуальных COM порта заработали. Под OS Vista я не пробовал, желающие могут протестировать и отписаться. |
После установки драйверов (из папки inf в архиве) в Windows появятся 2 виртуальных COM порта. Можно открыть два отдельных окна гипертерминала каждое под свой COM порт и понажимать кнопки на клавиатуре. Скорости обоих COM портов могут быть установлены разные. Пример сделан так, что возвращается нажатый символ+1, т.е. при нажатии на букву «а» в окне гипертерминала напечатается «б».
Я модифицировал пример так, что данные, переданные через один виртуальный COM порт, передаются в другой и наоборот. Так же в примере передаем значения кнопок без сдвига, т.е. при передаче символа «а» в одном окне терминала, принимаем в другом тоже «а».
Исходные коды проекта 2 виртуальных COM порта на PIC контроллере.