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

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Тут засада есть одна - ты компилятору частоту на которой контроллер работает указал, а убедился что контроллер работает на этой частоте? Та директива компилятору не управляет тактовой частотой контроллера, это лишь константа для расчета зависимых от частоты констант.
Контактная информация:
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 22
Зарегистрирован: Вс авг 16, 2015 06:22:15
Откуда: Хабаровск

Сообщение Alex1979rak »

Alexeyslav писал(а):Тут засада есть одна - ты компилятору частоту на которой контроллер работает указал, а убедился что контроллер работает на этой частоте? Та директива компилятору не управляет тактовой частотой контроллера, это лишь константа для расчета зависимых от частоты констант.
Пока протыкивал программу случайно обратил внимание на частоту. Там была цифра 4 МГц
Контактная информация:
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Сообщение igor-x »

Добрый день!
отдельной темы дляAtmel Studio 7.0 нет , попробую здесь спросить.
Подскажите пож, почему скетч Arduino компилируется в Studio 7.0 значительно бОльшего размера чем в в среде Arduino ?
Возможно есть какие то установки для опитмизации по размеру? (в закладке optimization указано Optimize fot size)
Родился
Сообщения: 3
Зарегистрирован: Чт окт 29, 2015 08:26:10

Сообщение Addja »

Доброго дня.
При пошаговой симуляции (в студии) в строке

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

void adc_convers (void){
	i++;
	temp_in_Volt += adc_data[0];
	temp_out_Volt += adc_data[1];
	
	if (i>2){
		[color=#FF0080]in_Volt = (temp_in_Volt/i);[/color]
		[color=#FF0080]out_Volt = (temp_out_Volt/i);[/color]
		i = 0;
		ii = 1;
		temp_in_Volt = 0;
		temp_out_Volt = 0;
	}	
	}
Возникает следующее сообщениеИзображение].
Причем в Протеусе работает. И если "шаг с обходом" тоже проходит.
Спасибо за совет.
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 4618
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

В какой конкретно строке ? Вы привели кусок кода.
И какое сообщение ? Вы показали дизасм.
Реклама
Родился
Сообщения: 3
Зарегистрирован: Чт окт 29, 2015 08:26:10

Сообщение Addja »

В строке
in_Volt = (temp_in_Volt/i);
Да это выходит окно дизасем, но почему?
Прошу простить начинающего, гугл не помог.

Создал тему по моему проекту(громко сказано :) )
Так-как вырванное из контекста сложнее объяснить, да и вопросы будут еще.
Последний раз редактировалось Addja Пн ноя 30, 2015 15:10:00, всего редактировалось 2 раза.
Реклама
Прорезались зубы
Сообщения: 230
Зарегистрирован: Вс янв 26, 2014 22:40:17
Откуда: Рязань

Сообщение SergSV »

Подскажите как сделать эмуляцию EEPROM в Atmel Studio 7 ? В Atmel Studio 6.2 был пункт в меню Tools, а в этой нет.
Последняя прошивка для часов на RGB матрицах на 21 странице в теме https://www.radiokot.ru/forum/viewtopic ... &start=400
Контактная информация:
VAT
Встал на лапы
Сообщения: 90
Зарегистрирован: Вс дек 20, 2015 21:03:39

Сообщение VAT »

Подскажите пожалуйста, как указать симулятору Atmel studio 7, что Atmega48, вернее ее таймер работает от 32кгц кварца (асинхронно). Написал на асме код запуска таймера и в прерывании моргаю светодиодом (в железе работает), а вот в отладчике я в прерывание не попадаю - все висит с таймаутом. Хотя вот цикл проверки переписи из регистров с системным клоком в регистры таймера проходит, то есть впечатление такое ,что какая-то асинхронная частота в симуляторе все-же присутствует..
В общем непонятно как отлаживаться.. У меня проц либо спать будет либо в прерывании асинхронного таймера..
Системный клок от встроенного RC генератора.
Может тут и есть ответ но читать 100страниц сил нет.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18793
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

VAT писал(а):как указать симулятору Atmel studio 7, что Atmega48, вернее ее таймер работает от 32кгц кварца (асинхронно).
по-моему никак. используйте протеус для отладки
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
VAT
Встал на лапы
Сообщения: 90
Зарегистрирован: Вс дек 20, 2015 21:03:39

Сообщение VAT »

Насколько я понимаю Протеус может симулировать схемы. Мне это не надо вовсе. Со схемами у меня проблем нет без симуляторов.
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Протеус встраивается в студию и используется как удалённый отладчик!
Надо только найти к студии плагин ProteusVSM, кажется так. тогда становится доступна отладка практически как в реальной схеме со внешними связями и зависимостями, а не голый контроллер.
Контактная информация:
VAT
Встал на лапы
Сообщения: 90
Зарегистрирован: Вс дек 20, 2015 21:03:39

Сообщение VAT »

Спасибо,
может надо попробовать,
но пока нашел выход - если выставить бит-флаг в TIFR в окне IO студии - то шагая например "по курсору" уже попадаешь в вектор прерывания.
AVK
Потрогал лапой паяльник
Сообщения: 349
Зарегистрирован: Сб окт 20, 2007 14:12:03

Сообщение AVK »

Решил приобщиться к великому таинству Atmel Studio.
Всегда кодил на CV.
И чот я в шоке прям. Тормозная она просто чудовищно, ну да ладно. Пофиг.
Но не нашел я ни одной книги. Есть конечно справка родная но она опять же тормозит и хрен там что найдешь.
Типа как прерывания оформлять, библиотечные функции типа вызов АЦП.
Есть ли вообще смысл на нее пересаживаться с СodeVision?
В общем то к нему никаких претензий, но хочется же чего-то нового.
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

С CV на атмелстудио имеет смысл переходить по двум причинам:
- вам хочется легального ПО за бесплатно
- вы используете STK600 или атмеловские дебаггеры

В противном случае особого смысла переходить не вижу
Хотя если не ошибаюсь контекстные подстановки в студии куда лучше сделаны, очень удобно
Да и сам редактор удобнее
Она не тормозная, ей нужно много ресурсов как и большинству продуктов от микрософт
Если ресурсов достаточно то ничего не тормозит

Обработчик прерываний описывается макросом ISR() из инклуда avr/interrupt.h
Описано все это в документации на avr-glibc, а не на студию
VAT
Встал на лапы
Сообщения: 90
Зарегистрирован: Вс дек 20, 2015 21:03:39

Сообщение VAT »

Добрый день,
если я в редакторе Атмелстудии 7 забиваю данные во флеш - все в порядке - они там видны.
Если то же самое я хочу вбить в Епром - там ничего не появляется, в Епроме?
вот типа такого:
.eseg
name:
.db "hello"
.db 0x55

Компилятор не ругается.. Что я делаю не так?
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

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

Если это надо для отладки... поместите в начало программы нехитрый алгоритм, который переносит из ФЛЕШа некий объём данных в EEPROM, и отлаживайте. Костыль, но проблему решит если не найдёте других способов.
Контактная информация:
VAT
Встал на лапы
Сообщения: 90
Зарегистрирован: Вс дек 20, 2015 21:03:39

Сообщение VAT »

Ну да, в принципе вывернутся можно, но.. что-то я не помню таких проблем 15 лет назад когда я последний раз что-то программировал на 2313..
Mon
Встал на лапы
Аватара пользователя
Сообщения: 92
Зарегистрирован: Вс авг 21, 2011 23:12:37
Откуда: Харьков

Сообщение Mon »

Доброй ночи, коты.
Подскажите, есть ли альтернатива "sprintf"? Случай такой: (переменная типа int)

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

{sprintf(lcd_buffer,"T1=%+i\xdf ",temp[0]);
          lcd_gotoxy(0,2);                  
          lcd_puts(lcd_buffer);}
Уж больно грузит ЦП у меги8, если верить протеусу порядка 80%. До использования "sprintf" , загрузка МК была порядка 50-60%.
В железе ещё не смотрел, как себя поведёт, только собираюсь за РЭ в магазин.
Да и вообще, 80% это не сильно ли большая загрузка для МК ?
выше головы не прыгнешь - ниже зад**цы не сядешь.
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Сообщение Pnjom-Penb »

Mon писал(а):Доброй ночи, коты.
Подскажите, есть ли альтернатива "sprintf"? Уж больно грузит ЦП у меги8, ...
На просторах инета видел такой код:

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

char    *Byte2Str(unsigned char byte)
{
static char buf[4];
char *s = &(buf[3]);

        do {
           *--s = '0' + (byte % 10);
        } while (byte /= 10);

        return(s);
}
Доработать до signed не сложно, не так ли? :) Можно еще "/=" заинлайнить сдвигами и сложениями - совсем быстро будет. ;)
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Начиная вот отсюда посмотрите следующие пару страниц, может что интересное найдете.
Если конкретнее, вот решение раз, вот два.
Вот более подробное исследование.
Ответить

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