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

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

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

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

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

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

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

 
Опции темы
Непрочитано 18.12.2012, 18:33  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Обнуление при старте.

Есть такая задачка. В корзину положили три яблока. Два потом вынули. Сколько яблок осталось?
Вывод: не забывайте обнулять переменные.
Реклама:
Easyrider83 вне форума  
Непрочитано 18.12.2012, 20:12  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Обнуление при старте.

Сообщение от Easyrider83 Посмотреть сообщение
Есть такая задачка. В корзину положили три яблока. Два потом вынули. Сколько яблок осталось?
Вывод: не забывайте обнулять переменные.
При таких выводах у тебя неполное условие - не ясен статус корзины до старта задачи...
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 18.12.2012, 20:36  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Обнуление при старте.

Сообщение от dosikus Посмотреть сообщение
При таких выводах у тебя неполное условие - не ясен статус корзины до старта задачи...
Правильный ответ - одно или больше.
Easyrider83 вне форума  
Непрочитано 18.12.2012, 20:51  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,539
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: Обнуление при старте.

Сообщение от Easyrider83 Посмотреть сообщение
Правильный ответ - одно или больше.
А может корзина однобитная Правильный ответ: ХЗ.
realid вне форума  
Непрочитано 18.12.2012, 21:22  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Обнуление при старте.

Сообщение от Easyrider83 Посмотреть сообщение
Вывод: не забывайте обнулять переменные.
На АСМе переменных нет
ТС ясно сказал, в чем и на чем пишет
Читайте внимательней
niXto вне форума  
Непрочитано 18.12.2012, 21:57  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Обнуление при старте.

Сообщение от niXto Посмотреть сообщение
На АСМе переменных нет
ТС ясно сказал, в чем и на чем пишет
Читайте внимательней
Круто !!! Одни константы что ль?
Boba_spb вне форума  
Непрочитано 18.12.2012, 22:18  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Обнуление при старте.

Да это уважаемый niXto не в духе сегодня.
Easyrider83 вне форума  
Непрочитано 18.12.2012, 22:55  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Обнуление при старте.

Не в плане полемики, а просто выскажу свою точку зрения.
Когда-то много работал на ASM. Как то не приходило в голову инициализировать всё подряд. Инициализировалось, только то что нужно. При переходе на си, сразу и не понял, зачем полная инициализация. Пытался с ней бороться, типа там __no_init разные и так далее. Сейчас оцениваю это по другому.
Я по прежнему необходимое инициализирую сам и всегда. Даже если инициализирую это нулём. Для того, чтобы было видно, что данная переменная требует инициализации. Но никаких принудительных отключений инициализации не делаю. Пусть инициализирует. Я думаю, что это сделано, для полной повторяемости поведения изделия после старта. И я пришёл к выводу, что это действительно удобно. К сожалению, все мы совершаем ошибки. Порой это ошибки доступа. Например вчера пару раз менял переменную, не мог принять решение как с ней работать. В конце решил работать с ней как float. А объявление поменять забыл и она осталась как int16. Инициализировалась переменная из датафлэши, соответственно, я указал её адрес и длину как sizeof(float). В результате портилась соседняя переменная. В некоторых ошибках доступа, инициализация сама по себе не поможет, но поведение будет идентичным, от старта к старту. А в противном случае будет произвольным. Удобнее искать ошибку при повторяемом поведении.
SasaVitebsk вне форума  
Непрочитано 19.12.2012, 14:08  
MaxiMuz79
Гражданин KAZUS.RU
 
Аватар для MaxiMuz79
 
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 529
Сказал спасибо: 74
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
MaxiMuz79 на пути к лучшему
Сообщение Re: Обнуление при старте.

По поводу инициализации регистров , заметил за GCC компилятором небольшой косячек. В самом начале программы пишу:
Код:
void my_init (void) __attribute__ ((naked))  \
__attribute__ ((section (".init1")));
void my_init (void) // Код выполняется сразу после Сброса !!!
{	
	if ((MCUSR&(1‹‹BORF))&&!(MCUSR&(1‹‹PORF)))
	{// переход в спящий режим Power-Down
		MCUCR=(1‹‹PUD)|(1‹‹SE)|(1‹‹SM1);
		MCUSR=0;
		asm ("sleep");//sleep();
	}
и получаю код:
Код:
 0:	4d c0       	rjmp	.+154    	; 0x9c ‹my_init›

	if ((MCUSR&(1‹‹BORF))&&!(MCUSR&(1‹‹PORF)))
  9c:	04 b6       	in	r0, 0x34	; 52
  9e:	02 fe       	sbrs	r0, 2
  a0:	07 c0       	rjmp	.+14     	; 0xb0 ‹__stack+0x11›
  a2:	04 b6       	in	r0, 0x34	; 52
  a4:	00 fc       	sbrc	r0, 0
  a6:	04 c0       	rjmp	.+8      	; 0xb0 ‹__stack+0x11›
	{// переход в спящий режим Power-Down
		MCUCR=(1‹‹PUD)|(1‹‹SE)|(1‹‹SM1);
  a8:	80 e7       	ldi	r24, 0x70	; 112
  aa:	85 bf       	out	0x35, r24	; 53
		MCUSR=0;
  ac:	14 be       	out	0x34, r1	; 52
		asm ("sleep");//sleep();
  ae:	88 95       	sleep
Обратите внимание на команду out 0x34, r1 регистр r1 перед этим не обнуляется. Но это исправимо.
MaxiMuz79 вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы при установке kaarb Proteus 1 24.03.2012 17:21
Сглаживание при печати pascorp KiCAD 0 19.01.2011 22:55
Ошибка при моделировании Smirnov Kirill Proteus 3 28.12.2010 17:03
Проблемы при программировании vitecd Микроконтроллеры, АЦП, память и т.д 2 02.11.2010 22:59
При прогроаммировании фьюзов..... ogres57 Микроконтроллеры, АЦП, память и т.д 4 23.08.2009 12:08


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


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