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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
GubaRewa
Это не хвост, это антенна
Сообщения: 1306
Зарегистрирован: Вс янв 15, 2012 13:58:35
Откуда: Моздок

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

Сообщение GubaRewa »

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


Сколько нИ пытался... Русский язык выучи сначала, а потом берись за 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";
}
Я рожден при Сталине, когда паразиты были изгоями общества! :))
PombI4
Открыл глаза
Сообщения: 79
Зарегистрирован: Пн дек 19, 2016 10:20:28

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

Сообщение PombI4 »

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

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

PORTB=PORTB<<1;
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

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

Мой уютный бложик... заходите!
PombI4
Открыл глаза
Сообщения: 79
Зарегистрирован: Пн дек 19, 2016 10:20:28

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

Сообщение PombI4 »

Т.е. в терминологии ASMа я должен сделать что то типа:

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

IN R16, PINB;
LSL R16;
OUT PORTB, R16;


А что нибудь вроде

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

LSL PORTB;

не прокатит?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

не прокатит.
вроде я однозначно высказался...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

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

Сообщение Z_h_e »

PombI4 писал(а):Т.е. в терминологии ASMа я должен сделать что то типа: .....
Если PORTB не изменяется еще где-то не предсказуемо (например в обработчике прерываний), то можно PORTB не считывать, а хранить его копию в регистре (что для ЯВУ вроде как не по фэншую).
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Markusha
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Чт июл 23, 2015 17:33:48

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

Сообщение Markusha »

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

А чёй-то не прокатит? В 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, действительно, только чтение-модификация-запись.

А, звиняйте, что-то я про запись в порт подумал.
Аватара пользователя
jeka79
Встал на лапы
Сообщения: 104
Зарегистрирован: Сб янв 07, 2017 10:14:29
Откуда: Н-Новгород

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

Сообщение jeka79 »

Есть ли какой мод под Visual Studio чтобы из под нее можно было для AVR писать, с симулятором разумеется и в стиле Visual Studio под с++
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

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

Сообщение Ivanoff-iv »

не уверен точно, но вроде изменение расширения файла с кодом в .cpp помогает
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

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

Сообщение Kavka »

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

Дальше сугубо моё скромное мнение.
Просто писать - никто не мешает.
Компилировать - ищите как прикрутить avr-gcc как внешний компилятор.
Симулятор/отладка - лично я сильно сомневаюсь.
В общем, вряд-ли есть что-то готовое в духе того, что вы спрашиваете.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Аватара пользователя
Askaryk
Родился
Сообщения: 6
Зарегистрирован: Сб мар 23, 2019 21:47:26

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

Сообщение Askaryk »

Всем привет. Подскажите по алгоритму вычисления скорости.
Я думал так: датчик срабатывает при прохождении 1 метра, соответственно раз в секунду смотрим счётчик получаем
скорость м/с, и умножив на 3,6 переводим в км/ч. Но результат измерения , как вы поняли будет , с шагом 3,6(3,6 7,2 10,8 и т.д.)
Чёт не соображу))
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

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

Если срабатывает датчик через каждый пройденный метр, то и замеряйте счётчик каждый метр. Получится, к примеру, 700 импульсов - одна скорость, или 702 - другая - вот и плавность результатов.
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

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

Сообщение Ivanoff-iv »

1) можно подгадывать интервал времени так, чтобы избавиться от дробных и неудобных коеффициентов...
2) не обязательно считать сколько импульсов прошло за единицу времени,иможно считать наоборот - сколько времени прошло между импульсами (не обязательно соседними).
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Аватара пользователя
Askaryk
Родился
Сообщения: 6
Зарегистрирован: Сб мар 23, 2019 21:47:26

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

Сообщение Askaryk »

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

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

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

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

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

з.Ы. либо замерить путь пройденный между импульсами датчика, потом использовать это значение в вычислении скорости.
Последний раз редактировалось СКАЗОЧНИК Вс апр 07, 2019 12:31:13, всего редактировалось 1 раз.
Станислав
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

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

Сообщение Ivanoff-iv »

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

Добавлено after 3 minutes 17 seconds:
во втором случае значение скорости обновляется при каждом обороте колеса, только стоит предусмотреть таймер, который при остановке колеса выставит 0 на дисплее.
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
akl
Друг Кота
Сообщения: 4443
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

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.
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

Не пойму, зачем привязываться к этому "раз в секунду". Запускаете таймер на, к примеру, 1000Гц, Считаете количество тактов (разница между TCNT) между двумя прерываниями от датчика на колесе, и вот готов результат с прекрасной точностью.
Кстати, в моём велосипеде окружность колеса чуть более двух метров, 1м - это странная цифра.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

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

Я просто привел пример... И цифры били для упрощенного счета. ))))
Станислав
Аватара пользователя
KorbenDallas
Встал на лапы
Сообщения: 93
Зарегистрирован: Пн окт 31, 2016 06:23:19

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

Сообщение KorbenDallas »

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


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

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