Обсуждаем контроллеры компании Atmel.
Ответить

Re: Нескольно простых вопросов о программировании AVR на Си.

Сб фев 09, 2019 16:58:46

:( Сколько не пытался...


Сколько нИ пытался... Русский язык выучи сначала, а потом берись за C++!

Добавлено after 16 minutes 4 seconds:
<iostream> - это C++. Пример с типичным "Hello world"

А с кодом самой MVS-2017 ошибок нет. Заменен только заголовок вместо"Хелло Ворлд!"

#include "pch.h"
#include <iostream>

int main()
{
std::cout << "Die Deutsche Demokratische Republik\n";
}

Re: Нескольно простых вопросов о программировании AVR на Си.

Пн апр 01, 2019 09:40:19

Простой вопрос - могу ли я сдвинуть регистр (допустим порта вывода) какой то одной командой сдвига?

Или я сначала должен прочесть содержимое регистра, потом произвести модификацию содержимого, а потом записать регистр обратно?

PORTB=PORTB<<1;

Re: Нескольно простых вопросов о программировании AVR на Си.

Пн апр 01, 2019 10:26:56

Работа с регистром в данном случае должна произволдиться только методом чтение-модификация-запись

Re: Нескольно простых вопросов о программировании AVR на Си.

Пн апр 01, 2019 15:34:03

Т.е. в терминологии ASMа я должен сделать что то типа:
Код:
IN R16, PINB;
LSL R16;
OUT PORTB, R16;


А что нибудь вроде
Код:
LSL PORTB;

не прокатит?

Re: Нескольно простых вопросов о программировании AVR на Си.

Пн апр 01, 2019 16:05:10

не прокатит.
вроде я однозначно высказался...

Re: Нескольно простых вопросов о программировании AVR на Си.

Пн апр 01, 2019 17:09:00

PombI4 писал(а):Т.е. в терминологии ASMа я должен сделать что то типа: .....
Если PORTB не изменяется еще где-то не предсказуемо (например в обработчике прерываний), то можно PORTB не считывать, а хранить его копию в регистре (что для ЯВУ вроде как не по фэншую).

Re: Нескольно простых вопросов о программировании AVR на Си.

Пн апр 01, 2019 22:04:39

не прокатит.
вроде я однозначно высказался...

А чёй-то не прокатит? В avr вполне себе.
Код:
cbi PORTADDR,BIT

Или
Код:
sbi PORTADDR,BIT

Правда есть ограничение по адресации, I/O registers within the address
range $00 - $1F are directly bit-accessible using the SBI and CBI instructions.
Так что все что выше $1F, действительно, только чтение-модификация-запись.

А, звиняйте, что-то я про запись в порт подумал.

Re: Нескольно простых вопросов о программировании AVR на Си.

Сб апр 06, 2019 02:34:18

Есть ли какой мод под Visual Studio чтобы из под нее можно было для AVR писать, с симулятором разумеется и в стиле Visual Studio под с++

Re: Нескольно простых вопросов о программировании AVR на Си.

Сб апр 06, 2019 05:22:29

не уверен точно, но вроде изменение расширения файла с кодом в .cpp помогает

Re: Нескольно простых вопросов о программировании AVR на Си.

Сб апр 06, 2019 13:56:20

Есть ли какой мод под Visual Studio чтобы из под нее можно было для AVR писать, с симулятором разумеется и в стиле Visual Studio под с++

Дальше сугубо моё скромное мнение.
Просто писать - никто не мешает.
Компилировать - ищите как прикрутить avr-gcc как внешний компилятор.
Симулятор/отладка - лично я сильно сомневаюсь.
В общем, вряд-ли есть что-то готовое в духе того, что вы спрашиваете.

Re: Нескольно простых вопросов о программировании AVR на Си.

Сб апр 06, 2019 21:44:08

Всем привет. Подскажите по алгоритму вычисления скорости.
Я думал так: датчик срабатывает при прохождении 1 метра, соответственно раз в секунду смотрим счётчик получаем
скорость м/с, и умножив на 3,6 переводим в км/ч. Но результат измерения , как вы поняли будет , с шагом 3,6(3,6 7,2 10,8 и т.д.)
Чёт не соображу))

Re: Нескольно простых вопросов о программировании AVR на Си.

Вс апр 07, 2019 07:12:07

Askaryk писал(а):датчик срабатывает при прохождении 1 метра, соответственно раз в секунду смотрим счётчик
Не вижу связи между "1 метра" и "раз в секунду"

Если срабатывает датчик через каждый пройденный метр, то и замеряйте счётчик каждый метр. Получится, к примеру, 700 импульсов - одна скорость, или 702 - другая - вот и плавность результатов.

Re: Нескольно простых вопросов о программировании AVR на Си.

Вс апр 07, 2019 08:41:54

1) можно подгадывать интервал времени так, чтобы избавиться от дробных и неудобных коеффициентов...
2) не обязательно считать сколько импульсов прошло за единицу времени,иможно считать наоборот - сколько времени прошло между импульсами (не обязательно соседними).

Re: Нескольно простых вопросов о программировании AVR на Си.

Вс апр 07, 2019 11:43:49

Для WiseLord. Напишу подробнее.
Планирую собрать вело спидометр. Я хотел так:
- Датчик на колесе, один импульс на метр. Внешнее прерывание.
- Таймер, прерывание с периодом 1 сек.
- Раз в сек, смотрим количество импульсов. Соответственно это метров в секунду.
- Перевод в км/ч умножив на 3.6.
Результат скорость с шагом 3.6.

Для Ivanoff-iv. Не совсем понял, если смогу вычислить время между импульсами, как выразить скорость?

Re: Нескольно простых вопросов о программировании AVR на Си.

Вс апр 07, 2019 12:13:36

Если длинна окружности, на которой установлен датчик равна предположим метру, то если измерять время между импульсами от датчика можно вычислить скорость. Например, за 1 секунду у нас один импульс, то мы перемещаемся на 1 метр в секунду.

з.Ы. либо замерить путь пройденный между импульсами датчика, потом использовать это значение в вычислении скорости.
Последний раз редактировалось СКАЗОЧНИК Вс апр 07, 2019 12:31:13, всего редактировалось 1 раз.

Re: Нескольно простых вопросов о программировании AVR на Си.

Вс апр 07, 2019 12:31:27

V=S/t.
Либо t=const, тогда V пропорциональна S,
Либо S=const, тогда V пропорциональна 1/t.

Добавлено after 3 minutes 17 seconds:
во втором случае значение скорости обновляется при каждом обороте колеса, только стоит предусмотреть таймер, который при остановке колеса выставит 0 на дисплее.

Re: Нескольно простых вопросов о программировании AVR на Си.

Вс апр 07, 2019 14:48:49

Askaryk писал(а):Не совсем понял, если смогу вычислить время между импульсами, как выразить скорость?
Не надо вычислять. Эту переменную нужно измерять, а по ней вычислять скорость.
V=S/T
S[m]=L*Nx,
где L[m]-длина окружности колеса, Nx-целое число оборотов колеса за время измерения
T=to*nox=nox/Fo,
где to-период частоты тактирования Fo, nox-число периодов частоты тактирования за время прохождения Nx.
V[м/сек]=Fo*L*Nx/nox или
10*V[км/час]=36*Fo*L*Nx/nox.

Re: Нескольно простых вопросов о программировании AVR на Си.

Вс апр 07, 2019 14:58:05

Не пойму, зачем привязываться к этому "раз в секунду". Запускаете таймер на, к примеру, 1000Гц, Считаете количество тактов (разница между TCNT) между двумя прерываниями от датчика на колесе, и вот готов результат с прекрасной точностью.
Кстати, в моём велосипеде окружность колеса чуть более двух метров, 1м - это странная цифра.

Re: Нескольно простых вопросов о программировании AVR на Си.

Вс апр 07, 2019 15:01:28

Я просто привел пример... И цифры били для упрощенного счета. ))))

Re: Нескольно простых вопросов о программировании AVR на Си.

Ср апр 10, 2019 01:34:53

На каком языке этот код, что не принимает MVS-2017? Находит 6 ошибок.


Ваши ошибки не имеют никакого отношения к языку. Ошибка вызваны тем, что вы неправильно выставили настройки проекта в VS. Зайдите в настройки вашего проекта и выключите использование прекомпилированных заголовков. В таком маленьком проекте прекомпиляция заголовков не нужна.
Ответить