roboforum.ru

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

Магический кристалл

Re: Магический кристалл

yak-40 » 13 мар 2010, 00:07

Мигание светодиодом для CVAVR Проверил, работает.
Код: Выделить всёРазвернуть
#include <mega8.h>
#include <delay.h>
void main(void)

  DDRB=0b00000001;
  while(1)
    {
       PORTB.0=1;   
       delay_ms(500);
       PORTB.0=0;   
       delay_ms(500);       
    }
}

Re: Магический кристалл

=DeaD= » 13 мар 2010, 00:08

2GrayHunter: Не работает - может пишет чего? Может вы WinAVR не поставили для AVR Studio, или тип проекта указали asm, а не gcc.

Re: Магический кристалл

Vovan » 13 мар 2010, 01:03

Вот блин! а я и не посмотрел, что си уже вовсю... написал ШИМ на асм, ну походу опоздал...

Re: Магический кристалл

GrayHunter » 13 мар 2010, 11:20

Всё ровно выкладывай - вдруг пригодится.
Кстати, читал в каком-то из учебников, что в Си можно Асм вставлять - неужели прям целые/большие коды?

P.S.- спасибо за примеры с миганием, сегодня вечером засяду конвертировать Асм в Си (сейчас ухожу в подмосковные пещеры - Сьяны) :)

Re: Магический кристалл

Vovan » 13 мар 2010, 22:07

Пожалуй я пока воздержусь код выкладывать, вдруг своим вмешательством всё испорчу...
Кроме того, т.к. сам являюсь начинающим и изучающим си - не перестаю удивляться - насколько здесь (в си) всё выровнено (если можно так выразиться)...

Re: Магический кристалл

GrayHunter » 14 мар 2010, 18:26

Пытаюсь скомпилировать в Студии (AVRStudio) этот код:
Код: Выделить всёРазвернуть
#include <C:\WinAVR\mega8.h>
#include <C:\WinAVR\delay.h>
void main(void)

  DDRB=0b00000001;
  while(1)
    {
       PORTB.0=1;   
       delay_ms(500);
       PORTB.0=0;   
       delay_ms(500);       
    }
}

Файлы mega8.h и delay.h взяты от проги CodeVisionAVR C Compiler.
Не работает, пишет вот что:
Build started 14.3.2010 at 17:36:08
avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT 2.o -MF dep/2.o.d -c ../2.c
In file included from ../2.c:1:
C:\WinAVR\mega8.h:9: warning: ignoring #pragma used
C:\WinAVR\mega8.h:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'TWBR'
C:\WinAVR\mega8.h:11: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'TWSR'
C:\WinAVR\mega8.h:12: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'TWAR'
...
C:\WinAVR\mega8.h:77: warning: ignoring #pragma used
In file included from ../2.c:1:
C:\WinAVR\mega8.h:106:2: error: invalid preprocessing directive #asm
C:\WinAVR\mega8.h:109: error: expected identifier or '(' before '.' token
C:\WinAVR\mega8.h:118:2: error: invalid preprocessing directive #endasm
In file included from ../2.c:2:
C:\WinAVR\delay.h:7: warning: ignoring #pragma used
C:\WinAVR\delay.h:12: warning: ignoring #pragma used
../2.c:3: warning: return type of 'main' is not 'int'
../2.c: In function 'main':
../2.c:5: error: 'DDRB' undeclared (first use in this function)
../2.c:5: error: (Each undeclared identifier is reported only once
../2.c:5: error: for each function it appears in.)
../2.c:8: error: 'PORTB' undeclared (first use in this function)
../2.c:8: error: expected ';' before numeric constant
../2.c:10: error: expected ';' before numeric constant
make: *** [2.o] Error 1
Build failed with 76 errors and 5 warnings...


Что я неправильно делаю?

P.S.- последнюю WinAVR поставил до компиляции и перезагрузился. Проект вроде С (AVR GCC).

Re: Магический кристалл

yak-40 » 14 мар 2010, 18:54

Ну ты уж определись в чём писАть будешь :)
Потому как в CVAVR подключается файл так: #include <mega8.h>
а в AVRStudio так: #include "mega8.h"
Чувствуешь разницу? :wink:

Re: Магический кристалл

GrayHunter » 14 мар 2010, 19:23

Я бы предпочёл писать в Студии.

Сделал так:
Код: Выделить всёРазвернуть
#include "mega8.h"
#include "delay.h"

Не работает - пишет:
../2.c:1:19: error: mega8.h: No such file or directory
../2.c:2:19: error: delay.h: No such file or directory
...


Сделал так:
Код: Выделить всёРазвернуть
#include "C:\WinAVR\mega8.h"
#include "C:\WinAVR\delay.h"

Не работает - пишет:
avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT 2.o -MF dep/2.o.d -c ../2.c
In file included from ../2.c:1:
C:\WinAVR\mega8.h:9: warning: ignoring #pragma used
C:\WinAVR\mega8.h:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'TWBR'
C:\WinAVR\mega8.h:11: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'TWSR'
...
C:\WinAVR\mega8.h:77: warning: ignoring #pragma used
In file included from ../2.c:1:
C:\WinAVR\mega8.h:106:2: error: invalid preprocessing directive #asm
C:\WinAVR\mega8.h:109: error: expected identifier or '(' before '.' token
C:\WinAVR\mega8.h:118:2: error: invalid preprocessing directive #endasm
In file included from ../2.c:2:
C:\WinAVR\delay.h:7: warning: ignoring #pragma used
C:\WinAVR\delay.h:12: warning: ignoring #pragma used
../2.c:3: warning: return type of 'main' is not 'int'
../2.c: In function 'main':
../2.c:5: error: 'DDRB' undeclared (first use in this function)
../2.c:5: error: (Each undeclared identifier is reported only once
../2.c:5: error: for each function it appears in.)
../2.c:8: error: 'PORTB' undeclared (first use in this function)
../2.c:8: error: expected ';' before numeric constant
../2.c:10: error: expected ';' before numeric constant
make: *** [2.o] Error 1
Build failed with 76 errors and 5 warnings...


Значит проблема не в этом... тогда в чём?

Re: Магический кристалл

=DeaD= » 14 мар 2010, 19:25

Попробуйте снести нафиг всё и заново поставить AVR Studio и потом WinAVR

Re: Магический кристалл

Duhas » 14 мар 2010, 19:30

вот отчасти за что я не люблю Си ) вместо того чтобы думать о коде, думаешь как юзать либы и как ставить компилятор, как собирать проект... программист уже не кодит, а конструкторы собирает...

Re: Магический кристалл

GrayHunter » 14 мар 2010, 19:32

Мне кажется эта проблема не решится "пинанием колёс и протиранием стёкл", мне кажется, что проблема с заголовочным файлом... я взял файл из другой проги, а ведь в Студии должен быть свой, для Си, так? где тогда его искать?

Re: Магический кристалл

Duhas » 14 мар 2010, 19:40

блин а я думал об этом, ессно свои инклуды у винАВР

Re: Магический кристалл

GrayHunter » 14 мар 2010, 20:17

блин а я думал об этом, ессно свои инклуды у винАВР

где тогда его искать?
:pardon:

Добавлено спустя 23 минуты 36 секунд:
Пожалуйста,
выложите код, который можно скомпилить в Студии.

Либо, что менее желательно, чем первое, расскажите точную последовательность действий, чтобы скомпилить код в CodeVisionAVR C Compiler.

Re: Магический кристалл

yak-40 » 14 мар 2010, 21:03

GrayHunter писал(а):расскажите точную последовательность действий, чтобы скомпилить код в CodeVisionAVR C Compiler.

Открываешь CodeVisionAVR.
С помощью генератора начального кода создаёшь проект.
Копируешь код который я выкладывал выше в файл с расширением с.
Нажимаешь Shift+F9.
Получаешь HEX файл.
Пользуешься :)

Re: Магический кристалл

GrayHunter » 15 мар 2010, 02:01

Спасибо, разобрался. :)

Пара вопросов:
1) как в Си сделать подпрограмму (т.е. чтобы несколько функций было вместе) и вызывать её там, где нужно?
2) как на Си сделать "дыхание" светодиода?


Rambler\'s Top100 Mail.ru counter