во-первых, прикольно было увидеть, что этот раздел еще живее всех живых (хотя в активных темах оно как-то теряется) портирую тут одну штуку под mega8a
Compiling: timer1ovf_isr.c /usr/local/bin/avr-gcc -c -mmcu=atmega8a -I. -gstabs -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=Builds/timer1ovf_isr.lst -std=gnu99 -gstabs -gstrict-dwarf /Users/red/Documents/dev/AVR/LIN-mega8/LIN-mega8/timer1ovf_isr.c -o Builds/timer1ovf_isr.o In file included from /Users/red/Documents/dev/AVR/LIN-mega8/LIN-mega8/config.h:38, from /Users/red/Documents/dev/AVR/LIN-mega8/LIN-mega8/timer1ovf_isr.c:36: /usr/local/Cellar/avr-gcc@9/9.3.0_3/avr/include/avr/iom8a.h:42:4: error: #error Include <,avr/io.h>, instead of this file. 42 | # error Include <,avr/io.h>, instead of this file. | ^ /Users/red/Documents/dev/AVR/LIN-mega8/LIN-mega8/timer1ovf_isr.c:54: warning: ignoring #pragma optimize -Wunknown-pragmas 54 | #pragma optimize=z 2 // Force no optimization for this ISR. | /Users/red/Documents/dev/AVR/LIN-mega8/LIN-mega8/timer1ovf_isr.c:55: warning: ignoring #pragma vector -Wunknown-pragmas 55 | #pragma vector= TIMER1_OVF_vect | /Users/red/Documents/dev/AVR/LIN-mega8/LIN-mega8/timer1ovf_isr.c:56:12: error: expected ‘,’ before ‘void’ 56 | __interrupt void TIMER1_Overflow_ISR (void){ | ^ | , make: *** Builds/timer1ovf_isr.o Error 1
видимо, код из какой-то другой среды. собираю через avr-gcc, ну и вот такая ругань. для начала не ясно, где, вместо какого файла и почему нужно инклюдить avr/io.h почему игнорируются эти строки про оптимизацию и почему ему нужна точка с запятой перед войдом (тоже игнорирует __interrupt?)
goreprogrammist
28 апр 2023, 23:11
допустим, от той ругани я избавился (не уверен, что правильно) – поменял с инклюда iom8a.h на io.h прагмы поудалял, __interrupt тоже теперь интереснее: /usr/local/opt/avr-binutils/bin/avr-ld: Builds/timer1ovf_isr.o: in function `TIMER1_Overflow_ISR’: /Users/red/Documents/dev/AVR/LIN-mega8/LIN-mega8/timer1ovf_isr.c:62: undefined reference to `l_sch_tick’ при этом у меня есть в этом файле инклюд на другой файл, где есть прототип этой функции (ну и реализация в соответствующем .c файле) кстати, файлы .dep, .ewd и .ewp – это что за среда вообще?
COKPOWEHEU
28 апр 2023, 23:14
для начала не ясно, где, вместо какого файла и почему нужно инклюдить avr/io.h
Он же написал, что ошибка в файле /usr/local/Cellar/avr-gcc@9/9.3.0_3/avr/include/avr/iom8a.h Вот вместо него и нужен io.h
Не знаю где используется вариант с прагмами, просто пишите ISR(TIMER1_OVF_vect){…} вместо __interrupt void TIMER1_Overflow_ISR (void){ Еще не забудьте, что в том же мейкфайле задается частота камня -FD_CPU=1000000UL (НЕ В ИСХОДНИКАХ!) или что-то в этом роде и тип контроллера –mcu=atmega8
goreprogrammist
29 апр 2023, 01:05
про ISR – спасибо, напомнили) про оптимизацию – в мейкфайле она для всего проекта, а тут – для отдельного обработчика. пытаюсь понять, как его заставить собирать все .c файлы (вроде бы в makefile указал директории EXTRAINCDIRS = lin_uart TIMER UART но в выводе один фиг для других файлов, которые не в корне проекта, ничего не собирается, ну и ругань идет от линковщика, как я понимаю
goreprogrammist
29 апр 2023, 01:15
тэк, добавил в мейкфайл в строку SRC через пробел директорию и вроде пошло дело. теперь другая напасть: в заинклюженном файле строки
* @fn _lin_it_uart_rx * @brief This interrupt function manages the State machine of the LIN. * The receive interrrupt is used to be able to check at each byte * if the byte monitored (received) is the same than byte sent. **/ __interrupt void _lin_it_uart_rx (void) { switch (_lin_state) { /** STATE_CHECK_BREAK: This state is used for both SLAVE and MASTER * configuration.
но разве такой вектор существует? какое-то пользовательское прерывание? первый раз такое вижу. хз как тут быть.
TrD
29 апр 2023, 07:48
Эти файлы от IAR.
goreprogrammist
29 апр 2023, 19:29
хз как тут быть с makefile. он не хочет собирать файлы, которые находятся в подпапках. я добавил их явным образом SRC = $(wildcard *.c) lin_uart/lin_drv_usart.c lin_uart/runtime_calibration_lib.c lin_uart/lin_lib.c lin_uart/slave_lin.c но не особо помогло. теперь оно ругается вот так: <,built-in>,: fatal error: opening dependency file Builds/.dep/lin_uart/slave_lin.d: No such file or directory
Viewing 0 reply threads
Вы должны войти в систему, чтобы ответить в этой теме.