WinAVR - бесплатный и мощный компилятор Си и Си++

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: WinAVR - бесплатный и мощный компилятор Си и Си++

Сообщение Kartush » 22 апр 2008, 09:04

Извиняюсь за глупый вопрос. Откуда удалить эти *.d файлы?
Kartush
 
Сообщения: 47
Зарегистрирован: 26 мар 2008, 20:11
Откуда: Украина. Херсон.
ФИО: Дмитрий

Re: WinAVR - бесплатный и мощный компилятор Си и Си++

Сообщение avr123.nm.ru » 22 апр 2008, 09:17

Kartush писал(а):Make файл делал через редактор, всё как в курсе.
Что на этот раз?


Напишите какие параметры вам нужны - что указывать в мэйке - и приложите ваш исходник архивом.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: WinAVR - бесплатный и мощный компилятор Си и Си++

Сообщение Kartush » 22 апр 2008, 12:30

Хочу просто залить программу мигания светодиодом(с чего почти все начинают). В архиве исходник и Make файл, при котором пишется то сообщение.
Вложения
main.rar
(5.75 КиБ) Скачиваний: 69
Kartush
 
Сообщения: 47
Зарегистрирован: 26 мар 2008, 20:11
Откуда: Украина. Херсон.
ФИО: Дмитрий

Re: WinAVR - бесплатный и мощный компилятор Си и Си++

Сообщение 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
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: WinAVR - бесплатный и мощный компилятор Си и Си++

Сообщение Kartush » 22 апр 2008, 15:58

Спасибо. Я нашёл ошибку в своём Make файле, в нём я неправильно указал файл исходника.
Теперь буду продвигаться дальше :)
Kartush
 
Сообщения: 47
Зарегистрирован: 26 мар 2008, 20:11
Откуда: Украина. Херсон.
ФИО: Дмитрий

Re: WinAVR - бесплатный и мощный компилятор Си и Си++

Сообщение avr123.nm.ru » 01 авг 2008, 12:22

KamAVR оболочка с мастером кода для WinAVR
http://kazus.ru/forum/topic_12227-0-asc-0.html
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: WinAVR - бесплатный и мощный компилятор Си и Си++

Сообщение Vooon » 02 авг 2008, 19:28

Что-то напоминает Kontrollerlab.
Ссылку на оф-сайт бы.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

WinAVR - как разместить константы в память программ

Сообщение LoLo » 22 дек 2008, 16:32

Доброго времени суток, всем! Взялся разбираться с AVR на AVRStudio (WinAVR) на си.
Проблема такая. Необходимо матрицу 800 элементов (контстанты)
объявить в памяти программ, чтобы они не занимали места в ОЗУ!
Все перепробовал - бесполезно. После компиляции все 800 штук
указаны в DATA. Объявляю как const - тоже самое!!! Хотя в книгах пишут,
что если объявлено как const, то должны храниться в памяти программ.
Что делать?
LoLo
 
Сообщения: 5
Зарегистрирован: 22 дек 2008, 16:28

Re: Помогите разобраться-память программ в WinAVR

Сообщение 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);
}
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Помогите разобраться-память программ в WinAVR

Сообщение 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: опередил :)
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Помогите разобраться-память программ в WinAVR

Сообщение 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"
LoLo
 
Сообщения: 5
Зарегистрирован: 22 дек 2008, 16:28

Re: Помогите разобраться-память программ в WinAVR

Сообщение 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_ */


Как-то так.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Помогите разобраться-память программ в WinAVR

Сообщение LoLo » 22 дек 2008, 17:23

Спасибо. Все получилось.
Просто #include <avr/pgmspace.h> забыл написать
LoLo
 
Сообщения: 5
Зарегистрирован: 22 дек 2008, 16:28

WinAVR Help me

Сообщение 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] для листингов программ!!!
LoLo
 
Сообщения: 5
Зарегистрирован: 22 дек 2008, 16:28

Re: WinAVR Help me

Сообщение SSG » 24 дек 2008, 13:30

Попробуйте Number_Symbol и Active_Symbol описать как маленькие целые (unsigned char).
I live My life!
Аватара пользователя
SSG
 
Сообщения: 1058
Зарегистрирован: 15 янв 2007, 19:23
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК

Пред.След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17