Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

CodeVisionAVR 2.60

Непрочитано 23.01.2014, 21:04  
seanta
Частый гость
 
Регистрация: 24.03.2008
Сообщений: 38
Сказал спасибо: 4,141
Сказали Спасибо 39 раз(а) в 13 сообщении(ях)
seanta на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

Уважаемые! Так что насчет 2.60 или старше, есть у кого пролеченные?
Реклама:
seanta вне форума  
Непрочитано 24.01.2014, 09:41  
Godzilla82
Почётный гражданин KAZUS.RUN
 
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: CodeVisionAVR 2.60

Сообщение от Godzilla82 Посмотреть сообщение
volatile принудительно заставляет компилятор хранить переменную в памяти.
Сообщение от _Артём_ Посмотреть сообщение
Чушь порете...
Сообщение от _Артём_ Посмотреть сообщение
Это вот (из мануала на CodeVision):
Цитата:
Variables declared as volatile will not be allocated to registers.
- просто особенности CV (а может и не только CV), не суть.
Вы уже сами себе противоречите. Или всё-таки первый раз сами чушь написали?
Godzilla82 вне форума  
Непрочитано 24.01.2014, 10:46  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

Сообщение от Godzilla82 Посмотреть сообщение
Вы уже сами себе противоречите.
В чём же я себе противоречу?
Сообщение от Godzilla82 Посмотреть сообщение
Или всё-таки первый раз сами чушь написали?
Это вы про то где CV хранит volatile-переменные? Так это вопрос второстепенный.
_Артём_ вне форума  
Непрочитано 24.01.2014, 12:00  
SasaVitebsk
Гражданин KAZUS.RUN
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

Сообщение от Godzilla82 Посмотреть сообщение
Не совсем так. При наличии свободных регистров, он в них помещает глобальные переменные, сколько поместятся.
Докажите. Приведите пример любой сложности. Пусть будет даже 4 переменных, прерывание, две процедуры.
От вас требуется:
1. Исходник.
2. Ассемблерный файл.
3. Map файл.
SasaVitebsk вне форума  
Непрочитано 24.01.2014, 14:46  
Godzilla82
Почётный гражданин KAZUS.RUN
 
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: CodeVisionAVR 2.60

Сообщение от SasaVitebsk Посмотреть сообщение
Докажите.
PHP код:
#include ‹mega16.h›

unsigned char a;
unsigned char b;
unsigned char c;
unsigned char d;

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
a++;
b--;
c=a+b;
d ^= 1;
}

void main(void)
{
DDRA    = 0b00001111;
PORTA   = 0b00000000;

DDRB    = 0b00000000;
PORTB   = 0b00000000;

DDRC    = 0b00000000;
PORTC   = 0b00000000;

DDRD    = 0b00000000;
PORTD   = 0b00000000;

// Timer Period: 0,016 ms
TCCR0   = (0‹‹WGM00) | (0‹‹COM01) | (0‹‹COM00) | (0‹‹WGM01) | (0‹‹CS02) | (0‹‹CS01) | (1‹‹CS00);
TCNT0   = 0x00;
OCR0    = 0x00;

TIMSK   = (1‹‹TOIE0);

ACSR    = (1‹‹ACD) | (0‹‹ACBG) | (0‹‹ACO) | (0‹‹ACI) | (0‹‹ACIE) | (0‹‹ACIC) | (0‹‹ACIS1) | (0‹‹ACIS0);

#asm("sei")

begin:
if(a == 100)    PINA |= 1;
if(b == 200)    PINA |= 2;
if(c == 75)     PINA |= 4;
if(d == 1)      PINA |= 8;
goto begin;
} 
Код:
	.DEF _a=R5
	.DEF _b=R4
	.DEF _c=R7
	.DEF _d=R6

_timer0_ovf_isr:
	ST   -Y,R30
	IN   R30,SREG
	ST   -Y,R30
;a++;
	INC  R5
;b--;
	DEC  R4
;c=a+b;
	MOV  R30,R4
	ADD  R30,R5
	MOV  R7,R30
;d ^= 1;
	LDI  R30,LOW(1)
	EOR  R6,R30

	LD   R30,Y+
	OUT  SREG,R30
	LD   R30,Y+
	RETI
Код:
RAM Allocation [bytes]
Variable                                                          Address   Size
--------------------------------------------------------------------------------

EEPROM Allocation [bytes]
Variable                                                          Address   Size
--------------------------------------------------------------------------------

Register Allocation
Variable                                                          Register  Size
--------------------------------------------------------------------------------
a                                                                 R5           1
b                                                                 R4           1
c                                                                 R7           1
d                                                                 R6           1

FLASH Allocation [words]
Function                                                          Address   Size
--------------------------------------------------------------------------------
timer0_ovf_isr                                                    0x00048     14
Вложения:
Тип файла: zip Example.zip (4.7 Кб, 26 просмотров)
Godzilla82 вне форума  
Непрочитано 24.01.2014, 17:16  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

Сообщение от Godzilla82 Посмотреть сообщение
[PHP]
#include ‹mega16.h›

unsigned char a;
unsigned char b;
unsigned char c;
unsigned char d;

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
a++;
b--;
c=a+b;
d ^= 1;
}
[/CODE]
В проекте оптимизация включена? Если включена, то какой уровень?
_Артём_ вне форума  
Непрочитано 24.01.2014, 17:33  
Арктур
Почётный гражданин KAZUS.RUN
 
Аватар для Арктур
 
Регистрация: 29.10.2012
Сообщений: 2,930
Сказал спасибо: 7
Сказали Спасибо 3,471 раз(а) в 1,771 сообщении(ях)
Арктур на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

Не просто оптимизация !

Цитата:
Собираешься размер сравнивать, так и настраивай на оптимизацию по размеру. Только у CV видел хитрые приемы оптимизации, когда три команды в подпрограмму выделяются, и вместо них один call добавляется. Ну и ret к тем трем командам. Так 2 байта экономят, а то что код в два раза медленней стал там не никто не волнуется. Ни IAR, ни GCC такой извращенной оптимизации не имеют. Да это уже и не оптимизация, а скорее метод сжатия без потерь, архив в своем роде. RLE по сути.
http://forum.ixbt.com/post.cgi?id=print:48:2550&page=5
Арктур вне форума  
Непрочитано 24.01.2014, 17:53  
SasaVitebsk
Гражданин KAZUS.RUN
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

Арктур, сделайте пожалуйста переменные unsigned int. И одну переменную "a" сделайте long long int. И скиньте пожалуйста то же самое, если вас не затруднит

В данный момент получается что реальность не согласуется с их же документацией.
SasaVitebsk вне форума  
Непрочитано 24.01.2014, 18:15  
Арктур
Почётный гражданин KAZUS.RUN
 
Аватар для Арктур
 
Регистрация: 29.10.2012
Сообщений: 2,930
Сказал спасибо: 7
Сказали Спасибо 3,471 раз(а) в 1,771 сообщении(ях)
Арктур на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

long long int версия CV не поддерживает. Сделал long int.

Код:
_timer0_ovf_isr:
	ST   -Y,R22
	ST   -Y,R23
	ST   -Y,R26
	ST   -Y,R27
	ST   -Y,R30
	ST   -Y,R31
	IN   R30,SREG
	ST   -Y,R30
a++;
	LDI  R26,LOW(_a)
	LDI  R27,HIGH(_a)
	CALL __GETD1P_INC
	__SUBD1N -1
	CALL __PUTDP1_DEC
b--;
	MOVW R30,R4
	SBIW R30,1
	MOVW R4,R30
c=a+b;
	MOVW R30,R4
	LDS  R26,_a
	LDS  R27,_a+1
	ADD  R30,R26
	ADC  R31,R27
	MOVW R6,R30
d ^= 1;
	LDI  R30,LOW(1)
	EOR  R8,R30

	LD   R30,Y+
	OUT  SREG,R30
	LD   R31,Y+
	LD   R30,Y+
	LD   R27,Y+
	LD   R26,Y+
	LD   R23,Y+
	LD   R22,Y+
	RETI

-----------------------

	.MACRO __SUBD1N
	SUBI R30,LOW(@0)
	SBCI R31,HIGH(@0)
	SBCI R22,BYTE3(@0)
	SBCI R23,BYTE4(@0)

__GETD1P_INC:
	LD   R30,X+
	LD   R31,X+
	LD   R22,X+
	LD   R23,X+
	RET

__PUTDP1_DEC:
	ST   -X,R23
	ST   -X,R22
	ST   -X,R31
	ST   -X,R30
	RET
Код:
RAM Allocation
Variable                                  Address   Size
--------------------------------------------------------
a                                           0x0160       4

EEPROM Allocation
Variable                                  Address   Size
--------------------------------------------------------

Register Allocation
Variable                                  Register  Size
--------------------------------------------------------
b                                           R4,R5        2
c                                           R6,R7        2
d                                           R8,R9        2

Последний раз редактировалось Арктур; 24.01.2014 в 18:31.
Арктур вне форума  
Непрочитано 24.01.2014, 18:42  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: CodeVisionAVR 2.60

Сообщение от nahimovv Посмотреть сообщение
А что, в CV ещё и оптимизация есть?
Ну вы это - пользователей CV за людей-то хоть считаете? Нельзя же так резко, имхо...

Сообщение от nahimovv Посмотреть сообщение
Тогда интересно, а как в CV обстоят дела с code reordering?
Пользователи CV могут доказать, что code reordering сделан в CV лучше всех, но нам не дано понять их доказательств...
_Артём_ вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CodeVisionAVR selevo Embedd С 11 26.02.2016 22:16
SD и CodeVisionAvr 2.04.4a sersne Микроконтроллеры, АЦП, память и т.д 29 24.03.2010 18:39
CodeVisionAVR V2.03.2 dimonbest Микроконтроллеры, АЦП, память и т.д 253 29.09.2009 22:37
New CodeVisionAVR 1.25.8 dimonbest Микроконтроллеры, АЦП, память и т.д 15 07.02.2008 12:56
Help CodeVisionAVR Serg79 Микроконтроллеры, АЦП, память и т.д 3 15.12.2005 23:32


Часовой пояс GMT +4, время: 06:45.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.