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

Вторник, 22.08.2017
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Форум mega-avr.ucoz.ru » Вопросы начинающих » HELP
HELP
ErniДата: Пятница, 03.12.2010, 14:13 | Сообщение # 1
Заглянувший
Сообщений: 3
Репутация: 0
Город: Воронеж
Статус: Отсутствует
В CodeVision обьявляю глобальную переменную во время компеляции всё ок а когда нажимаю билдинг то вот
Warning: C:\cvavreval\Ïðîåêòû\lcd.c(30): global variable 'c' was declared, but not referenced

что делать ???

 
АвторДата: Пятница, 03.12.2010, 17:54 | Сообщение # 2
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Здравствуйте Александр! Вы мне код программы предоставьте, а я посмотрю, что у вас там не получается.


_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
ErniДата: Пятница, 03.12.2010, 18:03 | Сообщение # 3
Заглянувший
Сообщений: 3
Репутация: 0
Город: Воронеж
Статус: Отсутствует
Code
/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.6 Evaluation
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date : 03.12.2010
Author : Freeware, for evaluation and non-commercial use only
Company :
Comments:

Chip type : ATtiny2313V
Clock frequency : 4,000000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 32
*****************************************************/

#include <tiny2313.h>

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
eeprom unsigned char c[]="hello";
// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port A initialization
// Func2=In Func1=In Func0=In
// State2=P State1=P State0=P
PORTA=0x07;
DDRA=0x00;

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=P State2=0 State1=0 State0=0
PORTB=0x08;
DDRB=0xF7;

// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=P State5=P State4=P State3=P State2=P State1=P State0=P
PORTD=0x7F;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// Interrupt on any change on pins PCINT0-7: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Universal Serial Interface initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;

// LCD module initialization
lcd_init(16);

while (1)
{
// Place your code here
//здесь команда вывода
lcd-gotoxy(0,0);
lcd_putsf(c);
};
}


Сообщение отредактировал Erni - Пятница, 03.12.2010, 18:07
 
АвторДата: Пятница, 03.12.2010, 18:12 | Сообщение # 4
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Александр, у меня всё норм. и cvavr не возмущается. Может у вас чего с cvavr происходит!


_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
АвторДата: Пятница, 03.12.2010, 18:15 | Сообщение # 5
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Хотя нет, возмущается. Нужно подправить строчку lcd-gotoxy на lcd_gotoxy ( НИЖНЯЯ ЧЕРТА ), lcd_putsf на lcd_puts. Переменную нужно записать как указатель unsigned char *c="hello";, иначе с записью eeprom unsigned char *c="hello"; компилятор даёт ошибку, равнозначно как и при eeprom unsigned char c[]="hello";
А в чём собственно состоит задача?



_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
АвторДата: Пятница, 03.12.2010, 18:58 | Сообщение # 6
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Так ошибок нет
Code
#include <tiny2313.h>  
#include <lcd.h>  

#asm  
         .equ __lcd_port=0x18 ;PORTB  
#endasm  

//#pragma used+
//eeprom unsigned char *c="hello";  
// Declare your global variables here  
//eeprom unsigned char *c="hello";//="Hello";
unsigned char c[]="hello";

void main(void)  
{  
   
#pragma optsize-  
     CLKPR=0x80;  
     CLKPR=0x00;  
#ifdef _OPTIMIZE_SIZE_  
#pragma optsize+
#endif
   
     PORTA=0x07;  
     DDRA=0x00;  
   
     //PORTB=0x08; с этим портом делать ничего не надо
     //DDRB=0xF7;  к нему подключен LCD

     PORTD=0x7F;  
     DDRD=0x00;  

     lcd_init( 16 );
     lcd_clear( );
   
     lcd_gotoxy( 0,0 );
     lcd_puts( c );

while (1) { };

}
//#pragma used-

И так ошибки не будет, т.к. переменая объявлена как указатель unsigned char *c="hello";

Code

#include <tiny2313.h>   
#include <lcd.h>   

#asm   
          .equ __lcd_port=0x18 ;PORTB   
#endasm   

//#pragma used+  
//eeprom unsigned char *c="hello";   
// Declare your global variables here   
//eeprom unsigned char *c="hello";//="Hello";  
unsigned char *c="hello";  

void main(void)   
{   
     
#pragma optsize-   
      CLKPR=0x80;   
      CLKPR=0x00;   
#ifdef _OPTIMIZE_SIZE_   
#pragma optsize+  
#endif  
     
      PORTA=0x07;   
      DDRA=0x00;   
     
      //PORTB=0x08; с этим портом делать ничего не надо  
      //DDRB=0xF7;  к нему подключен LCD  

      PORTD=0x7F;   
      DDRD=0x00;   

      lcd_init( 16 );  
      lcd_clear( );  
     
      lcd_gotoxy( 0,0 );  
      lcd_puts( c );  

while (1) { };  

}  
//#pragma used-



_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
АвторДата: Пятница, 03.12.2010, 18:59 | Сообщение # 7
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Так есть ошибка. переменная объявлена как eeprom unsigned char c[]="hello";
Code
#include <tiny2313.h>  
#include <lcd.h>  

#asm  
         .equ __lcd_port=0x18 ;PORTB  
#endasm  

//#pragma used+
//eeprom unsigned char *c="hello";  
// Declare your global variables here  
//eeprom unsigned char *c="hello";//="Hello";
eeprom unsigned char c[]="hello";

void main(void)  
{  
   
#pragma optsize-  
     CLKPR=0x80;  
     CLKPR=0x00;  
#ifdef _OPTIMIZE_SIZE_  
#pragma optsize+
#endif
   
     PORTA=0x07;  
     DDRA=0x00;  
   
     //PORTB=0x08; с этим портом делать ничего не надо
     //DDRB=0xF7;  к нему подключен LCD

     PORTD=0x7F;  
     DDRD=0x00;  

     lcd_init( 16 );
     lcd_clear( );
   
     lcd_gotoxy( 0,0 );
     lcd_puts( c );

while (1) { };

}
//#pragma used-



_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
АвторДата: Пятница, 03.12.2010, 19:06 | Сообщение # 8
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Оказывается на модельке TINY2313 компилятор вообще не воспринимает такую запись: unsigned char *c="h";, а эту eeprom unsigned char *c="h"; "переваривает" свободно, если не записывать так: lcd_puts( c );
интересно wink



_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
ErniДата: Пятница, 03.12.2010, 19:55 | Сообщение # 9
Заглянувший
Сообщений: 3
Репутация: 0
Город: Воронеж
Статус: Отсутствует
Спасибо но в eeprom не записывается happy
 
ilvzДата: Пятница, 03.12.2010, 21:55 | Сообщение # 10
Любопытный
Сообщений: 143
Репутация: 2
Город: Almaty
Статус: Отсутствует
Вообще то само предупреждение обозначает не более чем - переменная объявлена но не используется. Это не страшно. Такое часто бывает при использовании подгружаемых библиотек. Тогда когда используется лишь их часть. И на не используемые функции тоже бывыает ругается аналогично.
 
АвторДата: Пятница, 03.12.2010, 23:12 | Сообщение # 11
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Илья, дело не предупреждениях компилятора, а в появлении сообщений об ошибках:
Если для TINY2313 компилятор такое объявление, как unsigned char *c="h"; определяет ошибкой, то если, например, для mega64, всё нормально. Я если честно, с тиньками не занимался, поэтому нюансов незнаю, я в основном с мегами. Чтоб компилятор не выдавал предупреждения об неиспользовании переменных или какой-либо функции, нужно всё это дело заключать в директиву USED:

Code

//
#include <.....h>

#pragma used+

unsigned char x;
char *str;

void func( void )
{

}

void main( void )
{

}

#pragma used-
//



_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
ilvzДата: Суббота, 04.12.2010, 00:48 | Сообщение # 12
Любопытный
Сообщений: 143
Репутация: 2
Город: Almaty
Статус: Отсутствует
Не знал. Спасибо! Я если честно прагмой вообще не пользуюсь. А эти сообщения использую для сбора и удаления мусора который остаётся в конце проектов. Когда несколько раз переделаешь. Много чего лишнего остаётся.
Сейчас попробовал вставить себе это определение и преключть в конфигурации проекта, чип c 2313 (работаю) на тини2313. У меня прошло без замечаний. CVAVR 2.04.4a
 
АвторДата: Суббота, 04.12.2010, 10:22 | Сообщение # 13
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
В просторах инета можно найти книжку в электронном виде по

Размер архива 100мб, около 600 страниц. Отличная книжка, тем более кто только начал изучать эту среду!



_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
Форум » Форум mega-avr.ucoz.ru » Вопросы начинающих » HELP
Страница 1 из 11
Поиск: