Upgrade doxygen configuration files to the latest version.
[pub/lufa.git] / Projects / AVRISP-MKII / Lib / ISP / ISPTarget.c
index 67cbf82..b6f6369 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2016.
+     Copyright (C) Dean Camera, 2021.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2016  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2021  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
@@ -37,7 +37,7 @@
 
 #if defined(ENABLE_ISP_PROTOCOL) || defined(__DOXYGEN__)
 
 
 #if defined(ENABLE_ISP_PROTOCOL) || defined(__DOXYGEN__)
 
-/** List of hardware SPI prescaler masks for possible AVRStudio ISP programming speeds.
+/** List of hardware SPI prescaler masks for possible Atmel Studio ISP programming speeds.
  *
  *  \hideinitializer
  */
  *
  *  \hideinitializer
  */
@@ -70,48 +70,48 @@ static const uint8_t SPIMaskFromSCKDuration[] PROGMEM =
  */
 static const uint16_t TimerCompareFromSCKDuration[] PROGMEM =
 {
  */
 static const uint16_t TimerCompareFromSCKDuration[] PROGMEM =
 {
-       TIMER_COMP(96386), TIMER_COMP(89888), TIMER_COMP(84211), TIMER_COMP(79208), TIMER_COMP(74767),
-       TIMER_COMP(70797), TIMER_COMP(67227), TIMER_COMP(64000), TIMER_COMP(61069), TIMER_COMP(58395),
-       TIMER_COMP(55945), TIMER_COMP(51613), TIMER_COMP(49690), TIMER_COMP(47905), TIMER_COMP(46243),
-       TIMER_COMP(43244), TIMER_COMP(41885), TIMER_COMP(39409), TIMER_COMP(38278), TIMER_COMP(36200),
-       TIMER_COMP(34335), TIMER_COMP(32654), TIMER_COMP(31129), TIMER_COMP(29740), TIMER_COMP(28470),
-       TIMER_COMP(27304), TIMER_COMP(25724), TIMER_COMP(24768), TIMER_COMP(23461), TIMER_COMP(22285),
-       TIMER_COMP(21221), TIMER_COMP(20254), TIMER_COMP(19371), TIMER_COMP(18562), TIMER_COMP(17583),
-       TIMER_COMP(16914), TIMER_COMP(16097), TIMER_COMP(15356), TIMER_COMP(14520), TIMER_COMP(13914),
-       TIMER_COMP(13224), TIMER_COMP(12599), TIMER_COMP(12031), TIMER_COMP(11511), TIMER_COMP(10944),
-       TIMER_COMP(10431), TIMER_COMP(9963),  TIMER_COMP(9468),  TIMER_COMP(9081),  TIMER_COMP(8612),
-       TIMER_COMP(8239),  TIMER_COMP(7851),  TIMER_COMP(7498),  TIMER_COMP(7137),  TIMER_COMP(6809),
-       TIMER_COMP(6478),  TIMER_COMP(6178),  TIMER_COMP(5879),  TIMER_COMP(5607),  TIMER_COMP(5359),
-       TIMER_COMP(5093),  TIMER_COMP(4870),  TIMER_COMP(4633),  TIMER_COMP(4418),  TIMER_COMP(4209),
-       TIMER_COMP(4019),  TIMER_COMP(3823),  TIMER_COMP(3645),  TIMER_COMP(3474),  TIMER_COMP(3310),
-       TIMER_COMP(3161),  TIMER_COMP(3011),  TIMER_COMP(2869),  TIMER_COMP(2734),  TIMER_COMP(2611),
-       TIMER_COMP(2484),  TIMER_COMP(2369),  TIMER_COMP(2257),  TIMER_COMP(2152),  TIMER_COMP(2052),
-       TIMER_COMP(1956),  TIMER_COMP(1866),  TIMER_COMP(1779),  TIMER_COMP(1695),  TIMER_COMP(1615),
-       TIMER_COMP(1539),  TIMER_COMP(1468),  TIMER_COMP(1398),  TIMER_COMP(1333),  TIMER_COMP(1271),
-       TIMER_COMP(1212),  TIMER_COMP(1155),  TIMER_COMP(1101),  TIMER_COMP(1049),  TIMER_COMP(1000),
-       TIMER_COMP(953),   TIMER_COMP(909),   TIMER_COMP(866),   TIMER_COMP(826),   TIMER_COMP(787),
-       TIMER_COMP(750),   TIMER_COMP(715),   TIMER_COMP(682),   TIMER_COMP(650),   TIMER_COMP(619),
-       TIMER_COMP(590),   TIMER_COMP(563),   TIMER_COMP(536),   TIMER_COMP(511),   TIMER_COMP(487),
-       TIMER_COMP(465),   TIMER_COMP(443),   TIMER_COMP(422),   TIMER_COMP(402),   TIMER_COMP(384),
-       TIMER_COMP(366),   TIMER_COMP(349),   TIMER_COMP(332),   TIMER_COMP(317),   TIMER_COMP(302),
-       TIMER_COMP(288),   TIMER_COMP(274),   TIMER_COMP(261),   TIMER_COMP(249),   TIMER_COMP(238),
-       TIMER_COMP(226),   TIMER_COMP(216),   TIMER_COMP(206),   TIMER_COMP(196),   TIMER_COMP(187),
-       TIMER_COMP(178),   TIMER_COMP(170),   TIMER_COMP(162),   TIMER_COMP(154),   TIMER_COMP(147),
-       TIMER_COMP(140),   TIMER_COMP(134),   TIMER_COMP(128),   TIMER_COMP(122),   TIMER_COMP(116),
-       TIMER_COMP(111),   TIMER_COMP(105),   TIMER_COMP(100),   TIMER_COMP(95.4),  TIMER_COMP(90.9),
-       TIMER_COMP(86.6),  TIMER_COMP(82.6),  TIMER_COMP(78.7),  TIMER_COMP(75.0),  TIMER_COMP(71.5),
-       TIMER_COMP(68.2),  TIMER_COMP(65.0),  TIMER_COMP(61.9),  TIMER_COMP(59.0),  TIMER_COMP(56.3),
-       TIMER_COMP(53.6),  TIMER_COMP(51.1)
+       ISP_TIMER_COMP(96386), ISP_TIMER_COMP(89888), ISP_TIMER_COMP(84211), ISP_TIMER_COMP(79208), ISP_TIMER_COMP(74767),
+       ISP_TIMER_COMP(70797), ISP_TIMER_COMP(67227), ISP_TIMER_COMP(64000), ISP_TIMER_COMP(61069), ISP_TIMER_COMP(58395),
+       ISP_TIMER_COMP(55945), ISP_TIMER_COMP(51613), ISP_TIMER_COMP(49690), ISP_TIMER_COMP(47905), ISP_TIMER_COMP(46243),
+       ISP_TIMER_COMP(43244), ISP_TIMER_COMP(41885), ISP_TIMER_COMP(39409), ISP_TIMER_COMP(38278), ISP_TIMER_COMP(36200),
+       ISP_TIMER_COMP(34335), ISP_TIMER_COMP(32654), ISP_TIMER_COMP(31129), ISP_TIMER_COMP(29740), ISP_TIMER_COMP(28470),
+       ISP_TIMER_COMP(27304), ISP_TIMER_COMP(25724), ISP_TIMER_COMP(24768), ISP_TIMER_COMP(23461), ISP_TIMER_COMP(22285),
+       ISP_TIMER_COMP(21221), ISP_TIMER_COMP(20254), ISP_TIMER_COMP(19371), ISP_TIMER_COMP(18562), ISP_TIMER_COMP(17583),
+       ISP_TIMER_COMP(16914), ISP_TIMER_COMP(16097), ISP_TIMER_COMP(15356), ISP_TIMER_COMP(14520), ISP_TIMER_COMP(13914),
+       ISP_TIMER_COMP(13224), ISP_TIMER_COMP(12599), ISP_TIMER_COMP(12031), ISP_TIMER_COMP(11511), ISP_TIMER_COMP(10944),
+       ISP_TIMER_COMP(10431), ISP_TIMER_COMP(9963),  ISP_TIMER_COMP(9468),  ISP_TIMER_COMP(9081),  ISP_TIMER_COMP(8612),
+       ISP_TIMER_COMP(8239),  ISP_TIMER_COMP(7851),  ISP_TIMER_COMP(7498),  ISP_TIMER_COMP(7137),  ISP_TIMER_COMP(6809),
+       ISP_TIMER_COMP(6478),  ISP_TIMER_COMP(6178),  ISP_TIMER_COMP(5879),  ISP_TIMER_COMP(5607),  ISP_TIMER_COMP(5359),
+       ISP_TIMER_COMP(5093),  ISP_TIMER_COMP(4870),  ISP_TIMER_COMP(4633),  ISP_TIMER_COMP(4418),  ISP_TIMER_COMP(4209),
+       ISP_TIMER_COMP(4019),  ISP_TIMER_COMP(3823),  ISP_TIMER_COMP(3645),  ISP_TIMER_COMP(3474),  ISP_TIMER_COMP(3310),
+       ISP_TIMER_COMP(3161),  ISP_TIMER_COMP(3011),  ISP_TIMER_COMP(2869),  ISP_TIMER_COMP(2734),  ISP_TIMER_COMP(2611),
+       ISP_TIMER_COMP(2484),  ISP_TIMER_COMP(2369),  ISP_TIMER_COMP(2257),  ISP_TIMER_COMP(2152),  ISP_TIMER_COMP(2052),
+       ISP_TIMER_COMP(1956),  ISP_TIMER_COMP(1866),  ISP_TIMER_COMP(1779),  ISP_TIMER_COMP(1695),  ISP_TIMER_COMP(1615),
+       ISP_TIMER_COMP(1539),  ISP_TIMER_COMP(1468),  ISP_TIMER_COMP(1398),  ISP_TIMER_COMP(1333),  ISP_TIMER_COMP(1271),
+       ISP_TIMER_COMP(1212),  ISP_TIMER_COMP(1155),  ISP_TIMER_COMP(1101),  ISP_TIMER_COMP(1049),  ISP_TIMER_COMP(1000),
+       ISP_TIMER_COMP(953),   ISP_TIMER_COMP(909),   ISP_TIMER_COMP(866),   ISP_TIMER_COMP(826),   ISP_TIMER_COMP(787),
+       ISP_TIMER_COMP(750),   ISP_TIMER_COMP(715),   ISP_TIMER_COMP(682),   ISP_TIMER_COMP(650),   ISP_TIMER_COMP(619),
+       ISP_TIMER_COMP(590),   ISP_TIMER_COMP(563),   ISP_TIMER_COMP(536),   ISP_TIMER_COMP(511),   ISP_TIMER_COMP(487),
+       ISP_TIMER_COMP(465),   ISP_TIMER_COMP(443),   ISP_TIMER_COMP(422),   ISP_TIMER_COMP(402),   ISP_TIMER_COMP(384),
+       ISP_TIMER_COMP(366),   ISP_TIMER_COMP(349),   ISP_TIMER_COMP(332),   ISP_TIMER_COMP(317),   ISP_TIMER_COMP(302),
+       ISP_TIMER_COMP(288),   ISP_TIMER_COMP(274),   ISP_TIMER_COMP(261),   ISP_TIMER_COMP(249),   ISP_TIMER_COMP(238),
+       ISP_TIMER_COMP(226),   ISP_TIMER_COMP(216),   ISP_TIMER_COMP(206),   ISP_TIMER_COMP(196),   ISP_TIMER_COMP(187),
+       ISP_TIMER_COMP(178),   ISP_TIMER_COMP(170),   ISP_TIMER_COMP(162),   ISP_TIMER_COMP(154),   ISP_TIMER_COMP(147),
+       ISP_TIMER_COMP(140),   ISP_TIMER_COMP(134),   ISP_TIMER_COMP(128),   ISP_TIMER_COMP(122),   ISP_TIMER_COMP(116),
+       ISP_TIMER_COMP(111),   ISP_TIMER_COMP(105),   ISP_TIMER_COMP(100),   ISP_TIMER_COMP(95.4),  ISP_TIMER_COMP(90.9),
+       ISP_TIMER_COMP(86.6),  ISP_TIMER_COMP(82.6),  ISP_TIMER_COMP(78.7),  ISP_TIMER_COMP(75.0),  ISP_TIMER_COMP(71.5),
+       ISP_TIMER_COMP(68.2),  ISP_TIMER_COMP(65.0),  ISP_TIMER_COMP(61.9),  ISP_TIMER_COMP(59.0),  ISP_TIMER_COMP(56.3),
+       ISP_TIMER_COMP(53.6),  ISP_TIMER_COMP(51.1)
 };
 
 /** Currently selected SPI driver, either hardware (for fast ISP speeds) or software (for slower ISP speeds). */
 };
 
 /** Currently selected SPI driver, either hardware (for fast ISP speeds) or software (for slower ISP speeds). */
-bool HardwareSPIMode = true;
+bool ISPTarget_HardwareSPIMode = true;
 
 /** Software SPI data register for sending and receiving */
 
 /** Software SPI data register for sending and receiving */
-static volatile uint8_t SoftSPI_Data;
+static volatile uint8_t ISPTarget_SoftSPI_Data;
 
 /** Number of bits left to transfer in the software SPI driver */
 
 /** Number of bits left to transfer in the software SPI driver */
-static volatile uint8_t SoftSPI_BitsRemaining;
+static volatile uint8_t ISPTarget_SoftSPI_BitsRemaining;
 
 
 /** ISR to handle software SPI transmission and reception */
 
 
 /** ISR to handle software SPI transmission and reception */
@@ -120,23 +120,23 @@ ISR(TIMER1_COMPA_vect, ISR_BLOCK)
        /* Check if rising edge (output next bit) or falling edge (read in next bit) */
        if (!(PINB & (1 << 1)))
        {
        /* Check if rising edge (output next bit) or falling edge (read in next bit) */
        if (!(PINB & (1 << 1)))
        {
-               if (SoftSPI_Data & (1 << 7))
+               if (ISPTarget_SoftSPI_Data & (1 << 7))
                  PORTB |=  (1 << 2);
                else
                  PORTB &= ~(1 << 2);
        }
        else
        {
                  PORTB |=  (1 << 2);
                else
                  PORTB &= ~(1 << 2);
        }
        else
        {
-               SoftSPI_Data <<= 1;
+               ISPTarget_SoftSPI_Data <<= 1;
 
 
-               if (!(--SoftSPI_BitsRemaining))
+               if (!(--ISPTarget_SoftSPI_BitsRemaining))
                {
                        TCCR1B = 0;
                        TIFR1  = (1 << OCF1A);
                }
 
                if (PINB & (1 << 3))
                {
                        TCCR1B = 0;
                        TIFR1  = (1 << OCF1A);
                }
 
                if (PINB & (1 << 3))
-                 SoftSPI_Data |= (1 << 0);
+                 ISPTarget_SoftSPI_Data |= (1 << 0);
        }
 
        /* Fast toggle of PORTB.1 via the PIN register (see datasheet) */
        }
 
        /* Fast toggle of PORTB.1 via the PIN register (see datasheet) */
@@ -152,14 +152,14 @@ void ISPTarget_EnableTargetISP(void)
 
        if (SCKDuration < sizeof(SPIMaskFromSCKDuration))
        {
 
        if (SCKDuration < sizeof(SPIMaskFromSCKDuration))
        {
-               HardwareSPIMode = true;
+               ISPTarget_HardwareSPIMode = true;
 
                SPI_Init(pgm_read_byte(&SPIMaskFromSCKDuration[SCKDuration]) | SPI_ORDER_MSB_FIRST |
                                       SPI_SCK_LEAD_RISING | SPI_SAMPLE_LEADING | SPI_MODE_MASTER);
        }
        else
        {
 
                SPI_Init(pgm_read_byte(&SPIMaskFromSCKDuration[SCKDuration]) | SPI_ORDER_MSB_FIRST |
                                       SPI_SCK_LEAD_RISING | SPI_SAMPLE_LEADING | SPI_MODE_MASTER);
        }
        else
        {
-               HardwareSPIMode = false;
+               ISPTarget_HardwareSPIMode = false;
 
                DDRB  |= ((1 << 1) | (1 << 2));
                PORTB |= ((1 << 0) | (1 << 3));
 
                DDRB  |= ((1 << 1) | (1 << 2));
                PORTB |= ((1 << 0) | (1 << 3));
@@ -173,7 +173,7 @@ void ISPTarget_EnableTargetISP(void)
  */
 void ISPTarget_DisableTargetISP(void)
 {
  */
 void ISPTarget_DisableTargetISP(void)
 {
-       if (HardwareSPIMode)
+       if (ISPTarget_HardwareSPIMode)
        {
                SPI_Disable();
        }
        {
                SPI_Disable();
        }
@@ -243,21 +243,21 @@ void ISPTarget_ConfigureSoftwareSPI(const uint8_t SCKDuration)
  */
 uint8_t ISPTarget_TransferSoftSPIByte(const uint8_t Byte)
 {
  */
 uint8_t ISPTarget_TransferSoftSPIByte(const uint8_t Byte)
 {
-       SoftSPI_Data          = Byte;
-       SoftSPI_BitsRemaining = 8;
+       ISPTarget_SoftSPI_Data          = Byte;
+       ISPTarget_SoftSPI_BitsRemaining = 8;
 
        /* Set initial MOSI pin state according to the byte to be transferred */
 
        /* Set initial MOSI pin state according to the byte to be transferred */
-       if (SoftSPI_Data & (1 << 7))
+       if (ISPTarget_SoftSPI_Data & (1 << 7))
          PORTB |=  (1 << 2);
        else
          PORTB &= ~(1 << 2);
 
        TCNT1  = 0;
        TCCR1B = ((1 << WGM12) | (1 << CS11));
          PORTB |=  (1 << 2);
        else
          PORTB &= ~(1 << 2);
 
        TCNT1  = 0;
        TCCR1B = ((1 << WGM12) | (1 << CS11));
-       while (SoftSPI_BitsRemaining && TimeoutTicksRemaining);
+       while (ISPTarget_SoftSPI_BitsRemaining && TimeoutTicksRemaining);
        TCCR1B = 0;
 
        TCCR1B = 0;
 
-       return SoftSPI_Data;
+       return ISPTarget_SoftSPI_Data;
 }
 
 /** Asserts or deasserts the target's reset line, using the correct polarity as set by the host using a SET PARAM command.
 }
 
 /** Asserts or deasserts the target's reset line, using the correct polarity as set by the host using a SET PARAM command.