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

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

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

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

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

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

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

 
Опции темы

Обнуление при старте.

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

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

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

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

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

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

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

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

Не в плане полемики, а просто выскажу свою точку зрения.
Когда-то много работал на ASM. Как то не приходило в голову инициализировать всё подряд. Инициализировалось, только то что нужно. При переходе на си, сразу и не понял, зачем полная инициализация. Пытался с ней бороться, типа там __no_init разные и так далее. Сейчас оцениваю это по другому.
Я по прежнему необходимое инициализирую сам и всегда. Даже если инициализирую это нулём. Для того, чтобы было видно, что данная переменная требует инициализации. Но никаких принудительных отключений инициализации не делаю. Пусть инициализирует. Я думаю, что это сделано, для полной повторяемости поведения изделия после старта. И я пришёл к выводу, что это действительно удобно. К сожалению, все мы совершаем ошибки. Порой это ошибки доступа. Например вчера пару раз менял переменную, не мог принять решение как с ней работать. В конце решил работать с ней как float. А объявление поменять забыл и она осталась как int16. Инициализировалась переменная из датафлэши, соответственно, я указал её адрес и длину как sizeof(float). В результате портилась соседняя переменная. В некоторых ошибках доступа, инициализация сама по себе не поможет, но поведение будет идентичным, от старта к старту. А в противном случае будет произвольным. Удобнее искать ошибку при повторяемом поведении.
SasaVitebsk вне форума  
Непрочитано 19.12.2012, 14:08  
MaxiMuz79
Гражданин KAZUS.RUN
 
Аватар для MaxiMuz79
 
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 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, время: 21:09.


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