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

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

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

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

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

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

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

 
Опции темы

Глюки WinAVR

Непрочитано 26.12.2010, 18:40  
Ar-Gen-Tum
Почётный гражданин KAZUS.RUN
 
Регистрация: 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.RUN
 
Аватар для KBH-I
 
Регистрация: 01.05.2009
Адрес: Коптево
Сообщений: 2,753
Сказал спасибо: 268
Сказали Спасибо 398 раз(а) в 247 сообщении(ях)
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.RUN
 
Аватар для KBH-I
 
Регистрация: 01.05.2009
Адрес: Коптево
Сообщений: 2,753
Сказал спасибо: 268
Сказали Спасибо 398 раз(а) в 247 сообщении(ях)
KBH-I на пути к лучшему
По умолчанию Re: Глюки WinAVR

Что, никого не интересуют глюки компиляторов?
KBH-I вне форума  
Непрочитано 05.06.2011, 13:29  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
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.RUN
 
Регистрация: 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.RUN
 
Аватар для KBH-I
 
Регистрация: 01.05.2009
Адрес: Коптево
Сообщений: 2,753
Сказал спасибо: 268
Сказали Спасибо 398 раз(а) в 247 сообщении(ях)
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.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
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.RUN
 
Аватар для KBH-I
 
Регистрация: 01.05.2009
Адрес: Коптево
Сообщений: 2,753
Сказал спасибо: 268
Сказали Спасибо 398 раз(а) в 247 сообщении(ях)
KBH-I на пути к лучшему
По умолчанию Re: Глюки WinAVR

Действительно, помогло. Большое спасибо.
Сообщение от kison Посмотреть сообщение
...прочитать наконец документацию.
А где это?
"Программирование на языке С для AVR и PIC микроконтроллеров./ Сост. Ю.А.Шпак - К.:"МК-Пресс", 2006. - 400с., ил." годится?
Просто по WinAVR у меня больше ничего нет.
KBH-I вне форума  
Непрочитано 06.06.2011, 23:29  
Ar-Gen-Tum
Почётный гражданин KAZUS.RUN
 
Регистрация: 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.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
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, время: 06:50.


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