AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
warrior2031
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Чт апр 22, 2010 13:06:03

Re: AVR studio 4 в вопросах и ответах

Сообщение warrior2031 »

Отлаживаю программу в AVR studio 4 и возникла такая ситуация.

В AVR studio часть программы работает как надо, т.е. я её пошагово прогнал, всё нормально. В регистрах и портах нужные значения и т.п.

Рассматриваю сейчас часть программы где просто динамическая индикация идет.

Когда я симулирую её в Proteus, то там начинаются глюки в зависимости от частоты на которой работает процессор. Там некие биты указываются, отвечающие за эту самую частоту. Почему так может быть, что на intRC=1MHz всё работает более или менее, а на 4MHz уже отображает на дисплее не то.

И даже когда, вроде, отображается нормально происходит следующий момент. Вот в программе последовательно активизируется четыре разряда индикации. В AVR studio всё как и написано в программе происходит. Но в Proteus он может перескакивать разяды.

Может это быть связано со сторожевым таймером?

Почему так может быть? В чем может быть ошибка?

Контроллер - atmega8.
I know what you're thinking. "Did he fire six shots or only five?"...
...you've got to ask yourself one question: "Do I feel lucky?" Well, do ya, punk?
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение Meteor »

Мне кажется этот вопрос надо перенаправить в тему по консервусу. Не было у меня лично ни каких бед, пока не попробовал этот злополучный продукт. И нет сейчас никаких бед, потому как больше не употребляю.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
warrior2031
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Чт апр 22, 2010 13:06:03

Re: AVR studio 4 в вопросах и ответах

Сообщение warrior2031 »

Спасибо за быстрый ответ.

А в чем Вы бы предложили схему смоделировать для AVR?

Или это всё же не совсем правильно и надо проверять на железе?
I know what you're thinking. "Did he fire six shots or only five?"...
...you've got to ask yourself one question: "Do I feel lucky?" Well, do ya, punk?
Аватара пользователя
Pooher
Мучитель микросхем
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Re: AVR studio 4 в вопросах и ответах

Сообщение Pooher »

Только "ЖЕЛЕЗО"!
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение Meteor »

Pooher, а голову к железу? :shock:
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
Pooher
Мучитель микросхем
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Re: AVR studio 4 в вопросах и ответах

Сообщение Pooher »

Ну, это если имеется :)))
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение ARV »

уж что-что, а динамическую индикацию протеус нормально позволяет отладить - не надо катить на него бочку в этом вопросе :) вот WDT он так и не умеет нормально эмулировать (во всяком случае в известной мне версии)...

просто где-то в программе есть ошибка.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение GP1 »

и все же ...
"Истина в железе" :beer:
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение ARV »

истина где-то там...

просто когда в железе не заработало - не так-то уж и просто найти место в программе, которое не дает работать :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение GP1 »

Согласен на все 100%
Чем дальше, тем больше становлюсь занудой...
Изображение
warrior2031
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Чт апр 22, 2010 13:06:03

Re: AVR studio 4 в вопросах и ответах

Сообщение warrior2031 »

ARV писал(а):уж что-что, а динамическую индикацию протеус нормально позволяет отладить - не надо катить на него бочку в этом вопросе :) вот WDT он так и не умеет нормально эмулировать (во всяком случае в известной мне версии)...

просто где-то в программе есть ошибка.


Вот складывается впечатление, что на ресет, что ли, по сторожевому таймеру уходит, и из-за этого индикация сбивается. Там не просто индикация, там ещё небольшие вычисления тоже происходят, кстати.

В AVR Studio я проверял полностью эту подпрограмму - все по порядку идет, WDT не срабатывает.
I know what you're thinking. "Did he fire six shots or only five?"...
...you've got to ask yourself one question: "Do I feel lucky?" Well, do ya, punk?
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение Meteor »

А прерывания не "мешают"? Или совсем не используете?
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
warrior2031
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Чт апр 22, 2010 13:06:03

Re: AVR studio 4 в вопросах и ответах

Сообщение warrior2031 »

В общей программе у меня есть одно внешнее прерывание. Но сбивается и без него.

Не понимаю, почему это зависит от частоты внутреннего RC генератора. Например, при повышении частоты может пропасть точка на индикаторе или начинает светиться сегмент G у индикатора, хотя на порту единицы на этой линии нет. Т.е. ко всему ещё и индикатор как бы "глючит". В порту все правильно, а на нем появляется всякое нехорошее.

Просто если это будет реализовано до конечного устройства, то будет использован индикатор со встроенными регистрами. Динамической индикации как таковой не будет. Будет просто запись в буфер как бы. Но мне в общем и целом хотелось бы посмотреть на работу программы, поэтому сделал динамическую.

Кстати, если уж на то пошло. А как бы мне проверить обрабатывается ли внешнее прерывание?
Я настроил их на прерывания по INT0 по нарастающему фронту, например. Правильно понимаю, если я единицу запишу в AVR Studio на int0 в дебаге, то он должен на обработчик вн. прерывания перейти?
I know what you're thinking. "Did he fire six shots or only five?"...
...you've got to ask yourself one question: "Do I feel lucky?" Well, do ya, punk?
tuco2009
Грызет канифоль
Сообщения: 297
Зарегистрирован: Пт ноя 13, 2009 10:43:31

Re: AVR studio 4 в вопросах и ответах

Сообщение tuco2009 »

Пришло время мне сделать проект на С. Помогите пожалуйста организовать передачу данных 8-10 регистров и участка памяти в 16 байт из ассемблерной части в сишную и наоборот. Как это организовать?
Можно, конечно, по прямой адресации в памяти, но меня учили (еще на Турбо С и MASM) и говорили, что это нехорошо, мало ли что, когда сишному компилятору захочется поменять адрес своей переменной, а тут я, с прямой адресацией... Есть ли другие способы?
...Им бы пить и жрать в три горла день и ночь,
Будь ты трижды гений - им нельзя помочь...
\\Ария\\Игра с огнем
tuco2009
Грызет канифоль
Сообщения: 297
Зарегистрирован: Пт ноя 13, 2009 10:43:31

Re: AVR studio 4 в вопросах и ответах

Сообщение tuco2009 »

Блин, сам прочитал и не понял что написал :))) Короче говоря есть готовая программа на ASM , в нее надо вставить пересчет формулы на Си. Формула довольно сложная и использует много переменных, которые получены из портов в программе на АСМ. Вариант с перекомпиляцией формулы в АСМ даже рассматривать не хочу, поскольку она будет немного меняться от прошивки к прошивке, и естественно, каждый раз ее пересматривать....сами понимаете...
Поэтому вижу выход:
1. Сделать прогу на си (самого си кода будет 5-6%)
2. Оставить все как есть в ASM, и добавить Си (не вижу как это практически реализовать, под AVR Studio)
...Им бы пить и жрать в три горла день и ночь,
Будь ты трижды гений - им нельзя помочь...
\\Ария\\Игра с огнем
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение ARV »

первый вариант
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
tuco2009
Грызет канифоль
Сообщения: 297
Зарегистрирован: Пт ноя 13, 2009 10:43:31

Re: AVR studio 4 в вопросах и ответах

Сообщение tuco2009 »

Нашел немного инфы. В СAVR есть спецификация -х assembler-with-cpp. При этом код выглядит следующим образом:

Код: Выделить всё

#include <avr/io.h> ; Note [1]
work = 16 ; Note [2]
tmp = 17
.....
main:
rcall ioinit
1:
rjmp 1b ; Note [6]
.global TIMER0_OVF_vect ; Note [7]
TIMER0_OVF_vect:
ldi inttmp, 256 - tmconst + fuzz
out _SFR_IO_ADDR(TCNT0), inttmp ; Note [8]
in intsav, _SFR_IO_ADDR(SREG) ; Note [9]
sbic _SFR_IO_ADDR(PORTD), SQUARE
rjmp 1f
sbi _SFR_IO_ADDR(PORTD), SQUARE
rjmp 2f
1: cbi _SFR_IO_ADDR(PORTD), SQUARE

Очень похоже на АСМ с Си, а не наоборот, думаю, этот вариант мне подойдет, попробую, по крайней мере...
...Им бы пить и жрать в три горла день и ночь,
Будь ты трижды гений - им нельзя помочь...
\\Ария\\Игра с огнем
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: AVR studio 4 в вопросах и ответах

Сообщение ibiza11 »

вроде бы это асм. правда первая строчка немного смущает.я не пробовал использовать # вместо "." а сейчас нет возможности проверить.
Ставим плюсы: )
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение ARV »

ibiza11 писал(а):вроде бы это асм. правда первая строчка немного смущает.я не пробовал использовать # вместо "." а сейчас нет возможности проверить.

вроде бы это не CVAVR, а WinAVR, и, судя по всему, именно ассемблер. синтаксис текста характерен именно для ассемблерных модулей WinAVR, а так же опции с большим количеством дефисов - это в GCC принято (а для CVAVR вообще команданя строка определена где-нибудь?)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Shurf
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср май 12, 2010 10:24:41
Откуда: Чувашия, Новочебоксарск
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение Shurf »

Решил помигать светодиодом так:

Код: Выделить всё

//tiny2313
#define F_CPU 4000000UL
#include <avr/io.h>
#include <util/delay.h>   
int main (void)
{
   DDRD  = 0x01;
      for(;;)
   {
      PORTD += 1;
      _delay_ms(1000);
   }
   return 1;
}

При этом компилятор AVRStudio сказал:

Код: Выделить всё

Device: attiny2313

Program:      86 bytes (4.2% Full)
(.text + .data + .bootloader)

Data:          0 bytes (0.0% Full)
(.data + .bss + .noinit)


Тогда я решил применить свои программерские навывки и написал так:

Код: Выделить всё

//tiny2313
#define F_CPU 4000000UL
#include <avr/io.h>
#include <util/delay.h>   
int main (void)
{
   int count = 1;
   DDRD  = 0x01;
      for(;;)
   {
      count++;
      if (count>=100) count=1;
      PORTD += 1;
      _delay_ms(10*count);
   }
   return 1;
}


На что компилятор показал свои компиляторские навыки:

Код: Выделить всё

AVR Memory Usage
----------
Device: attiny2313

Program:    3668 bytes (179.1% Full)
(.text + .data + .bootloader)

Data:        264 bytes (206.3% Full)
(.data + .bss + .noinit)


Вот сижу и думаю - откуда?
Если убрать count++ то код опять становится маленьким.
Вот сижу и думаю - как грамотно сделать инкремент в программировании для МК? Что вообще не так?
Ответить

Вернуться в «AVR»