Active T89C51CC01 Errata List • Flash/EEPROM – First Read After Write Disturbed • Flash/EEPROM – First Read After Load Disturbed • Timer 2 – Baud Rate Generator – No IT When TF2 is Set by Software • Timer 2 – Baud Rate Generator – Long Start Time • UART – RB8 Lost with JBC on SCON Register • ADC – Interrupt During Idle Conversion T89C51CC01 Errata History Lot Number Errata List A00151 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12 A00369 1, 3, 4, 5, 6, 7, 8, 9, 10, 12 A00367, A00368, A00396 to A00529 A00510, all lots from A00588 80C51 MCUs T89C51CC01UA T89C51CC01CA 1, 3, 5, 6, 7, 8, 9, 10, 12 1, 7, 8, 9,10, 11, 12 Errata Sheet T89C51CC01 Errata Description 1. Flash/EEPROM – First Read After Write Disturbed After a write of more than 32 bytes in the EEPROM and 16 bytes in the User Flash memory, the read of the first byte may be disturbed if it occurs just after the write. Workaround Do not load/write more than 32 bytes at a time for EEPROM memory. Do not load/write more than 16 bytes at a time for User Flash memory, OR perform a “dummy” read before reading the first byte, OR wait 10 ms before reading the first byte. 2. Buffer Noise Large bounces and high noise are generated when buffers are switching (both rising and falling edges). Workaround None. 3. Double IT on External Falling Edge on INT1 or INT0 in X2 Mode When the CPU is in X2 mode and Timer1 or Timer 0 in X1 mode (CKCON = 0x7F), IEx flag is not cleared by hardware after servicing interrupt. In this case, the CPU executes the ISR a second time. Workaround The workaround is to clear IEx bit in Interrupt subroutine. INT1_ISR : ; Interrupt sub routine CLR IE1 .... Rev. 4131C–8051–11/02 1 4. Movc Instruction on Boot Memory from Boot Memory Does Not Work No movc instruction is performed when a program running on the boot memory tries to read its own code using a movc instruction. Workaround None. 5. Power OFF Flag Power OFF Flag does not work. Workaround None. 6. CAN – Lost CAN Error Interrupt When a stuff error occurs during a CAN frame transmission on DPRAM write access, the controller does not generate the error interrupt and any received frame can generate a Receive interrupt. Workaround None. 7. Timer 2 – Baud Rate Generator – No IT When TF2 is Set by Software When Timer 2 is used in baud rate generator mode, setting TF2 by software does not generate an interrupt. Workaround Use Timer 1 instead of Timer 2 to generate baud rate and interrupt. 8. Timer 2 – Baud Rate Generator – Long Start Time When Timer 2 is used as a baud rate generator, TH2 is not loaded with RCAP2H at the beginning, then UART is not operational before 10000 machine cycles. Workaround Add the initialization of TH2 and TL2 in the initialization of Timer 2. 9. UART – RB8 Lost With JBC on SCON Register May lose RB8 value, if RB8 changes from 1 to 0 during JBC instruction on SCON register. Workaround Clear RB8 at the beginning of the code and after each time it goes to 1. 10. ADC – Interrupt Controller/ADC Idle Mode/Loops In High Priority Interrupt The problem occurs during an A/D conversion in idle mode, if a hardware resetable interrupt occurs followed by a second interrupt with higher priority before the end of the A/D conversion. If the above configuration occurs, the high priority interrupt is served immediately after the A/D conversion. At the end of the high priority interrupt service, the processor will not serve the hardware resetable interrupt pending. It will also not serve any new interrupt requests with a priority lower than the high level priority last served. Workaround Disable all interrupts (Interrupt Global Interrupt Bit) before starting an A/D conversion in idle mode, then re-enable all interrupts immediately after. 2 4131C–8051–11/02 11. CAN – CANCONCH Harmless Corruption The fix for Errata number 6 (Lost CAN Error Interrupt), fixes the problem. However, when the stuff error occurs, the CONCH1, CONCH0 bits in CANCONCH are corrupted. This corruption has no effect on the behavior of the Transmit channel. Workaround No workaround is required, re-writing CANCONCH to start a new message resolves the corruption. 12. Flash/EEPROM – First Read After Load Disturbed In the "In-Application Programming" mode from the Flash, if the User software application load the Column Latch Area prior to call the programming sequence in the CAN Bootloader. The "Read after load" issue leads to a wrong Opcode Fetch during the column latch load sequence. Workaround Update of the Flash API Library. A NOP instruction has to be inserted after the load instruction. MOVX @DPTR,A ;Load Column latches NOP ; ADDED INSTRUCTION 3 4131C–8051–11/02 Active UART Bootloader Errata List • • • • • Timer 2 and UART Are Not Stopped Watchdog and Flash API Starting the Bootloader Execution Autobaud False Start Bit Detection Boot Process Compatibility Flash api “__api_wr_code_page” with 0 data in length parameter field UART Bootloader Errata History Version Number Errata List 1.2 (1.1.2 displayed by FLIP) 1, 2, 3 1.4 1, 2, 3, 4,5 UART Bootloader Errata Description 1. Timer 2 and UART Are Not Stopped When the bootloader receives the command “Start Application” (LJMP 0), the Timer 2 and the UART are not stopped. Workaround The application must have in its setup function a reset of Timer 2 and UART. mov SCON, #00h mov T2CON, #00h mov RCAP2L, #00h mov RCAP2H, #00h mov TL2, #00h mov TH2, #00h 2. Watchdog and Flash API Starting the Bootloader Execution When an application call “__api_start_bootloader” or”__api_start_isp” routines while the watchdog is enabled, when the watchdog overflow it will restart the application instead of the bootloader Workaround Set BLJB(=1) before calling the __api_start_bootloader or __api_start_isp if the watchdog is used. 3. Autobaud False Start Bit Detection UART autobaud sequence does not work on some special UARTs. Some laptops have the UART TX line set to 0 when unused (COM port closed), this results in a false baud rate calculation on the ‘U’ character. The autobaud sequence checkes for a ‘0’ state (not a falling edge) on the Rx line of the UART microcontroller to detect the ‘start’ bit of the ‘U’ synchro character. As this line is ‘0’ by default when COM port is closed, the autobaud routine starts its baudrate calculation at the opening sequence of the UART. 4 4131C–8051–11/02 Workaround A ‘Special Sync’ can be used with ‘FLIP’ software. In this case, the open port event and the ‘U’ sent are dissociated. The user must first open his COM port with the ‘connect’ button, then reset its hardware and finally push the ‘sync’ button. 4. Boot Process Compatibility There are some differences between Boot process of bootloader 1.2 and newer versions. Version 1.2: RESET BLJB = 1 BLJB = 0 BLJB Hardware Process Software Process No Yes FCON = F0h Yes BSB = 00h No No Yes SBV = FCh Application Executed Atmel bootloader Executed User Bootloader Executed Version 1.4: RESET BLJB = 1 BLJB BLJB = 0 Hardware Process Software Process Yes FCON = F0h No Yes SBV < FCh Application Executed User Bootloader Executed No Atmel bootloader Executed Workaround Use the fuse bit BLJB to start the application on both versions. 5 4131C–8051–11/02 5. Flash API “__api_wr_code_page” with 0 data in length parameter field When the flash api “__api_wr_code_page” is called with the field nb_data equal 0 then 255 data are wrote in flash. Workaround Include a test on nb_data before executed __api_wr_code_page routine. 6 4131C–8051–11/02 Active CAN Bootloader Errata List • The CAN is Not Stopped • Watchdog and Flash API Starting the Bootloader Execution • Flash api “__api_wr_code_page” with 0 data in length parameter field CAN Bootloader Errata History Version Number Errata List 1.0.4 1, 2, 3 CAN Bootloader Errata Description 1. The CAN is not stopped When the bootloader receives the command “Start Application” (LJMP 0), the CAN is not stopped. Workaround The application must have in its setup function a reset of CAN macro. mov CANGCON, #00h 2. Watchdog and Flash API Starting the Bootloader Execution When an application call “__api_start_bootloader” or”__api_start_isp” routines while the watchdog is enabled, when the watchdog overflow it will restart the application instead of the bootloader Workaround Set BLJB(=1) before calling the __api_start_bootloader or __api_start_isp if the watchdog is used. 3. Flash API “__api_wr_code_page” with 0 data in length parameter field When the flash api “__api_wr_code_page” is called with the field nb_data equal 0 then 255 data are wrote in flash. Workaround Include a test on nb_data before executed __api_wr_code_page routine. 7 4131C–8051–11/02 Atmel Headquarters Atmel Operations Corporate Headquarters Memory 2325 Orchard Parkway San Jose, CA 95131 TEL 1(408) 441-0311 FAX 1(408) 487-2600 Europe Atmel Sarl Route des Arsenaux 41 Case Postale 80 CH-1705 Fribourg Switzerland TEL (41) 26-426-5555 FAX (41) 26-426-5500 Asia Room 1219 Chinachem Golden Plaza 77 Mody Road Tsimhatsui East Kowloon Hong Kong TEL (852) 2721-9778 FAX (852) 2722-1369 Japan 9F, Tonetsu Shinkawa Bldg. 1-24-8 Shinkawa Chuo-ku, Tokyo 104-0033 Japan TEL (81) 3-3523-3551 FAX (81) 3-3523-7581 2325 Orchard Parkway San Jose, CA 95131 TEL 1(408) 441-0311 FAX 1(408) 436-4314 RF/Automotive Theresienstrasse 2 Postfach 3535 74025 Heilbronn, Germany TEL (49) 71-31-67-0 FAX (49) 71-31-67-2340 Microcontrollers 2325 Orchard Parkway San Jose, CA 95131 TEL 1(408) 441-0311 FAX 1(408) 436-4314 La Chantrerie BP 70602 44306 Nantes Cedex 3, France TEL (33) 2-40-18-18-18 FAX (33) 2-40-18-19-60 ASIC/ASSP/Smart Cards Zone Industrielle 13106 Rousset Cedex, France TEL (33) 4-42-53-60-00 FAX (33) 4-42-53-60-01 1150 East Cheyenne Mtn. Blvd. Colorado Springs, CO 80906 TEL 1(719) 576-3300 FAX 1(719) 540-1759 Biometrics/Imaging/Hi-Rel MPU/ High Speed Converters/RF Datacom Avenue de Rochepleine BP 123 38521 Saint-Egreve Cedex, France TEL (33) 4-76-58-30-00 FAX (33) 4-76-58-34-80 1150 East Cheyenne Mtn. Blvd. Colorado Springs, CO 80906 TEL 1(719) 576-3300 FAX 1(719) 540-1759 Scottish Enterprise Technology Park Maxwell Building East Kilbride G75 0QR, Scotland TEL (44) 1355-803-000 FAX (44) 1355-242-743 e-mail [email protected] Web Site http://www.atmel.com © Atmel Corporation 2002. Atmel Corporation makes no warranty for the use of its products, other than those expressly contained in the Company’s standard warranty which is detailed in Atmel’s Terms and Conditions located on the Company’s web site. The Company assumes no responsibility for any errors which may appear in this document, reserves the right to change devices or specifications detailed herein at any time without notice, and does not make any commitment to update the information contained herein. No licenses to patents or other intellectual property of Atmel are granted by the Company in connection with the sale of Atmel products, expressly or by implication. Atmel’s products are not authorized for use as critical components in life support devices or systems. ATMEL ® is a registered trademark of Atmel. Other terms and product names may be the trademarks of others. Printed on recycled paper. 4131C–8051–11/02 0M