реклама на сайте
подробности

 
 
17 страниц V  « < 13 14 15 16 17 >  
Reply to this topicStart new topic
> Микроконтроллеры для начинающих, AVR, PIC, FUJITSU
SlavaV
сообщение Jan 29 2016, 05:53
Сообщение #211


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 13-06-06
Из: г.Улан-Удэ
Пользователь №: 18 024



Зачем придумывать велосипед при использовании AVR, есть же Atmel Studio (на данный момент 7) в ней всё уже имеется (ASF) работа с прерываниями, портами, задержками и т.д. хороший help
главное в вашем случае подкорректировать board.h.
Go to the top of the page
 
+Quote Post
sovas
сообщение Jul 23 2016, 21:14
Сообщение #212





Группа: Новичок
Сообщений: 3
Регистрация: 17-07-16
Пользователь №: 92 585



Доброй ночи прошу не пинать только учусь не могу понять как считать логарифм помогите разобраться .
#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);
}
}
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jul 27 2016, 18:57
Сообщение #213


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(sovas @ Jul 24 2016, 00:14) *
помогите разобраться .

И? пример работает?
Что не работает?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Jul 28 2016, 11:14
Сообщение #214


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(Dog Pawlowa @ Jul 27 2016, 21:57) *
И? пример работает?
Что не работает?

Как минимум, printf("%i") ждёт int, а не float.
Но тогда бы мы услышали "работает, но какую-то ерунду выводит".


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
sovas
сообщение Jul 29 2016, 21:40
Сообщение #215





Группа: Новичок
Сообщений: 3
Регистрация: 17-07-16
Пользователь №: 92 585



sprintf(lcd_buffer, "otvet%f", val); Даже если так пишу выводит знак вопроса и все , помогите разобраться как вывести корректно .
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Aug 1 2016, 06:25
Сообщение #216


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Больше самостоятельности!

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", cool.gif; LCDstring(lcd_buf, 16); - работает?

И только потом смотреть на логарифмы...

Ну и код этого самого LCDstring() вместе со всем, что оно вызывает, надо смотреть.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
DASM
сообщение Aug 3 2016, 23:56
Сообщение #217


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



мне ваще вот эт не нра val=log10(5);
напишите val=log10(5.); с точкой или printf ("%f\r\n", (float)5); (что уже некрасиво делать)
Go to the top of the page
 
+Quote Post
skripach
сообщение Aug 10 2016, 17:43
Сообщение #218


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Цитата(sovas @ Jul 30 2016, 00:40) *
sprintf(lcd_buffer, "otvet%f", val); Даже если так пишу выводит знак вопроса и все , помогите разобраться как вывести корректно .

Нужно убедится (включить в настройках компилятора) что sprintf умеет глотать float.
Ну и модификатор, что-нибудь вроде: sprintf(lcd_buffer, "otvet%9.3f", val);


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
lyric
сообщение Mar 10 2017, 09:36
Сообщение #219





Группа: Участник
Сообщений: 14
Регистрация: 29-01-16
Пользователь №: 90 250



Здравствуйте.
Я только начинаю вникать в 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);
}

}
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Mar 10 2017, 10:22
Сообщение #220


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Частота задается программированием фьюзов
В #define F_CPU 16000000 ваша задача поместить РЕАЛЬНОЕ значение частьты. Сейчас ваша мега работает на частоте 1МГц и поэтому задержка сходится только когда вы не врете компилятору и делаете F_CPU 1000000

Цитата
Я залазил в этот h-файл библиотеки delay,
Никогда не лазьте в библиотеки и ничего там не правьте!

Программировать фьюзы тут

Прикрепленное изображение


При неправильной установке тактирования контроллер перестанет выходить на связь с программтором. Будьте осторожны!(восстановить потом можно, но это потребует дополнительного шаманства с аппаратной частью, что для новичка может быть сложно)


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
Lagman
сообщение Mar 10 2017, 10:25
Сообщение #221


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Цитата(lyric @ Mar 10 2017, 12:36) *
Проблема в том, что временной интервал в 1 секунду выдерживается только когда в проекте частоту F_CPU указываю 1000000.

может и не правильно но ...
http://radiokot.ru/forum/viewtopic.php?p=1...4f75ff#p1540750
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Mar 11 2017, 09:32
Сообщение #222


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Предложенный способ задефайнить глобально F_CPU с помощью командной строки компилятора конечно-же правильный.
Однако вариант
#define F_CPU 16000000
#include <avr/io.h>
#include <util/delay.h>

тоже вполне рабочий т.к. #define F_CPU расположен ПЕРЕД include.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
lyric
сообщение Mar 14 2017, 02:35
Сообщение #223





Группа: Участник
Сообщений: 14
Регистрация: 29-01-16
Пользователь №: 90 250



Цитата(sigmaN @ Mar 10 2017, 17:22) *
Частота задается программированием фьюзов
В #define F_CPU 16000000 ваша задача поместить РЕАЛЬНОЕ значение частьты. Сейчас ваша мега работает на частоте 1МГц и поэтому задержка сходится только когда вы не врете компилятору и делаете F_CPU 1000000


Спасибо! Всё кратко, чётко и ясно.
А то сколько смотрел видео по AVR, сколько статей находил - нигде эту, казалось бы, простую инфу, не встречал: все сразу учат как мигать светодиодом, будто это основное, что нужно уметь в работе с МК)


Цитата(sigmaN @ Mar 10 2017, 17:22) *
Программировать фьюзы тут

Прикрепленное изображение


При неправильной установке тактирования контроллер перестанет выходить на связь с программтором. Будьте осторожны!(восстановить потом можно, но это потребует дополнительного шаманства с аппаратной частью, что для новичка может быть сложно)


Да, я находил это окно. На Вашем скриншоте всё подробно описано, а в моей студии 6.1 в строке SUT_CKSEL сейчас написано "INTRCOSC_6CK_65MS".
Я так понимаю что чтобы использовать собственный RC, нужно чтобы это волшебное слово начиналось с букв "INT", - таких строк, начинающихся с "INT", всего в списке 6, и частота указана только в трёх из них, и везде одинаковая, - 128 килогерц. Как при этом выставить свою частоту - непонятно. Разве что без Atmel Studio 6.1, используя сторонний программатор для этого.

Цитата(Lagman @ Mar 10 2017, 17:25) *
может и не правильно но ...
http://radiokot.ru/forum/viewtopic.php?p=1...4f75ff#p1540750


Да, я был в этой теме, делал всё, как там, но результата не было, т.к. не в курсе был что нужно корректировать фьюзы для смены частоты.
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Mar 14 2017, 08:58
Сообщение #224


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Не понимаю почему вы сидите на студии 6.1, когда есть студия 7 из которой я и сделал скриншот.

Фьюзы и их значения в конце концов описаны в даташите и вы можете ввести данные прям в окошечки LOW и HIGH которые вы видете внизу этого окошка.. Короче разберетесь


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
EugeNNe
сообщение Apr 22 2017, 07:09
Сообщение #225


Местный
***

Группа: Участник
Сообщений: 424
Регистрация: 6-03-06
Из: Н.Новгород
Пользователь №: 14 997



Куда в 7 Студии запрятали установку частоты МК?
Go to the top of the page
 
+Quote Post

17 страниц V  « < 13 14 15 16 17 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 10:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01519 секунд с 7
ELECTRONIX ©2004-2016