Два виртуальных COM порта

За основу взят пример тов. ttabbal (модификация примера CDC из Microchip MCHPFSUSB Framework 2.3).

1. Качаем пример

2. Как обычно модифицируем программу под загрузку бутлоадером PCkit-а

Определение периферии (под особенности железа PICkit2
  • Переопределяем аппаратные настойки (я вообще сделал файл HardwareProfile - PK2.h дабы везде его использовать и не создавать каждый раз одну и ту же конфигурацию железа). Обратите внимание, в файле HardwareProfile - PK2.h есть строчка #define PROGRAMMABLE_WITH_USB_PK2HID_BOOTLOADER - указываем что шить будем с конфигурацией под бутлоадер PICkit-а
Файл HardwareProfile.h
  • должна быть строчка на наш файл определения периферии #include «HardwareProfile - PK2.h»
Файл main.c
  • переопределение векторов прерываний и сброса
#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
  • Добавляем PROGRAMMABLE_WITH_USB_PK2HID_BOOTLOADER
#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 контроллере.

песочница/2.виртуальных.com.порта.txt · Последние изменения: 11/06/2009.11:23 (внешнее изменение)
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0