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

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

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

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

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

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

Коллекция глюков Здесь публикуются все известные глюки, баги микроконтроллеров, памяти, АЦП и т.д.

 
Опции темы
Непрочитано 26.12.2010, 18:40  
Ar-Gen-Tum
Почётный гражданин KAZUS.RU
 
Регистрация: 19.10.2010
Сообщений: 1,752
Сказал спасибо: 158
Сказали Спасибо 640 раз(а) в 364 сообщении(ях)
Ar-Gen-Tum на пути к лучшему
По умолчанию Re: Глюки WinAVR

Сообщение от AGAT0365 Посмотреть сообщение
Доброе время суток. На WinAvr пытаюсь создать програмку к меге8.Проблемы с переменными после оператора замкнутого цикла while(1),переменные при проверке на протеусе выдаёт черточки и пишет всегда 0. Пробовал менять оптимезацию,результата нет.Пробовал внаглую записывать число в любом виде всё равно 0.
Удобно просматривать файл [имя исходника].lss .
Много интересного можно узнать. Особенно при использовании оптимизации.
( Сам использую уровень 1 . Совсем без оптимизации плохо, большой размер. )
Реклама:
Ar-Gen-Tum вне форума  
Непрочитано 29.05.2011, 19:47  
KBH-I
Почётный гражданин KAZUS.RU
 
Аватар для KBH-I
 
Регистрация: 01.05.2009
Адрес: Коптево
Сообщений: 2,849
Сказал спасибо: 276
Сказали Спасибо 427 раз(а) в 274 сообщении(ях)
KBH-I на пути к лучшему
По умолчанию Re: Глюки WinAVR

В WinAvr главный цикл
Код:
  for (;;) {
    if (fADC4 == 1) {WarmCtrl(); fADC4 = 0;};	// ~1Hz
	if (fUSART == 2) {MsgHandler();};			// Обр-ка мессаги
  }
Компилится так:
Код:
344:      	if (fUSART == 2) {MsgHandler();};			// Обр-ка мессаги
+00000374:   919000BA    LDS       R25,0x00BA     Load direct from data space
+00000376:   918000BB    LDS       R24,0x00BB     Load direct from data space
343:          if (fADC4 == 1) {WarmCtrl(); fADC4 = 0;};	// ~1Hz
+00000378:   3081        CPI       R24,0x01       Compare with immediate
+00000379:   F409        BRNE      PC+0x02        Branch if not equal
+0000037A:   E080        LDI       R24,0x00       Load immediate
344:      	if (fUSART == 2) {MsgHandler();};			// Обр-ка мессаги
+0000037B:   3092        CPI       R25,0x02       Compare with immediate
+0000037C:   F7D9        BRNE      PC-0x04        Branch if not equal
+0000037D:   938000BB    STS       0x00BB,R24     Store direct to data space
+0000037F:   DF61        RCALL     PC-0x009E      Relative call subroutine
+00000380:   CFF3        RJMP      PC-0x000C      Relative jump
В результате чего не проверяются флаги fADC4 и fUSART.

Это нормально для С?
Или я опять что-то не так сделал?
Например, написал главный цикл? )))

Последний раз редактировалось KBH-I; 29.05.2011 в 19:52.
KBH-I вне форума  
Непрочитано 04.06.2011, 21:20  
KBH-I
Почётный гражданин KAZUS.RU
 
Аватар для KBH-I
 
Регистрация: 01.05.2009
Адрес: Коптево
Сообщений: 2,849
Сказал спасибо: 276
Сказали Спасибо 427 раз(а) в 274 сообщении(ях)
KBH-I на пути к лучшему
По умолчанию Re: Глюки WinAVR

Что, никого не интересуют глюки компиляторов?
KBH-I вне форума  
Непрочитано 05.06.2011, 13:29  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Глюки WinAVR

Почему - интересуют. Только их тут нет.
Не проверяется fADC4? А что тогда это:
Код:
LDS       R24,0x00BB
CPI       R24,0x01
Вот правда почему то нет вызова WarmCtrl. Это именно функция?
И хотелось бы взглянуть на объявления fADC4 и fUSART.

Последний раз редактировалось kison; 05.06.2011 в 16:24.
kison вне форума  
Непрочитано 05.06.2011, 19:42  
Ar-Gen-Tum
Почётный гражданин KAZUS.RU
 
Регистрация: 19.10.2010
Сообщений: 1,752
Сказал спасибо: 158
Сказали Спасибо 640 раз(а) в 364 сообщении(ях)
Ar-Gen-Tum на пути к лучшему
По умолчанию Re: Глюки WinAVR

Я в WinAVR глюков не замечал.
Есть "кажущиеся глюки" оптимизатора. С оптимизацией надо быть аккуратным.
А то заложенный алгоритм может "на фик полететь".
И не забывать объявлять переменные с volatile, когда нада.
Ar-Gen-Tum вне форума  
Непрочитано 05.06.2011, 22:31  
KBH-I
Почётный гражданин KAZUS.RU
 
Аватар для KBH-I
 
Регистрация: 01.05.2009
Адрес: Коптево
Сообщений: 2,849
Сказал спасибо: 276
Сказали Спасибо 427 раз(а) в 274 сообщении(ях)
KBH-I на пути к лучшему
По умолчанию Re: Глюки WinAVR

1. WarmCtrl() - пустая функция: объявлена, но тело пока пустое (не доделал). Поэтому её отсутствие в Асме абсолютно нормально.
2. объявления fADC4 и fUSART:
Код:
unsigned char
  fUSART = 0,	//0/1/2/3/4-Ничего/Приём/З-сОбр-ки/Обр-ка/Передача
  fADC4 = 0,	//З-сОбр-ки ADC4
3. Оптимизация -О0
4. Флаги fADC4 и fUSART таки не проверяются, потому что команда "BRNE PC-0x04", переходит не на "LDS R25,0x00BA" и "LDS R24,0x00BB", а почему-то на "CPI R24,0x01", т.к. 0х037С-0x0004=0х0378. Т.е. при fUSART ‹› 2 он входит в местный цикл, где сравнивает с константами не значения флагов в ОЗУ (где они совершенно нормально принимают требуемые значения, в т.ч. и fUSART = 2), а их копии в регистрах, естественно, устаревшие. Соответственно, из этого цикла он так и не выходит.
Поэтому я и написал в первом приближении, что не проверяются флаги.
Честно говоря, думал из листинга это видно совершенно ясно.
Неясно только, почему компилер делает именно так и как заставить его сравнивать эти флаги нормально.
KBH-I вне форума  
Непрочитано 06.06.2011, 04:44  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Глюки WinAVR

Сообщение от KBH-I Посмотреть сообщение
а их копии в регистрах, естественно, устаревшие. Соответственно, из этого цикла он так и не выходит.
Поэтому я и написал в первом приближении, что не проверяются флаги.
Честно говоря, думал из листинга это видно совершенно ясно.
Неясно только, почему компилер делает именно так и как заставить его сравнивать эти флаги нормально.
Заставить очень просто - прочитать наконец документацию. Весь инет завален такими "находками глюков"
Для ускорения процесса почитайте про квалификатор volatile
Ну и попробуйте объявлять флаги именно с его помощью.
Типа:
Код:
volatile unsigned char fADC4 = 0;
Вот это почитайте - http://www.pic24.ru/doku.php/osa/art...e_for_chainiks
Думаю после этого "глюк" пропадет и больше не вернется...

Последний раз редактировалось kison; 06.06.2011 в 04:46.
kison вне форума  
Сказали "Спасибо" kison
KBH-I (12.06.2011)
Непрочитано 06.06.2011, 23:02  
KBH-I
Почётный гражданин KAZUS.RU
 
Аватар для KBH-I
 
Регистрация: 01.05.2009
Адрес: Коптево
Сообщений: 2,849
Сказал спасибо: 276
Сказали Спасибо 427 раз(а) в 274 сообщении(ях)
KBH-I на пути к лучшему
По умолчанию Re: Глюки WinAVR

Действительно, помогло. Большое спасибо.
Сообщение от kison Посмотреть сообщение
...прочитать наконец документацию.
А где это?
"Программирование на языке С для AVR и PIC микроконтроллеров./ Сост. Ю.А.Шпак - К.:"МК-Пресс", 2006. - 400с., ил." годится?
Просто по WinAVR у меня больше ничего нет.
KBH-I вне форума  
Непрочитано 06.06.2011, 23:29  
Ar-Gen-Tum
Почётный гражданин KAZUS.RU
 
Регистрация: 19.10.2010
Сообщений: 1,752
Сказал спасибо: 158
Сказали Спасибо 640 раз(а) в 364 сообщении(ях)
Ar-Gen-Tum на пути к лучшему
По умолчанию Re: Глюки WinAVR

Сообщение от KBH-I Посмотреть сообщение
Действительно, помогло. Большое спасибо.

А где это?
"Программирование на языке С для AVR и PIC микроконтроллеров./ Сост. Ю.А.Шпак - К.:"МК-Пресс", 2006. - 400с., ил." годится?
Просто по WinAVR у меня больше ничего нет.
Самый лучший документ - это заголовочные файлы.
Ну, ... и справочник по С/С++ под рукой не будет лишним. (Его может заменить тырнет.)
Ar-Gen-Tum вне форума  
Непрочитано 07.06.2011, 01:16  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Глюки WinAVR

Сообщение от KBH-I Посмотреть сообщение
А где это?
Посмотрите куда ставили компилятор. Там есть каталог doc. Как ни странно в нем вся документация лежит.
kison вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подниму тему WinAVR vs IAR oleg110592 Микроконтроллеры, АЦП, память и т.д 5 24.10.2015 14:06
На WinAVR + AVR Studio c CVAVR Vetal-soft Embedd С 87 03.03.2013 20:31
AVRStudio + WinAVR не работают... alberio Микроконтроллеры, АЦП, память и т.д 15 18.10.2010 20:16
WinAVR не нравится символ '\' vovan_zh Микроконтроллеры, АЦП, память и т.д 10 10.09.2010 20:48
помогите начинающему по WinAVR umkamaks Микроконтроллеры, АЦП, память и т.д 4 05.05.2010 21:01


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


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