Страница 1 из 2

Проблема с delay_ms CVAVR в AVR Studio

Добавлено: Ср июн 10, 2009 10:23:35
Dazler
Народ помогите разобраться вот с такой проблемой.
Есть очень простенькая прога моргать свет диодами
используя команду delay_ms, так вот когда при отладке
AVRStudio доходит до этой строки то наглухо зависает,
тоже самое происходит и с контроллером если в него залить
эту прошивку. Значения delay_ms пробовал от 1 до 10000 разницы нет.
Брал с инета похожие проекты других людей но скомпилированные
тоже в CodeVision все работает и AVRStudio при отладке не виснет на
строчке delay и контроллер мигает как надо.
Такое ощущение что моя CodeVision при компиляции не правильно
компилирует команду delay.
Пробовал разные версии 1.25.8, 2.03.09 проблема одна,
Может я при составлении проекта в CodeVision допускаю какую не будь ошибку?
Мучаюсь уже неделю, может кто в курсе проблемы.
Спасибо.

Добавлено: Ср июн 10, 2009 11:16:50
Yftul
Текст программы хотелось бы увидеть.

Добавлено: Ср июн 10, 2009 12:51:26
ARV
1. в WinAVR нет функции delay_ms(), есть _delay_ms()
2. чтобы эти функции работали корректно, обязательно при сборке проекта должен быть определен макрос F_CPU, т.е. константа тактовой частоты (иначе возникает warning, но ошибки не будет)
3. при какой-такой отладке у вас проблемы? в AVR Studio? так она просто дико тормозит - 1 миллисекунду может секунд 20 отсчитывать :) а _delay_ms(1000) при тактовой 8 МГц слабонервных может до обморока довести - бывает и по 3 минуты тикает...

Re: Проблема с delay_ms в WinAVR

Добавлено: Ср июн 10, 2009 13:01:28
ikarab
Dazler писал(а):Народ помогите разобраться вот с такой проблемой.
Все чмешалось - кони, люди ... то CVAVR, то WinAVR ...

Че у вас гличит то ?

Добавлено: Ср июн 10, 2009 17:05:53
Dazler
Вот текст:
#include <mega128>
#include <delay>
// Declare your global variables here
void main(void)
{
PORTD=0x00;
DDRD=0x07;
ACSR=0x80;
SFIOR=0x00;
while (1)
{
PORTD.2=1; // зеленый загорается
delay_ms(5000); // горит 5 секунд

PORTD.2=0; // Выключаем зеленый чтобы поморгать
delay_ms(500); //Ждем пол секунды
PORTD.2=1; // Моргаем

delay_ms(500); //Ждем пол секунды
PORTD.2=0; // Выключаем зеленый чтобы поморгать
delay_ms(500); //Ждем пол секунды
PORTD.2=1; // Моргаем
delay_ms(500); //Ждем
Как доходит до первого delay_ms все встает колом.
А что за макрос F_CPU и как им пользоваться?
Для ikarab ни чего не смешалось как я считаю что CVAVR не корректно компилирует
и из-за этого WinAVR виснет.
А насчет того что WinAVR тормозит не согласен я пробовал задержку в 1ms результат тот же,
у меня он просто виснет.

Добавлено: Ср июн 10, 2009 17:18:47
ikarab
Dazler писал(а): Для ikarab ни чего не смешалось

я считаю что CVAVR не корректно компилирует
и из-за этого WinAVR виснет.
Как связаны CVAVR и WinAVR ?????

Это два РАЗНЫХ САМОСТОЯТЕЛЬНЫХ самодостаточных компилятора !

Добавлено: Ср июн 10, 2009 17:25:17
Dazler
Вы наверно забыли что WinAVR ещё и отладчик, а
CD нет.

Добавлено: Ср июн 10, 2009 17:39:58
ikarab
Ужас какой то ! отлаживать прогу CVAVR в WinAVR !

СЛАВА радиоКоту ! и что я таки залогинился сюда - а тоб так ни когда и не узнал что такое бывает.

Есть ведь чудный VMLAB (4 Мб ) и мощнейший PROTEUS PROTEUS (70 Мб)

смешная АВР студия ( больше 100 Мб наверняка ) ...

Добавлено: Ср июн 10, 2009 17:58:41
ikarab
ARV писал(а):3. при какой-такой отладке у вас проблемы? в AVR Studio?
в WinAVR симулирует код из CVAVR ! я в шоке :shock: :cry:

Добавлено: Ср июн 10, 2009 18:18:38
Dazler
Уважаемый если вы не можете сказать по сути в чем может быть проблема то не чего здесь ФЛУД разводить.
Какие есть программы
я и сам знаю. Вот на любом форуме находятся такие которые по теме ни чего не знают только воду льют.

Добавлено: Ср июн 10, 2009 19:00:44
Dazler
Тфю ты чайник я.
Прошу прощения перепутал не WinAVR а
AVRStudio.
Я делал проект в CV а
пытаюсь отлаживать в
AVRStudio так вот она и виснет на строке delay.
Еще раз сори.

Добавлено: Ср июн 10, 2009 19:40:34
ARV
Dazler писал(а):пытаюсь отлаживать в AVRStudio
так вот она и виснет на строке delay
см. выше

Добавлено: Ср июн 10, 2009 19:52:19
ikarab
Dazler писал(а):AVRStudio так вот она и виснет на строке delay.
! PROTEUS порой прям в реал-тайме паузы строчит !

А вот CVAVR ну ОЧЕНЬ редко ошибается ! Особенно в таких пустяках как паузы.

Возможно причину ARV назвал, но мне кажется что в паузах все равно видно как счет циклов и микросекунд идет в леом окошке симуляции Студии. А если правда виснет, то возможно не стыковка форматов файлов отладочной информации .COF

Тогда я рекомендую попробовать CVAVR 1.25.9 если у вас CVAVR 2
по теме ни чего не знают
Дак вот и пытаюсь нахвататься. Выше уж поблагодарил радиоКота ! :lol:

Добавлено: Ср июн 10, 2009 19:58:58
Dazler
ARV писал(а):
Dazler писал(а):пытаюсь отлаживать в AVRStudio
так вот она и виснет на строке delay
см. выше
Так чего смотреть не понятно.
Еще раз может я не ясно излогаю,
Я создаю проект в CodeVision пишу в нем программу на Си
потом компилирую после компиляции получаю кучу файлов .с, .hex, .asm, и .cof так вот с помощю этого .cof я открываю свой проект в AVRStudio и запускаю его в пошаговом режиме когда шаг доходит до
строчки delay_ms эмулятор зависает т.е просто делает стоп.
Тоже происходит и с реальным контролером правда при разных значения
delay_ms диод либо сударожно мигает либо горит постоянно.
Вот в этом и проблема.

Добавлено: Ср июн 10, 2009 20:02:31
ikarab
Дак прицепить архив с вашим проектом.

я советую МАСТЕРОМ создавать код в CVAVR - если вы делали иначе то возможно в свойствах проекта у вас не тот МК указан...

Вообще гадать долго можно не имея проекта ...

Добавлено: Ср июн 10, 2009 20:03:55
Dazler
ikarab писал(а):
Dazler писал(а):AVRStudio так вот она и виснет на строке delay.
! PROTEUS порой прям в реал-тайме паузы строчит !

А вот CVAVR ну ОЧЕНЬ редко ошибается ! Особенно в таких пустяках как паузы.
по теме ни чего не знают
Дак вот и пытаюсь нахвататься. Выше уж поблагодарил радиоКота ! :lol:
Ты уж извини если если я обидел.
Я ни хотел извиняй.

Добавлено: Ср июн 10, 2009 20:06:05
Dazler
ikarab писал(а):Дак прицепить архив с вашим проектом.

я советую МАСТЕРОМ создавать код в CVAVR - если вы делали иначе то возможно в свойствах проекта у вас не тот МК указан...

Вообще гадать долго можно не имея проекта ...
Нет делал мастером. Прикрепил проект в шапке.

Добавлено: Ср июн 10, 2009 20:34:23
ikarab
Студия не показывает свою работу в отсчете пауз как ARV и предупреждал.

Я перекомпилил в CVAVR 1.25.9 - паузы отрабатываются

Изображение

Добавлено: Ср июн 10, 2009 20:37:20
ikarab
Почему то в студии у меня 2 брейкпоинта всего ставится - так и должно быть чтоль ?

Atmega128 есть и в ВМЛАБ и в ПРОТЕУС - там этих поинтов можно кучу ставить.

А главное в них индицируется бег времени и в реалтайме и не в реал.

Добавлено: Ср июн 10, 2009 20:42:39
ARV
я никогда не симулировал в студии проекты из-под других компиляторов, кроме WinAVR... но в "родных" ставится сколько угодно брейкпоинтов, причем в этой части протеус отдыхает - бряки можно ставить и по условию, и по счетчику, и по адресу, и по доступу - все и перечислить непросто...