SlavaV 0 29 января, 2016 Опубликовано 29 января, 2016 · Жалоба Зачем придумывать велосипед при использовании AVR, есть же Atmel Studio (на данный момент 7) в ней всё уже имеется (ASF) работа с прерываниями, портами, задержками и т.д. хороший help главное в вашем случае подкорректировать board.h. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sovas 0 23 июля, 2016 Опубликовано 23 июля, 2016 · Жалоба Доброй ночи прошу не пинать только учусь не могу понять как считать логарифм помогите разобраться . #include <util/delay.h> #include "lcd_lib.h" #include <math.h> #include <stdio.h> // объявляем глобальные переменные char lcd_buffer[16]; float val; int main() { LCDinit(); while(1) { val=log10(5); sprintf(lcd_buffer, "otvet%i", val); LCDclr(); LCDGotoXY(0,0); LCDstring(lcd_buffer, 16); _delay_ms(300); } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 27 июля, 2016 Опубликовано 27 июля, 2016 · Жалоба помогите разобраться . И? пример работает? Что не работает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 28 июля, 2016 Опубликовано 28 июля, 2016 · Жалоба И? пример работает? Что не работает? Как минимум, printf("%i") ждёт int, а не float. Но тогда бы мы услышали "работает, но какую-то ерунду выводит". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sovas 0 29 июля, 2016 Опубликовано 29 июля, 2016 · Жалоба sprintf(lcd_buffer, "otvet%f", val); Даже если так пишу выводит знак вопроса и все , помогите разобраться как вывести корректно . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 1 августа, 2016 Опубликовано 1 августа, 2016 · Жалоба Больше самостоятельности! LCDstring("1234567890123456", 16); - работает? sprintf (lcd_buf, "1234567890123456"); LCDstring(lcd_buf, 16); - работает? (кстати, почитайте про sprintf - буфер нужен чуть больше: в конец ещё нолик пишется) int a = 10; sprintf (lcd_buf, "%d", a); LCDstring(lcd_buf, 16); - работает? float b = 12.34; sprintf (lcd_buf, "%f", B); LCDstring(lcd_buf, 16); - работает? И только потом смотреть на логарифмы... Ну и код этого самого LCDstring() вместе со всем, что оно вызывает, надо смотреть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 3 августа, 2016 Опубликовано 3 августа, 2016 · Жалоба мне ваще вот эт не нра val=log10(5); напишите val=log10(5.); с точкой или printf ("%f\r\n", (float)5); (что уже некрасиво делать) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skripach 6 10 августа, 2016 Опубликовано 10 августа, 2016 · Жалоба sprintf(lcd_buffer, "otvet%f", val); Даже если так пишу выводит знак вопроса и все , помогите разобраться как вывести корректно . Нужно убедится (включить в настройках компилятора) что sprintf умеет глотать float. Ну и модификатор, что-нибудь вроде: sprintf(lcd_buffer, "otvet%9.3f", val); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lyric 0 10 марта, 2017 Опубликовано 10 марта, 2017 · Жалоба Здравствуйте. Я только начинаю вникать в AVR. Есть атмега644, стоит в простенькой самодельной отладочной плате,. Сейчас к атмеге этой подключен только один светодиод, заставляем его моргать. В качестве программатора-отладчика используется JTAG ICE MK2, в качестве среды разработки - Atmel Studio 6.1. Сделана простейшая программа, которая на секунду включает светодиод, потом секунду держит его отключенным и так далее. Проблема в том, что временной интервал в 1 секунду выдерживается только когда в проекте частоту F_CPU указываю 1000000. Если указываю 8000000, - то 1 секунда превращается в 8 секунд. Когда ставлю частоту 16000000 - то получается 16 секунд интервал. Для задания временного интервала используется библиотека util/delay.h. Но ведь эта библиотека должна обеспечивать всегда одинаковую, указанную ей задержку, а не увеличивать её пропорционально частоте МК, верно? В чём тут проблема может быть? Я залазил в этот h-файл библиотеки delay, ставил там свою частоту нужную, вместо 1000000 - но это ничего не изменило. _____________________________________________ Вторая проблема - программатор-отладчик мой при внутрисхемной отладке по шагам доходя до строки с упоминанием delay - из текста программы переходит в библиотеку и всё, дальше отладку можно только прервать, обратно из библиотеки он уже не выходит никак. Подскажиет что я делаю не так? код программы: #define F_CPU 16000000 #include <avr/io.h> #include <util/delay.h> void preset() { DDRD = 0b11111111; // 0xFF } int main(void) { preset(); while(1) {PORTD = 0b11111111; _delay_ms(1000); PORTD = 0b00000000; _delay_ms(1000); } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 10 марта, 2017 Опубликовано 10 марта, 2017 · Жалоба Частота задается программированием фьюзов В #define F_CPU 16000000 ваша задача поместить РЕАЛЬНОЕ значение частьты. Сейчас ваша мега работает на частоте 1МГц и поэтому задержка сходится только когда вы не врете компилятору и делаете F_CPU 1000000 Я залазил в этот h-файл библиотеки delay, Никогда не лазьте в библиотеки и ничего там не правьте! Программировать фьюзы тут При неправильной установке тактирования контроллер перестанет выходить на связь с программтором. Будьте осторожны!(восстановить потом можно, но это потребует дополнительного шаманства с аппаратной частью, что для новичка может быть сложно) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lagman 1 10 марта, 2017 Опубликовано 10 марта, 2017 · Жалоба Проблема в том, что временной интервал в 1 секунду выдерживается только когда в проекте частоту F_CPU указываю 1000000. может и не правильно но ... http://radiokot.ru/forum/viewtopic.php?p=1...4f75ff#p1540750 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 11 марта, 2017 Опубликовано 11 марта, 2017 · Жалоба Предложенный способ задефайнить глобально F_CPU с помощью командной строки компилятора конечно-же правильный. Однако вариант #define F_CPU 16000000 #include <avr/io.h> #include <util/delay.h> тоже вполне рабочий т.к. #define F_CPU расположен ПЕРЕД include. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lyric 0 14 марта, 2017 Опубликовано 14 марта, 2017 · Жалоба Частота задается программированием фьюзов В #define F_CPU 16000000 ваша задача поместить РЕАЛЬНОЕ значение частьты. Сейчас ваша мега работает на частоте 1МГц и поэтому задержка сходится только когда вы не врете компилятору и делаете F_CPU 1000000 Спасибо! Всё кратко, чётко и ясно. А то сколько смотрел видео по AVR, сколько статей находил - нигде эту, казалось бы, простую инфу, не встречал: все сразу учат как мигать светодиодом, будто это основное, что нужно уметь в работе с МК) Программировать фьюзы тут При неправильной установке тактирования контроллер перестанет выходить на связь с программтором. Будьте осторожны!(восстановить потом можно, но это потребует дополнительного шаманства с аппаратной частью, что для новичка может быть сложно) Да, я находил это окно. На Вашем скриншоте всё подробно описано, а в моей студии 6.1 в строке SUT_CKSEL сейчас написано "INTRCOSC_6CK_65MS". Я так понимаю что чтобы использовать собственный RC, нужно чтобы это волшебное слово начиналось с букв "INT", - таких строк, начинающихся с "INT", всего в списке 6, и частота указана только в трёх из них, и везде одинаковая, - 128 килогерц. Как при этом выставить свою частоту - непонятно. Разве что без Atmel Studio 6.1, используя сторонний программатор для этого. может и не правильно но ... http://radiokot.ru/forum/viewtopic.php?p=1...4f75ff#p1540750 Да, я был в этой теме, делал всё, как там, но результата не было, т.к. не в курсе был что нужно корректировать фьюзы для смены частоты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 14 марта, 2017 Опубликовано 14 марта, 2017 · Жалоба Не понимаю почему вы сидите на студии 6.1, когда есть студия 7 из которой я и сделал скриншот. Фьюзы и их значения в конце концов описаны в даташите и вы можете ввести данные прям в окошечки LOW и HIGH которые вы видете внизу этого окошка.. Короче разберетесь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EugeNNe 0 22 апреля, 2017 Опубликовано 22 апреля, 2017 · Жалоба Куда в 7 Студии запрятали установку частоты МК? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться