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

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

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

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

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

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

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 07.11.2015, 02:31  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Минимальный проект на ATMega48 занял 100,6% памяти

Понятия не имею.
Заявлено 300000 циклов.
Реклама:
omercury вне форума  
Непрочитано 07.11.2015, 14:16  
Raptor1
Прописка
 
Регистрация: 18.01.2006
Сообщений: 268
Сказал спасибо: 81
Сказали Спасибо 476 раз(а) в 127 сообщении(ях)
Raptor1 на пути к лучшему
По умолчанию Re: Минимальный проект на ATMega48 занял 100,6% памяти

Сообщение от STM32F0 Посмотреть сообщение
Чушь! АСМ никак не заменяет чтение даташита. Так что АСМ никак не улучшает понимаемость происходящего в проце.

А причём здесь понимаемость к настройкам компилятора или линкера? У меня тоже месяц назад такое было, глюкнула студия и получил зашкал памяти. Ну и что?


Ещё раз, для понимания железа АСМ не нужен! Если у меня на F050 крутится хардварно семисегментник и хардварно крутится с десяток 18В20, то наверное я железо знаю? Что такое хардварно нужно объяснять?
Я вообще там где можно на С++ пишу, там где компилятор не поддерживает С++ style on C. На ARM7, BlackFin и др.
Raptor1 вне форума  
Непрочитано 07.11.2015, 15:18  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Минимальный проект на ATMega48 занял 100,6% памяти

Сообщение от omercury Посмотреть сообщение
И да, запись в PINx единичек инвертирует порт. Тоже одна команда ассемблера, но требуется загрузка регистра
Угу!
Цитата:
Toggling the Pin
Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of DDRxn.
Note that the SBI instruction can be used to toggle one single bit in a port.
Сообщение от omercury Посмотреть сообщение
Заявлено 300000 циклов.
Проехали. В СТМ8 можно одной командой одно и то же писать в ЕЕПРОМ сколько угодно, стирания то нет, только запись. Чтобы стереть нужно ещё и нуль записать.
STM32F0 вне форума  
Непрочитано 07.11.2015, 22:00  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Минимальный проект на ATMega48 занял 100,6% памяти

Сообщение от STM32F0 Посмотреть сообщение
Угу!
SBI пишет один бит.
Сообщение от STM32F0 Посмотреть сообщение
Чтобы стереть нужно ещё и нуль записать.
Я думал FF...

Понятно к чему это - перезаряда ячейки практически нет, поэтому и деградация минимальна. Скорей всего так и есть, хотя в тепличных условиях количество циклов перезаписи разными уровнями исчисляется миллионами.
omercury вне форума  
Непрочитано 08.11.2015, 23:53  
makakus
Почётный гражданин KAZUS.RU
 
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
makakus на пути к лучшему
По умолчанию Re: Минимальный проект на ATMega48 занял 100,6% памяти

О! да тут меряются!

Сообщение от oleg110592 Посмотреть сообщение
GCC AVR 4.9.2, размер получился 140 байт, памяти 0 байт,
Сообщение от Easyrider83 Посмотреть сообщение
STM8: 165 байт
добавил с программе из своего поста №11 запись в еепром + мелкие исправления. 48 байт.

AVRstudio 4,19,0,730
[.cseg] 0x000000 0x000048 48 0 48 4096 1.2%


Код:
.equ FCLK = 8000000 ; clock freq.
.equ TOCR = 1000 ; flash period 1000 ms
.equ NCNT1 = 256 ; timer prescaler

.def tmp1 = r16
.def tmp2 = r17

.cseg		;CODE segment
.org 0
	rjmp start

.org OVF1addr
	out	eedr,tmp2
	inc	tmp2
	sbi EECR, EEMPE ; start EEPROM write
	sbi EECR, EEPE

start:	
	clr	tmp2
	out	EEARL,tmp2

	ldi tmp1,(1‹‹COM1A0)
	sts TCCR1A,tmp1

	ldi tmp1,(1‹‹WGM13)|(1‹‹WGM12)|(1‹‹CS12)
	sts TCCR1B,tmp1

	ldi tmp1,(1‹‹TOIE1)
	sts TIMSK1,tmp1

	ldi tmp1, high(FCLK*1000/(TOCR*2*NCNT1)-1)
	sts ICR1h,tmp1
	ldi tmp1, low(FCLK*1000/(TOCR*2*NCNT1)-1)
	sts ICR1l,tmp1

	sei
	rjmp pc
makakus вне форума  
Непрочитано 09.11.2015, 08:44  
oleg110592
Гражданин KAZUS.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Минимальный проект на ATMega48 занял 100,6% памяти

Похоже причина разрастания объема найдена, случайно вчера наткнулся:
Цитата:
Например, в WinAVR есть занятная библиотечная функция __delay. С какого то бодуна туда впендюрили плавучку в аргумент. Спору нет - задержку выдает точно. А ежели забыться и заюзать эту байду с переменной, а не с константой, вычисляемой при компиляции, в код так весело и элегантненько добавится плавучки 4 кб и 256 байт RAM для "конверсии".
Сейчас попробовал:
Код:
uint16_t a;

int main(void)
{
	DDRB |= 0x01;
    while(1)
	{
		PORTB ^= (1‹‹0);
		a++;
		_delay_ms(a);
		eeprom_write_byte((uint8_t*)0,0x55); 
	}
    return 0;
}
"свежий" GCC AVR выдал:
Цитата:
delay.h:163:2: error: __builtin_avr_delay_cycles expects a compile time integer constant __builtin_avr_delay_cycles(__ticks_dc);
"подключил" delay.h от WinAVR 2010 (компилятор остался GCC AVR 4.9.2), ошибок нет, действительно подросло:
Код:
Device: atmega48

Program:     928 bytes (22.7% Full)
(.text + .data + .bootloader)

Data:          2 bytes (0.4% Full)
(.data + .bss + .noinit)

Последний раз редактировалось oleg110592; 09.11.2015 в 09:03.
oleg110592 вне форума  
Непрочитано 20.11.2015, 16:21  
AlexPi
Прописка
 
Регистрация: 14.09.2010
Сообщений: 105
Сказал спасибо: 9
Сказали Спасибо 15 раз(а) в 11 сообщении(ях)
AlexPi на пути к лучшему
По умолчанию Re: Минимальный проект на ATMega48 занял 100,6% памяти

Добрый день!
Столкнулся с подобной проблемой, что и автор темы, поэтому решил новой темы не создавать, а спросить здесь.
Суть такова:
Понадобился мне для одной задачи тип long long (int64_t).
Создал min проект

#include ‹avr\io.h›
#include ‹stdio.h›
#include ‹util\delay.h›
#include ‹math.h›

volatile int64_t Var1 = 100;

int main (void)
{
Var1 =Var1*2/10+300-255;

while (1) {};
return 0;
}

В результате компилятор выдал:

Program: 4814 bytes (29.4% Full)
(.text + .data + .bootloader)

Data: 264 bytes (25.8% Full)
(.data + .bss + .noinit)

Вопрос в следующем, это у всех так или я чего то не так делаю?
Оптимизация выбрана -Os.
Пробовал тоже самое в IAR код получается раз в 5ть короче.
AlexPi вне форума  
Непрочитано 20.11.2015, 16:52  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Минимальный проект на ATMega48 занял 100,6% памяти

А что удивляет? Для меги int32_t уже тяжеловато, а вы ему int64_t подсовываете. Смиритесь!
STM32F0 вне форума  
Непрочитано 20.11.2015, 17:15  
AlexPi
Прописка
 
Регистрация: 14.09.2010
Сообщений: 105
Сказал спасибо: 9
Сказали Спасибо 15 раз(а) в 11 сообщении(ях)
AlexPi на пути к лучшему
По умолчанию Re: Минимальный проект на ATMega48 занял 100,6% памяти

Сообщение от STM32F0 Посмотреть сообщение
А что удивляет? Для меги int32_t уже тяжеловато, а вы ему int64_t подсовываете. Смиритесь!
Может быть и смирился если бы IAR не выдавал всего 808 байт против 4814 в GCC. Просто не могу поверить что GCC на столько хуже работает с числами. Возможно кто-то знает какие-то тонкости, настройки, что бы исправить ситуацию.
AlexPi вне форума  
Непрочитано 20.11.2015, 17:59  
Ar-Gen-Tum
Почётный гражданин KAZUS.RU
 
Регистрация: 19.10.2010
Сообщений: 1,752
Сказал спасибо: 158
Сказали Спасибо 640 раз(а) в 364 сообщении(ях)
Ar-Gen-Tum на пути к лучшему
По умолчанию Re: Минимальный проект на ATMega48 занял 100,6% памяти

Сообщение от AlexPi Посмотреть сообщение
Может быть и смирился если бы IAR не выдавал всего 808 байт против 4814 в GCC. Просто не могу поверить что GCC на столько хуже работает с числами. Возможно кто-то знает какие-то тонкости, настройки, что бы исправить ситуацию.
Скомпилируйте с ключом -S в ассемблерный текст и посмотрите.
Может IAR вычислил выражение еще на этапе компиляции, проигнорировав ключ volatile .

Потестил пример на Arduino IDE
Пустой скетч ~3900 байт .
Скетч с примером (объявление переменной и вычисление переменной в цикле) =4502 байт .
Доп. код ~600 байт .
Добавил еще одну переменную
volatile long long Var2 = 200;
и ее вычисление по типу первой. После компиляции 4584 байта. В + к предыдущему 82 байта.
Т.е. ~600 байт процедура работы с длинными целыми и 82 байта собственно на выражение.

Последний раз редактировалось Ar-Gen-Tum; 20.11.2015 в 20:14.
Ar-Gen-Tum вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа вычисляющая CRC32 по имеющемуся хексу для всей памяти контроллера, вносит изменения в хекс и проект DL36 Микроконтроллеры, АЦП, память и т.д 0 08.02.2010 09:58


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot