diff --git a/NEWS b/NEWS index 93e00bcd..300660e2 100644 --- a/NEWS +++ b/NEWS @@ -133,6 +133,9 @@ Changes since version 6.4: - Tweak programmer info formatting strings #872 - Remove libhid support in ser_avrdoper.c in favor of libhidapi #882 - Reduce jtag3 output verbosity #877 + - Fix Curiosity Nano target voltage #878 + - Smallest possible fix for PL2303HX #885 + - Add missing USBtiny derived programmers #873 * Internals: diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in index 4b4766fb..e5aacbd7 100644 --- a/src/avrdude.conf.in +++ b/src/avrdude.conf.in @@ -886,6 +886,24 @@ programmer usbpid = 0x0c9f; ; +programmer + id = "arduinoisp"; + desc = "Arduino ISP Programmer"; + type = "usbtiny"; + connection_type = usb; + usbvid = 0x2341; + usbpid = 0x0049; +; + +programmer + id = "arduinoisporg"; + desc = "Arduino ISP Programmer"; + type = "usbtiny"; + connection_type = usb; + usbvid = 0x2A03; + usbpid = 0x0049; +; + # commercial version of USBtiny, using a separate VID/PID programmer id = "ehajo-isp"; @@ -896,6 +914,16 @@ programmer usbpid = 0x0BA5; ; +# commercial version of USBtiny, using a separate VID/PID +programmer + id = "iseavrprog"; + desc = "USBtiny-based USB programmer, https://github.com/IowaScaledEngineering/ckt-avrprogrammer"; + type = "usbtiny"; + connection_type = usb; + usbvid = 0x1209; + usbpid = 0x6570; +; + programmer id = "micronucleus"; desc = "Micronucleus Bootloader"; @@ -914,16 +942,6 @@ programmer usbpid = 0x0478; ; -# commercial version of USBtiny, using a separate VID/PID -programmer - id = "iseavrprog"; - desc = "USBtiny-based USB programmer, https://github.com/IowaScaledEngineering/ckt-avrprogrammer"; - type = "usbtiny"; - connection_type = usb; - usbvid = 0x1209; - usbpid = 0x6570; -; - programmer id = "butterfly"; desc = "Atmel Butterfly Development Board"; diff --git a/src/updi_link.c b/src/updi_link.c index 684b6b8d..1f179398 100644 --- a/src/updi_link.c +++ b/src/updi_link.c @@ -53,7 +53,7 @@ static void updi_set_rtsdtr_mode(PROGRAMMER* pgm) static int updi_physical_open(PROGRAMMER* pgm, int baudrate, unsigned long cflags) { - serial_recv_timeout = 100; + serial_recv_timeout = 1000; union pinfo pinfo; pinfo.serialinfo.baud = baudrate; @@ -155,6 +155,8 @@ static int updi_physical_send_double_break(PROGRAMMER * pgm) serial_send(&pgm->fd, buffer, 1); serial_recv(&pgm->fd, buffer, 1); + serial_drain(&pgm->fd, 0); + if (serial_setparams(&pgm->fd, pgm->baudrate? pgm->baudrate: 115200, SERIAL_8E2) < 0) { return -1; } @@ -196,10 +198,14 @@ int updi_physical_sib(PROGRAMMER * pgm, unsigned char * buffer, uint8_t size) int updi_link_open(PROGRAMMER * pgm) { + unsigned char init_buffer[1]; + if (updi_physical_open(pgm, pgm->baudrate? pgm->baudrate: 115200, SERIAL_8E2) < 0) { return -1; } - return updi_physical_send_double_break(pgm); + + init_buffer[0]=UPDI_BREAK; + return updi_physical_send(pgm, init_buffer, 1); } void updi_link_close(PROGRAMMER * pgm)