V-USB의 PIN 할당 변경

2563 단어 ATmega328PAVRV-USB
V-USB는 AVR 마이크로컴퓨터를 사용하기 때문에 USB 송수신기가 없는 Atmega328 등을 통해 USB 소도구를 간단하게 제작할 수 있지만, 저항과 고리형 다이오드 등 소규모 회로가 필요해 소량 집적회로를 원할 때는 표준적인 PIN 배분을 변경하려는 경우도 있다.
인터럽트를 INT0에서 PCINT0으로 변경하고 Atmega 328의 PIN14(PB0), PIN15(PB1)로 변경할 때의 변경 부분을 기록한다.

고친 곳


usbconfig.h의 다음 주소 변경
usbconfig.h
/* ---------------------------- Hardware Config ---------------------------- */

#define USB_CFG_IOPORTNAME      B
/* This is the port where the USB bus is connected. When you configure it to
 * "B", the registers PORTB, PINB and DDRB will be used.
 */
#define USB_CFG_DMINUS_BIT      1
/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.
 * This may be any bit in the port.
 */
#define USB_CFG_DPLUS_BIT       0
/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected.
 * This may be any bit in the port. Please note that D+ must also be connected
 * to interrupt pin INT0!
 */
포트 및 풋 번호 할당을 변경합니다.
usbconfig.h
/* ----------------------- Optional MCU Description ------------------------ */

/* The following configurations have working defaults in usbdrv.h. You
 * usually don't need to set them explicitly. Only if you want to run
 * the driver on a device which is not yet supported or with a compiler
 * which is not fully supported (such as IAR C) or if you use a differnt
 * interrupt than INT0, you may have to define some of these.
 */
 #define USB_INTR_CFG            PCICR
 #define USB_INTR_CFG_SET        (1 << PCIE0)
// #define USB_INTR_CFG_CLR        0
 #define USB_INTR_ENABLE         PCMSK0
 #define USB_INTR_ENABLE_BIT     PCINT0
 #define USB_INTR_PENDING        PCIFR 
 #define USB_INTR_PENDING_BIT    PCIF0
#define USB_INTR_VECTOR          PCINT0_vect
#endif /* __usbconfig_h_included__ */
인터럽트 관계의 정의도 PCINT0으로 재정의되지만 PCINT를 사용하기 때문에 우선순위 관계는 인터럽트를 사용할 수 없습니다.
D+는 PB0, D-는 PB1로 변경되어 세로 길이가 가능합니다.
컴팩트하지 않은 설치 예

좋은 웹페이지 즐겨찾기