Приветствую Вас, Гость! Регистрация RSS

Вторник, 22.08.2017
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Форум mega-avr.ucoz.ru » Языки программирования » AVR Studio 5 (что не так?)
AVR Studio 5
DavillДата: Понедельник, 13.02.2012, 01:56 | Сообщение # 1
Заглянувший
Сообщений: 3
Репутация: 0
Город:
Статус: Отсутствует
Пишу прогу на Си для ATmega16, опыт небольшой, в AVR Studio 5.
Вопрос: почему когда все процедуры в одном файле с main(), то компилируется без проблем:

Code
#include <stdlib.h>
#include <avr/io.h>
int main(void)
{
//...
}


Code
void twi_start(void) {
TWCR = (1<<TWEA)|(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
while (!(TWCR & (1<<TWINT))) {; }
}
...


НО стоит мне перенести функции в отддельный файл, начинаются проблемы:

Code
#include <stdlib.h>
#include <avr/io.h>
#include "myTWI.h"
int main(void)
{
...
}


В файле myTWI.h
Code
void twi_start(void);
...


В файле myTWI.c
Code
#include "myTWI.h"
void twi_start(void) {
TWCR = (1<<TWEA)|(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
while (!(TWCR & (1<<TWINT))) {; }
}
...


Error 1 'TWCR' undeclared (first use in this function)
Error 2 each undeclared identifier is reported only once for each function it appears in
Error 3 'TWEA' undeclared (first use in this function) ...и т.д.
 
АвторДата: Понедельник, 13.02.2012, 09:31 | Сообщение # 2
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
В файле myTWI.h добавь так:

Code
#include <myTWI.c>
void twi_start(void);  
  ...


В файле myTWI.c

Code
void twi_start(void) {  
TWCR = (1<<TWEA)|(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);  
while (!(TWCR & (1<<TWINT))) {; }  
  }  
  ...


**************************************************************************************

Можно сделать по-другому. В одном файле myTWI.c:

Code
void twi_start(void);

void twi_start(void) {  
TWCR = (1<<TWEA)|(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);  
while (!(TWCR & (1<<TWINT))) {; }  
  }  
  ...


В основном файле проекта:

Code
#include <stdlib.h>  
#include <avr/io.h>  
#include <myTWI.с>  
int main(void)  
  {  
       twi_start();
  }



_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
DavillДата: Понедельник, 13.02.2012, 11:25 | Сообщение # 3
Заглянувший
Сообщений: 3
Репутация: 0
Город:
Статус: Отсутствует
К сожалению у меня не получилось ни тем ни другим способом :-(
В книжках вроде читал, что #include<> для подключения стандартных библиотек компилятора,
а #include"" для подключения файлов, которые лежат в одной директории с проектом, или я не так понял?
Прикрепил файл с каркасом проекта, там библиотека LCD подключается обычным #include "lcd.h", но с ds1307_twi.h проблема!
Файл: LCD_Temperature.rar(18Kb)
 
АвторДата: Понедельник, 13.02.2012, 15:06 | Сообщение # 4
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Я с AVR Studio 5 не знаком, маленько почитал - содержит встроенный C/C++ компилятор, по сути должен работать. Есть одно но, по крайней мере я наблюдал в AVR Studio 4 - если проект не в каталоге avr studio 4 или 5, то будут проблемы.


_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
АвторДата: Понедельник, 13.02.2012, 15:12 | Сообщение # 5
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Quote
В книжках вроде читал, что #include<> для подключения стандартных библиотек компилятора,
а #include"" для подключения файлов, которые лежат в одной директории с проектом


Так и есть!



_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
АвторДата: Понедельник, 13.02.2012, 15:15 | Сообщение # 6
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Quote
но с ds1307_twi.h проблема!


По-пробуй по-шагам выяснить проблему, какие ошибки возникают и в каком файле, часте кода!



_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
DavillДата: Вторник, 14.02.2012, 11:04 | Сообщение # 7
Заглянувший
Сообщений: 3
Репутация: 0
Город:
Статус: Отсутствует
Решение нашлось, и все оказалось просто, нужно было включить #include <avr/io.h> в файл "myTWI.с", люди подсказали.
Странно конечно, я ведь включил уже этот заголовочный файл в основном модуле. Не логично.
Спасибо большое за советы, проблема решена.
 
АвторДата: Среда, 15.02.2012, 15:23 | Сообщение # 8
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Quote
Спасибо большое за советы, проблема решена.


Отлично! Поздравляю))



_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
Форум » Форум mega-avr.ucoz.ru » Языки программирования » AVR Studio 5 (что не так?)
Страница 1 из 11
Поиск: