Технический форум по робототехнике.
Kartush » 22 апр 2008, 09:04
Извиняюсь за глупый вопрос. Откуда удалить эти *.d файлы?
avr123.nm.ru » 22 апр 2008, 09:17
Kartush писал(а): Make файл делал через редактор, всё как в курсе. Что на этот раз?
Напишите какие параметры вам нужны - что указывать в мэйке - и приложите ваш исходник архивом.
Kartush » 22 апр 2008, 12:30
Хочу просто залить программу мигания светодиодом(с чего почти все начинают). В архиве исходник и Make файл, при котором пишется то сообщение.
Вложения
main.rar
(5.75 КиБ) Скачиваний: 69
avr123.nm.ru » 22 апр 2008, 14:02
Вот вам пока пример работающий test.rar со страницы -
http://avr123.nm.ru/04.htm - я там и проект для PROTEUS добавил. Всё работает.
И ваш пример 2.rar заработал когда я сделал новый мэйк файл.
Вложения
2.rar
(6.5 КиБ) Скачиваний: 97
test.rar
(10.15 КиБ) Скачиваний: 85
Kartush » 22 апр 2008, 15:58
Спасибо. Я нашёл ошибку в своём Make файле, в нём я неправильно указал файл исходника.
Теперь буду продвигаться дальше
avr123.nm.ru » 01 авг 2008, 12:22
Vooon » 02 авг 2008, 19:28
Что-то напоминает Kontrollerlab . Ссылку на оф-сайт бы.
LoLo » 22 дек 2008, 16:32
Доброго времени суток, всем! Взялся разбираться с AVR на AVRStudio (WinAVR) на си. Проблема такая. Необходимо матрицу 800 элементов (контстанты) объявить в памяти программ, чтобы они не занимали места в ОЗУ! Все перепробовал - бесполезно. После компиляции все 800 штук указаны в DATA. Объявляю как const - тоже самое!!! Хотя в книгах пишут, что если объявлено как const, то должны храниться в памяти программ. Что делать?
blindman » 22 дек 2008, 16:41
Код: Выделить всё • Развернуть #include <avr/pgmspace.h> char PROGMEM constants[5] = {'a', 'b', 'c', 'd', 'e'}; char get_constant(int idx) { return pgm_read_byte(constants + idx); }
Vooon » 22 дек 2008, 16:44
Читать доки к avr-gcc && avr-libc.
Код: Выделить всё • Развернуть #include <avr/pgmspace.h> const char PROGMEM my_array[] = {0, ...}; void main() { int my_array_index = 0; char my_value = pgm_read_byte(my_array + my_array_index); while(1); return 0; }
Добавлено спустя 1 минуту 24 секунды: blindman : опередил
LoLo » 22 дек 2008, 17:08
Vooon писал(а): Читать доки к avr-gcc && avr-libc.
Код: Выделить всё • Развернуть #include <avr/pgmspace.h> const char PROGMEM my_array[] = {0, ...}; void main() { int my_array_index = 0; char my_value = pgm_read_byte(my_array + my_array_index); while(1); return 0; }
Добавлено спустя 1 минуту 24 секунды: blindman : опередил
Спасибо. А если массив объявлен в одном файле, допустим matr.c
char PROGMEM matr[800] ={
0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x5f, 0x0, 0x0,
....и т.д....}
А мне этот массив надо использовать в другом файле, допустим в main.c.
Что надо написать в h файле (matr.h), чтоб потом его присоединить к
main.c
#include "matr.h"
Vooon » 22 дек 2008, 17:12
matr.h :
Код: Выделить всё • Развернуть /** * @brief: brief */ #ifndef MATR_H_ #define MATR_H_ 1 #include <avr/pgmspace.h> extern char PROGMEM matr[800]; #endif /* MATR_H_ */
Как-то так.
LoLo » 22 дек 2008, 17:23
Спасибо. Все получилось. Просто #include <avr/pgmspace.h> забыл написать
LoLo » 24 дек 2008, 10:25
Все в WinAVR.
Объявлена процедура void OutSymbol(char Symbol);
Вызов идет в другой процедуре типа такой:
Код: Выделить всё • Развернуть void Running_String(char Message[]) { unsigned int Number_Symbol; unsigned int Active_Symbol; Number_Symbol=strlen(Message); for(Active_Symbol=0; Active_Symbol<Number_Symbol; Active_Symbol++) { OutSymbol(Message[Active_Symbol]); ******************** ... } }
В основной - вызываю так: Running_String("Proverka");
Ругается (warning) на строчку со ********************
warning: array subscript has type 'char'
В чем дело?
Последний раз редактировалось
Vooon 24 дек 2008, 13:34, всего редактировалось 2 раз(а).
Причина: у нас есть тег [CODE] для листингов программ!!!
SSG » 24 дек 2008, 13:30
Попробуйте Number_Symbol и Active_Symbol описать как маленькие целые (unsigned char).