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

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 10
Зарегистрирован: Ср мар 09, 2016 12:22:22

Сообщение KVAtt »

Люди добрые, помогите! почему это выражение на выходе дает минус, где (dig_T2) -отрицательное число

var1 = (((double)adc_T)/16384.0 - ((double)dig_T1)/1024.0) * ((double)dig_T2);

а то же самое в упрощенном виде дает плюс как и положено

var1=31-(dig_T2*9);

Блин, голову уже сломал, спасибо, разобрался скобки не учел, вопрос снят
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 168
Зарегистрирован: Сб фев 16, 2008 04:35:19
Откуда: г.Тольятти

Сообщение diim »

доброго дня всем.
уважаемые профи, подскажите в чём проблема, пытаюсь "соскочить" с CodeVision и перейти полностью на Atmel Studio 6, возникли проблемы.
набросал код для проверки ну и так... узнать что да как.
Спойлер#define F_CPU 8000000UL // рабочая частота МК (8МГц)

#define SetBit(port,bit) port|=(1<<bit)
#define ClearBit(port,bit) port&=~(1<<bit)

#include <avr/io.h>
#include <math.h>
#include <util/delay.h>
int a,b,c;



int main(void)
{

while(1){

a++;
if (a>=1)
{
SetBit(PORTC,3);
}
else {
ClearBit(PORTC,3);
};

if (a==2)
{a=0;};



}
}
проект собирается нормально, а запускаю отладку от перескакивает в окно дизассемблера и отладка идёт только там. А мне хотелось бы отлаживать программу на Си. как сделать? или что я делаю не так. гугл так и не дал ответа.
P.S. пишет какуюто ошибку вот скрин.
Вложения
capture_05152016_121914.jpg
(96.84 КБ) 402 скачивания
***********
Не трогайте мокрыми руками оголённые провода, они могут заржаветь.
***********
Контактная информация:
Реклама
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Настраивать надо, генерация отладочной информации отключена, вот он и теряется... Где-то в настройках проекта или компилятора.
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 168
Зарегистрирован: Сб фев 16, 2008 04:35:19
Откуда: г.Тольятти

Сообщение diim »

Alexeyslav писал(а):Настраивать надо, генерация отладочной информации отключена, вот он и теряется... Где-то в настройках проекта или компилятора.
спасибо! я думал в чём то другом косяк.
сейчас создал новый проект , причём такой же.
всё стало работать.
:))
***********
Не трогайте мокрыми руками оголённые провода, они могут заржаветь.
***********
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Грызет канифоль
Аватара пользователя
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

Сообщение ROMan2947 »

Здравствуйте!!
Установил AS7 при отладке программы в окне I\O не понятно почему регистр PIN не меняет свое состояние в соответствии с регистром PORT....порт настроен на вход, т.е. DDR выставлен в 0....так и должно быть или нужно что-то настроить?
Реклама
akl
Друг Кота
Сообщения: 4473
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Так и должно быть, если лапа настроена как IN.
Реклама
Грызет канифоль
Аватара пользователя
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

Сообщение ROMan2947 »

что за предупреждение????
я только начал изучать, прошу терпения...

Warning control reaches end of non-void function [-Wreturn-type]
#include <AVR/io.h>
#include <stdint.h>



unsigned char i=0;

int nastroika(void)
{
DDRA=0x00;
PORTA=0xFF;

DDRB=0xFF;
PORTB=0x00;

}



int var()
{

if ((PINA&(1<<0))==0)


{
i=1;
}

if ((PINA&(1<<1))==0)
{
i=2;
}

}

int main(void)
{

nastroika();

while (1)
{
var();

PORTB=i;

}

}
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

Любая функция у которой тип возвращаемых данных отличен от void должна завершаться return

Это Си
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1941
Зарегистрирован: Пт фев 27, 2015 20:57:08
Откуда: Курск

Сообщение Олегыч1 »

Приветствую уважаемые радиокоты! В программировании только начинаю, поэтому не судите строго) Собрал первый программатор (самый простой, тот что Громова) Приобрел AVR-микроконтроллер по имени ATMEGA 8А. Прошить удалось (вроде бы :lol: ) двумя пробными прошивками, но подскажите пожалуйста:
1) Как проверить на практике то, что я прошил? Что должно быть и на каких выводах МК?
2) как самому написать (или исправить уже имеющуюся) прошивку таким образом, чтобы на выводах микросхемы были сигналы допустим по 1 секунде длительностью , и по 1 секунде скважностью, которые идут например друг за другом...
3) Какие выводы МК из всех, что в датащите вообще подлежат программированию?
4) В датащите на данный МК выводы показаны разноцветными цветами. Что обозначают этими цветами?
=================
Прошивки прилагаю:
Вложения
022M48.hex
(398 байт) 347 скачиваний
add.hex
(125 байт) 330 скачиваний
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

1. Лучше бы даташит с раноцветными выводами выложили и где вы такой нашли....
2. А также, его можно было почитать чуток, там же написано, какие выводы "поддаются программированию".
3. Без дизассемблирования вы ХЕКС файл никак не подправите (сюда же относят и знания самого ассемблера).
4. Проверить записанное в МК можно просто прочитав тем же программатором и сравнив его ХЕКС с оригиналом.
5. И вообще, начните с обучалки и будет вам счастье! :)

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

Сообщение Alexeyslav »

Э не, это так не работает.
Что должно быть на выводах работающего контроллера зависит ИСКЛЮЧИТЕЛЬНО от прошивки(и битов конфигурации контроллера - он может тупо не заработать из-за неверной установки источника тактовых импульсов) которую в него залили. На этот вопрос ответить может только автор прошивки, если не заниматься реверсингом прошивки(дело это крайне хлопотное, гораздо затратнее чем написать с нуля по поставленному Т.З.).

В даташите на МК нет разноцветных выводов, ты скачал не оригинальный даташит а по всей видимости какой-то переработанный для удобства кому-то, вот у него и спрашивай. Но в качестве предположения - цветами определяется группы выводов по функциональному назначению - например питания, сброса, универсальных, входы АЦП и т.д.

Лучше скачай оригинальный даташит, но он правда на английском. На контроллер ATMEGA8A даташит идёт одним файлом и полностью исчерпывающий, надо только тщательно его изучить вдоль и поперёк. Прочитав даташит ты узнаешь что и как можно делать буквально с каждым выводом, но с наскоку это не получится. Сначала, бывает очень трудно понять зачем контроллеру две пары выводов питания, и почему обязательно их подключать но это обусловлено техническими ограничениями. Не все доступные выводы можно использовать одинаково эффективно, читай даташит и ужасайся - в реальных схемах практически не получается использовать ни один порт контроллера полностью на все 8 бит, в этом отношении он не из самых удобных.

Да, и имей в виду что MEGA8 и практически всё семейство контроллеров(с индексами 8A 8P 8PA - это несколько разные модификации контроллеров не совместимые на уровне прошивок но совместимые на уровне ассемблера и ЯВУ и небольшими ньюансами в реализации некоторых функций) это весьма простые для понимания контроллеры. Простые как валенок, по сравнению с другими современными контроллерами.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6348
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Олегыч1 писал(а): по 1 секунде скважностью
Это все равно, что сказать "длиной в 1 килограмм" . Не употребляй слов, значения которых не знаешь. Скважность - отношение периода к длительности импульса, безразмерная величина.
Изображение
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1941
Зарегистрирован: Пт фев 27, 2015 20:57:08
Откуда: Курск

Сообщение Олегыч1 »

Это все равно, что сказать "длиной в 1 килограмм"
Прошу прощения, видимо не так понял значение слова скважность. В моем понимании это "пробелы" между импульсами. У них соответственно тоже есть временная длинна (ну это я так подумал :) ) Теперь буду знать.
А здесь тот самый датащит на мою атмегу. http://www.atmel.com/images/atmel-8159- ... asheet.pdf
Еще вопрос назрел. Ассэмблер говорят довольно не простой язык программирования для новичка. Я собирался С++ попробовать в освоении для написания несложных прошивок.
1) С помощью этого языка можно исправлять НЕХ -файлы?
2) И, если не затруднит, подскажите пожалуйста, сколько независимых друг от друга светодиодов можно повесить на данную атмегу?
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

:facepalm:

все выводы, которые с буквой Р, вы можете сделать как входом, так и выходом.

Светодиодов можно повесить хоть 1000 штук и больше, главное, знать как вешать и что вам от них нужно еще. :)
Станислав
Друг Кота
Аватара пользователя
Сообщения: 6348
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

1. С помощью никакого языка нельзя мсправлять НЕХ-файлы. Точнее, их можно исправлять в обычном Блокноте, но для этого квалификация программера должна быть очень выше среднего, до чего еще очень далекооооо. А так - для взлома чужого хексика ( если бы свой, то был бы исходник ) нужно сделать декомпиляцию, и уж в полученный псевдо-исходник вносить правки, потом компилировать заново. Язык - чтобы попробовать и убедиться, что это - не твое, можно начать (и кончить :) Си), а если зацепит блажь серьезно заниматься МК-ми, ассемблер знать крайне желательно, т.к. владение ассемблером предполагает детальное знакомство с "нутром" МК.
2. Столько, сколько есть выходов в МК. Если надо больше, число выходов можно увеличить до любого разумного предела путем подключения внешних регистров.

А вообще очень чувствуется, что автор не заходил сюда : http://radiokot.ru/start/mcu_fpga/avr/ . А зря. Там много разумного, доброго, вечного, как говорил Некрасов.

--------------------------------------------
Не стоит благодарности, достаточно тискануть + :)
Изображение
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Jack_A писал(а):путем подключения внешних регистров.
Есть еще Чарли мультиплексинг, кроме них.

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

Сообщение Alexeyslav »

Однако, ATMEL переформатировала всю документацию?
На С++ много под этот контроллер не напишешь - сразу же упрёшься в маленький объём памяти, ему для комфорта подавай ATMEGA328.
Начинать надо однозначно с ассемблера, иначе все остальные языки будут просто магией. Ну или если совсем не хочешь заморачиваться, начинай с ардуины.
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1941
Зарегистрирован: Пт фев 27, 2015 20:57:08
Откуда: Курск

Сообщение Олегыч1 »

Jack_A благодарю за полезную ссылку. Буду вникать глубже, дабы не задавать глупых вопросов).
Теперь буду знать, что СИ и СИ++ это не одно и тоже) :oops:
Грызет канифоль
Аватара пользователя
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

Сообщение ROMan2947 »

axillent писал(а):Любая функция у которой тип возвращаемых данных отличен от void должна завершаться return

Это Си
так вот в чем дело значит ща проверим)))спасибо!
Друг Кота
Аватара пользователя
Сообщения: 6348
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

СКАЗОЧНИК писал(а): Есть еще Чарли мультиплексинг, кроме них.
Я с этим методом знаком только понаслышке, но сомневаюсь, что все возможные независимые комбинации зажигания диодов могут быть реализованы. А про СИ++ я не говорил, я на нем даже для ПК не пишу :(
Изображение
Ответить

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