Нескольно простых вопросов о программировании AVR на Си.
- GubaRewa
- Это не хвост, это антенна
- Сообщения: 1306
- Зарегистрирован: Вс янв 15, 2012 13:58:35
- Откуда: Моздок
Re: Нескольно простых вопросов о программировании AVR на Си.
[uquote="ibragimnk",url="/forum/viewtopic.php?p=3554262#p3554262"]:( Сколько не пытался...[/uquote]
Сколько нИ пытался... Русский язык выучи сначала, а потом берись за C++!
Добавлено after 16 minutes 4 seconds:
[uquote="WiseLord",url="/forum/viewtopic.php?p=3566584#p3566584"]<iostream> - это C++. Пример с типичным "Hello world"[/uquote]
А с кодом самой MVS-2017 ошибок нет. Заменен только заголовок вместо"Хелло Ворлд!"
#include "pch.h"
#include <iostream>
int main()
{
std::cout << "Die Deutsche Demokratische Republik\n";
}
Сколько нИ пытался... Русский язык выучи сначала, а потом берись за C++!
Добавлено after 16 minutes 4 seconds:
[uquote="WiseLord",url="/forum/viewtopic.php?p=3566584#p3566584"]<iostream> - это C++. Пример с типичным "Hello world"[/uquote]
А с кодом самой MVS-2017 ошибок нет. Заменен только заголовок вместо"Хелло Ворлд!"
#include "pch.h"
#include <iostream>
int main()
{
std::cout << "Die Deutsche Demokratische Republik\n";
}
Я рожден при Сталине, когда паразиты были изгоями общества! 
Re: Нескольно простых вопросов о программировании AVR на Си.
Простой вопрос - могу ли я сдвинуть регистр (допустим порта вывода) какой то одной командой сдвига?
Или я сначала должен прочесть содержимое регистра, потом произвести модификацию содержимого, а потом записать регистр обратно?
PORTB=PORTB<<1;
Или я сначала должен прочесть содержимое регистра, потом произвести модификацию содержимого, а потом записать регистр обратно?
PORTB=PORTB<<1;
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Нескольно простых вопросов о программировании AVR на Си.
Работа с регистром в данном случае должна произволдиться только методом чтение-модификация-запись
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Нескольно простых вопросов о программировании AVR на Си.
Т.е. в терминологии ASMа я должен сделать что то типа:
А что нибудь вроде
не прокатит?
Код: Выделить всё
IN R16, PINB;
LSL R16;
OUT PORTB, R16;
А что нибудь вроде
Код: Выделить всё
LSL PORTB;
не прокатит?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Нескольно простых вопросов о программировании AVR на Си.
не прокатит.
вроде я однозначно высказался...
вроде я однозначно высказался...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Нескольно простых вопросов о программировании AVR на Си.
Если PORTB не изменяется еще где-то не предсказуемо (например в обработчике прерываний), то можно PORTB не считывать, а хранить его копию в регистре (что для ЯВУ вроде как не по фэншую).PombI4 писал(а):Т.е. в терминологии ASMа я должен сделать что то типа: .....
Re: Нескольно простых вопросов о программировании AVR на Си.
[uquote="ARV",url="/forum/viewtopic.php?p=3606479#p3606479"]не прокатит.
вроде я однозначно высказался...[/uquote]
А чёй-то не прокатит? В avr вполне себе.
Или
Правда есть ограничение по адресации, I/O registers within the address
range $00 - $1F are directly bit-accessible using the SBI and CBI instructions.
Так что все что выше $1F, действительно, только чтение-модификация-запись.
А, звиняйте, что-то я про запись в порт подумал.
вроде я однозначно высказался...[/uquote]
А чёй-то не прокатит? В 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 на Си.
Есть ли какой мод под Visual Studio чтобы из под нее можно было для AVR писать, с симулятором разумеется и в стиле Visual Studio под с++
- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: Нескольно простых вопросов о программировании AVR на Си.
не уверен точно, но вроде изменение расширения файла с кодом в .cpp помогает
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Re: Нескольно простых вопросов о программировании AVR на Си.
[uquote="jeka79",url="/forum/viewtopic.php?p=3609800#p3609800"]Есть ли какой мод под Visual Studio чтобы из под нее можно было для AVR писать, с симулятором разумеется и в стиле Visual Studio под с++[/uquote]
Дальше сугубо моё скромное мнение.
Просто писать - никто не мешает.
Компилировать - ищите как прикрутить avr-gcc как внешний компилятор.
Симулятор/отладка - лично я сильно сомневаюсь.
В общем, вряд-ли есть что-то готовое в духе того, что вы спрашиваете.
Дальше сугубо моё скромное мнение.
Просто писать - никто не мешает.
Компилировать - ищите как прикрутить avr-gcc как внешний компилятор.
Симулятор/отладка - лично я сильно сомневаюсь.
В общем, вряд-ли есть что-то готовое в духе того, что вы спрашиваете.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: Нескольно простых вопросов о программировании AVR на Си.
Всем привет. Подскажите по алгоритму вычисления скорости.
Я думал так: датчик срабатывает при прохождении 1 метра, соответственно раз в секунду смотрим счётчик получаем
скорость м/с, и умножив на 3,6 переводим в км/ч. Но результат измерения , как вы поняли будет , с шагом 3,6(3,6 7,2 10,8 и т.д.)
Чёт не соображу))
Я думал так: датчик срабатывает при прохождении 1 метра, соответственно раз в секунду смотрим счётчик получаем
скорость м/с, и умножив на 3,6 переводим в км/ч. Но результат измерения , как вы поняли будет , с шагом 3,6(3,6 7,2 10,8 и т.д.)
Чёт не соображу))
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Нескольно простых вопросов о программировании AVR на Си.
Не вижу связи между "1 метра" и "раз в секунду"Askaryk писал(а):датчик срабатывает при прохождении 1 метра, соответственно раз в секунду смотрим счётчик
Если срабатывает датчик через каждый пройденный метр, то и замеряйте счётчик каждый метр. Получится, к примеру, 700 импульсов - одна скорость, или 702 - другая - вот и плавность результатов.
- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: Нескольно простых вопросов о программировании AVR на Си.
1) можно подгадывать интервал времени так, чтобы избавиться от дробных и неудобных коеффициентов...
2) не обязательно считать сколько импульсов прошло за единицу времени,иможно считать наоборот - сколько времени прошло между импульсами (не обязательно соседними).
2) не обязательно считать сколько импульсов прошло за единицу времени,иможно считать наоборот - сколько времени прошло между импульсами (не обязательно соседними).
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Re: Нескольно простых вопросов о программировании AVR на Си.
Для WiseLord. Напишу подробнее.
Планирую собрать вело спидометр. Я хотел так:
- Датчик на колесе, один импульс на метр. Внешнее прерывание.
- Таймер, прерывание с периодом 1 сек.
- Раз в сек, смотрим количество импульсов. Соответственно это метров в секунду.
- Перевод в км/ч умножив на 3.6.
Результат скорость с шагом 3.6.
Для Ivanoff-iv. Не совсем понял, если смогу вычислить время между импульсами, как выразить скорость?
Планирую собрать вело спидометр. Я хотел так:
- Датчик на колесе, один импульс на метр. Внешнее прерывание.
- Таймер, прерывание с периодом 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 на Си.
V=S/t.
Либо t=const, тогда V пропорциональна S,
Либо S=const, тогда V пропорциональна 1/t.
Добавлено after 3 minutes 17 seconds:
во втором случае значение скорости обновляется при каждом обороте колеса, только стоит предусмотреть таймер, который при остановке колеса выставит 0 на дисплее.
Либо t=const, тогда V пропорциональна S,
Либо S=const, тогда V пропорциональна 1/t.
Добавлено after 3 minutes 17 seconds:
во втором случае значение скорости обновляется при каждом обороте колеса, только стоит предусмотреть таймер, который при остановке колеса выставит 0 на дисплее.
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Re: Нескольно простых вопросов о программировании AVR на Си.
Не надо вычислять. Эту переменную нужно измерять, а по ней вычислять скорость.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 на Си.
Не пойму, зачем привязываться к этому "раз в секунду". Запускаете таймер на, к примеру, 1000Гц, Считаете количество тактов (разница между TCNT) между двумя прерываниями от датчика на колесе, и вот готов результат с прекрасной точностью.
Кстати, в моём велосипеде окружность колеса чуть более двух метров, 1м - это странная цифра.
Кстати, в моём велосипеде окружность колеса чуть более двух метров, 1м - это странная цифра.
- СКАЗОЧНИК
- Идёт направо - песнь заводит, Налево - сказку говорит.
- Сообщения: 5000
- Зарегистрирован: Чт апр 21, 2011 17:55:50
- Откуда: Иркутск
Re: Нескольно простых вопросов о программировании AVR на Си.
Я просто привел пример... И цифры били для упрощенного счета. ))))
Станислав
- KorbenDallas
- Встал на лапы
- Сообщения: 93
- Зарегистрирован: Пн окт 31, 2016 06:23:19
Re: Нескольно простых вопросов о программировании AVR на Си.
[uquote="GubaRewa",url="/forum/viewtopic.php?p=3566580#p3566580"]На каком языке этот код, что не принимает MVS-2017? Находит 6 ошибок.[/uquote]
Ваши ошибки не имеют никакого отношения к языку. Ошибка вызваны тем, что вы неправильно выставили настройки проекта в VS. Зайдите в настройки вашего проекта и выключите использование прекомпилированных заголовков. В таком маленьком проекте прекомпиляция заголовков не нужна.
Ваши ошибки не имеют никакого отношения к языку. Ошибка вызваны тем, что вы неправильно выставили настройки проекта в VS. Зайдите в настройки вашего проекта и выключите использование прекомпилированных заголовков. В таком маленьком проекте прекомпиляция заголовков не нужна.
