roboforum.ru

Технический форум по робототехнике.

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

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

Kartush » 22 апр 2008, 09:04

Извиняюсь за глупый вопрос. Откуда удалить эти *.d файлы?

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

avr123.nm.ru » 22 апр 2008, 09:17

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


Напишите какие параметры вам нужны - что указывать в мэйке - и приложите ваш исходник архивом.

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

Kartush » 22 апр 2008, 12:30

Хочу просто залить программу мигания светодиодом(с чего почти все начинают). В архиве исходник и Make файл, при котором пишется то сообщение.
Вложения
main.rar
(5.75 КиБ) Скачиваний: 69

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

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

Kartush » 22 апр 2008, 15:58

Спасибо. Я нашёл ошибку в своём Make файле, в нём я неправильно указал файл исходника.
Теперь буду продвигаться дальше :)

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

avr123.nm.ru » 01 авг 2008, 12:22

KamAVR оболочка с мастером кода для WinAVR
http://kazus.ru/forum/topic_12227-0-asc-0.html

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

Vooon » 02 авг 2008, 19:28

Что-то напоминает Kontrollerlab.
Ссылку на оф-сайт бы.

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

LoLo » 22 дек 2008, 16:32

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

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);
}

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: опередил :)

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"

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_ */


Как-то так.

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

LoLo » 22 дек 2008, 17:23

Спасибо. Все получилось.
Просто #include <avr/pgmspace.h> забыл написать

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] для листингов программ!!!

Re: WinAVR Help me

SSG » 24 дек 2008, 13:30

Попробуйте Number_Symbol и Active_Symbol описать как маленькие целые (unsigned char).


Rambler\'s Top100 Mail.ru counter