avr_test.c: In function 'setup': avr_test.c:5:2: error: 'DDRB' undeclared (first use in this function) DDRB |= (1 << PB4);
Что говорит о том что он не видит .h файлы. Сами .h файлы физически есть, в /usr/avr/include Когда-то я этот успешно решил, но что я тогда сделал - убей, не помню. где-то в линуксе писал пути к этим бибилиотекам. Пробовал установливать PATH в /usr/avr и /usr/avr/include, но не помогает.
Нет. Конкретно сообщение выше говорит о том, что DDRB не определено. Что скорее всего означает, что вы забыли сделать #include <avr/io.h> Если бы этого файла не было бы, компилятор ругался именно на отсутствие вкладываемого .h файла через #include, что если и было, то вы показали не ту ошибку.
Добавлено after 1 minute 21 second: PS: Но на всякий случай путь для #include прописывается в переменной окружения CPATH, а не PATH.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Добавлено after 2 minutes 4 seconds: Если бы gcc не мог найти файла по #include, он бы ругнулся так:
Код:
fatal error: avr/io.h: No such file or directory
и дальше не стал бы даже пытаться скомпилировать файл! Значит проблема не в нахождении файла, а в его "содержимом". В данном случае avr/io.h содержит очень много #ifdef зависящих от модели МК, которая как раз передается ключиком -mmcu правильным. Если этого не сделать, файл для компилятора подключится, но окажется условно почти пустым. Поэтому и такие ошибки могут быть.
Добавлено after 2 minutes 41 second: А, ну еще вариант конечно что -mmcu есть, но там указана модель МК в которой в принципе нет DDRB. Какая-нибудь тинька малоногая, к примеру.
Во, все. Подключил диск с вендой, скопировал библиотеки от вендового тулчейна. Так больше не ругается. Теперь иначе:
Код:
lester@sex-machine ~/hwd/AVR $ avr-gcc -Os -mmcu=attiny13 avr_test.c In file included from avr_test.c:2:0: /usr/avr/include/util/delay.h:90:3: warning: #warning "F_CPU not defined for <util/delay.h>" [-Wcpp] # warning "F_CPU not defined for <util/delay.h>" ^ avr_test.c:4:0: warning: "F_CPU" redefined [enabled by default] #define F_CPU 9600000UL ^ In file included from avr_test.c:2:0: /usr/avr/include/util/delay.h:91:0: note: this is the location of the previous definition # define F_CPU 1000000UL ^
NStorm, те самые, которые заставляют выбирать странные решения. Представьте, что вы написали библиотеку - придется еще к ней в заголовочный файл вписывать частоту. А потом в один прекрасный момент забудете и будет у вас одна периферия считать что частота камня 1 МГц, а вторая - что 8 МГц.
COKPOWEHEU, а ничего, что именно в ардуине F_CPU вручную вписывать не надо, оно ключиком -D задается исходя из описалова в boards.txt? Я в курсе, что задавать это лучше в Makefile, только у ТС явно было уже задано в файле, исходя из ошибки.
COKPOWEHEU, а ничего, что именно в ардуине F_CPU вручную вписывать не надо, оно ключиком -D задается исходя из описалова в boards.txt?
И кто "скажет" make'у, что нужные дефайны требуется брать из некоего файла? Более идеальным вариантом было бы Makefile генерировать cmake'ом, но для мелкоты и так сойдет.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
И кто "скажет" make'у, что нужные дефайны требуется брать из некоего файла?
make по умолчанию выполняет скрипт из makefile, ему ничего для этого говорить не надо. Или вы о чем спрашивали-то? Кто в makefile будет частоту прописывать? Программист, очевидно. Так же как прочие ключи компиляции, имя камня и список исходников.
Система сборки IDE генерит Makefile на основе boards.txt
В общем, все не как у людей!
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Сейчас этот форум просматривают: Bing [Bot], Starichok51 и гости: 26
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения