Сегодня решил все-таки перейти на более современный софт для программирования AVR, а именно, с IAR EW 1.40C на 2.28A. Взял простенький работающий проект из трех файлов (процессор 4414), подправил описания обработчиков прерываний, и... Фокус заключается в том, что в 1.40 все компилируется, а в 2.28 линковщик выдает: Error[e46]: Undefined external "NEXTCRC(unsigned int, unsigned char)" referred in uart ( D:\Projects\motor\out\uart.r90 )
Файл motor.c - там функция main() В файле uart.c содержится следующая строчка: extern unsigned int NEXTCRC(unsigned int CRC, unsigned char D); Далее по тексту эта функция несколько раз вызывается.
Файл CRC16.s90:
NAME CRC16 RSEG CODE PUBLIC NEXTCRC ; unsigned int NextCRC(unsigned int CRC, unsigned char D) ; r16,r17 - privious CRC ; r20 - data byte D ; return: r16:r17 - new CRC NEXTCRC: eor r16,r20 ldi r22,0x01 ldi r23,0xA0 ldi r21,9 Loop: dec r21 breq Stop lsr r17 ror r16 brcc Loop eor r16,r22 eor r17,r23 rjmp Loop Stop: ret END
Помогите, кто-нибудь, а? Перепробовал всевозможные настройки, все бестолку, объектники генерятся, в мапе функция присутствует. Какой то этот EC++ неприветливый. Благодарю всех кто правильно ткнет носом.