Радиоуправление. Переходим на МК.
- mixon46
- Говорящий с текстолитом
- Сообщения: 1644
- Зарегистрирован: Сб фев 18, 2012 15:42:29
- Откуда: Курск
Re: Радиоуправление: делаем сами.
дак я не про тини говорю. а про мегу 8. я на ней металлоискатель клон собирал. и очень меленькое и полезное устройство. порадовало вообще)))
Re: Радиоуправление: делаем сами.
В ATmega8 куча всего)) половина не используется. одних АПЦ 6 штук )) куда столько))
- АлександрЛ
- Друг Кота
- Сообщения: 43768
- Зарегистрирован: Пн ноя 30, 2009 03:00:01
- Откуда: Нерезиновая
Re: Радиоуправление: делаем сами.
Ну. и что? У меня в одном устройстве из всей Мега48 используется 1 АЦП, и 3 выхода... Если это один из самых дешевых МК, что с того?roman.com писал(а):В ATmega8 куча всего))
- mixon46
- Говорящий с текстолитом
- Сообщения: 1644
- Зарегистрирован: Сб фев 18, 2012 15:42:29
- Откуда: Курск
Re: Радиоуправление: делаем сами.
да ничего с того. просто он о том что много напихано ненужного. лучше бы тактовую частоту подняли чем наворотов всяких. была бы тактовая 25-30 мгц. нормальные вещи можно было лепить. осцилографы например. хмега вроде 25 мгц работает
так а что же мне потребуется для написания программы. codeVishion avr. ну и компилятор нужен или нет? какое нибудь пособие по языку C для авр. программатор уже есть 200/300 что через com порт. elkat давал мне совет почитать книгу белова по изучению си и авр. есть такая книга. я даже сам бегущий огонь делал а потом компилировал как то не помню и прошивал. понравилось. интересно
так а что же мне потребуется для написания программы. codeVishion avr. ну и компилятор нужен или нет? какое нибудь пособие по языку C для авр. программатор уже есть 200/300 что через com порт. elkat давал мне совет почитать книгу белова по изучению си и авр. есть такая книга. я даже сам бегущий огонь делал а потом компилировал как то не помню и прошивал. понравилось. интересно
Re: Радиоуправление: делаем сами.
По справочнику мега до 20Мгц... хотя теоретически можно разогнать и чуть больше. 25 Мгц - это тоже мало для реальных вещей. Тут нужен уже процессор двухядерный с частотой 3...4 Ггц ))) - получится отличный осциллограф))) МК созданы для других целей - делать маленькие схемки с малым потреблением, от батареек))). Потребление МК еще зависит от тактовой частоты.
codeVishion- это и есть программа-компилятор. Она читает нашу программу на Си (понятную нам) и переводит в 16-ричный машинный код, понятный микроконтроллеру.
Качаем бесплатно codeVishion.
1-Создаём проект в отдельной папке.
2-Выбираем тип МК из списка и задаём начальные настройки МК... частоту ...порты... и т.д.
3-пишем программу на Си, используя готовые операторы слева...
4-нажимаем кнопочку "компилируем". codeVishion - передодит нашу программу в машинный код.
5-нажимаем кнопочку "прошить". Выбираем из списка программатор. подключаем МК к компьютеру и жмём ОК.

Сидим и наслаждаемся работой МК. За нас всё сделала программа codeVishion. Вот и всё.
codeVishion- это и есть программа-компилятор. Она читает нашу программу на Си (понятную нам) и переводит в 16-ричный машинный код, понятный микроконтроллеру.
Качаем бесплатно codeVishion.
1-Создаём проект в отдельной папке.
2-Выбираем тип МК из списка и задаём начальные настройки МК... частоту ...порты... и т.д.
3-пишем программу на Си, используя готовые операторы слева...
4-нажимаем кнопочку "компилируем". codeVishion - передодит нашу программу в машинный код.
5-нажимаем кнопочку "прошить". Выбираем из списка программатор. подключаем МК к компьютеру и жмём ОК.
Сидим и наслаждаемся работой МК. За нас всё сделала программа codeVishion. Вот и всё.

Re: Радиоуправление. Переходим на МК.
Поищу движки с принтеров, только смотрел по характеристикам они ток кушают порядком, а тут приходится ток немного экономить. Аккома кораблика 12В – 7- 12 А/Ч, будет стоять гелевая, на пульте посмотрим 7,2В или 9В. Индикатор заряда с дискретностью 100%, 50%, 25%, 0%, вполне достаточно. Для гелиевых полный заряд 14,2В насколько помню , глубокий разряд 10,5В, и того до 13,8 – 100%, 12,4 -- 50%, 11,2 -- 25%, 10,8 -- 0% где то примерно. Понятно что на ацп через постоянный делитель допустим на 4, получаем 3,45В, 3,1В, 2,8В, 2,7В примерно так.
- НАПАЛМ
- Это не хвост, это антенна
- Сообщения: 1314
- Зарегистрирован: Пт ноя 27, 2009 19:47:13
- Откуда: Казань
Re: Радиоуправление. Переходим на МК.
Обязательно воспользуюсь вашими наработками в плане обработки кода сигнала, когда сяду делать квадрик. Сейчас занимаюсь разработкой SDR системы, которая здесь тоже пригодиться.
Удачи в вашем начинании, буду следить за темой.
Удачи в вашем начинании, буду следить за темой.

- НАПАЛМ
- Это не хвост, это антенна
- Сообщения: 1314
- Зарегистрирован: Пт ноя 27, 2009 19:47:13
- Откуда: Казань
Re: Радиоуправление. Переходим на МК.
Изучаем Verilog и ПЛИС для начала. Для экпериментов с приемом уже спаяна плата с АЦП ADC12040.
- mixon46
- Говорящий с текстолитом
- Сообщения: 1644
- Зарегистрирован: Сб фев 18, 2012 15:42:29
- Откуда: Курск
Re: Радиоуправление: делаем сами.
править не могу прошлое сообщение. что то не фига я не разобрался с этим codeVishion avr. там если проект делаешь то он в новом окне открывается. если другое выбираешь (не проект что) то можно выбирать операторы справа. компилировать почему то нельзя. я не разбираюсь короче что да как

Последний раз редактировалось mixon46 Ср ноя 26, 2014 21:12:27, всего редактировалось 2 раза.
Re: Радиоуправление: делаем сами.
Всё правильно. После всех настроек МК, необходимо сгенерировать начальные настройки. Нажимаем File. В выпадающей вкладке выбираем "сгенерировать наши настройки":mixon46 писал(а):что то не фига я не разобрался с этим codeVishion avr.
Затем открываются три окна (одно за другим). Пишем там названия наших файлов (проект):
1-
2-
3-
Получаем новый проект.
На диске компьютера должно быть три файла:
Всё! Теперь можно писать свою программу внизу:

- mixon46
- Говорящий с текстолитом
- Сообщения: 1644
- Зарегистрирован: Сб фев 18, 2012 15:42:29
- Откуда: Курск
Re: Радиоуправление: делаем сами.
ну понял. теперь попробую что нибудь сделать если получится конечно)
вот тут скомпиллировал или нет. куда сохранилось то это *.exe? и подскажи пожалуйста где по операторам можно найти инфу. и по регистрам мк. какие и как подключать.
чего у меня ошибки? вроде все правильно и точки и точки с запятыми. а не компилирует
вот например
void main(void)
это главная с начала строка. с нее начинается программа. это я понял.
PORTB=0xFF
DDRB=0xFF
инициализация порта B. что значит 0xFF не очень понятно. хотя в переводе с шестнадцатеричной системы в десятичную это будет число 255. что по сути является логической единицей. вообщем говоря это подключение порта B как я понял
PORTD=0x7F
DDRD=0x00
инициализация порта D. почему тут 0x7F тоже загадка. в переводе в десятичную это 127. ну хватит пока. и так непоняток полным полно))
вот тут скомпиллировал или нет. куда сохранилось то это *.exe? и подскажи пожалуйста где по операторам можно найти инфу. и по регистрам мк. какие и как подключать.
вот например
void main(void)
это главная с начала строка. с нее начинается программа. это я понял.
PORTB=0xFF
DDRB=0xFF
инициализация порта B. что значит 0xFF не очень понятно. хотя в переводе с шестнадцатеричной системы в десятичную это будет число 255. что по сути является логической единицей. вообщем говоря это подключение порта B как я понял
PORTD=0x7F
DDRD=0x00
инициализация порта D. почему тут 0x7F тоже загадка. в переводе в десятичную это 127. ну хватит пока. и так непоняток полным полно))
- mixon46
- Говорящий с текстолитом
- Сообщения: 1644
- Зарегистрирован: Сб фев 18, 2012 15:42:29
- Откуда: Курск
Re: Радиоуправление. Переходим на МК.
кто подскажет где искать скомпиллированый файл в codevishion avr?
- svic
- Друг Кота
- Сообщения: 5837
- Зарегистрирован: Ср ноя 17, 2010 23:10:55
- Откуда: Ижевск LO66NU
- Контактная информация:
Re: Радиоуправление. Переходим на МК.
Тут спросите. Обычно скомпилированный файл в той-же директории, что и исходник.
В начале жизнь мучает вопросами, в конце - ответами...
Re: Радиоуправление: делаем сами.
Красным цветом слево компилятор codeVishion пишет ошибки в программе. Причём указывает в какой строчке и какая ошибка...
Если хочешь чтоб тебе подсказали, вылкадывай полную программу (исходный код). Иначе ничего сказать никто не сможет.
Регистр DDRB ввода-вывода МК.
Регистр DDRB=0xFF тоже самое что DDRB=0b11111111, где 11111111 - это номера портов (7...0), т.е. номера выводов МК:
DDRB=0b00000001 - порт 0 (вывод МК №0)
DDRB=0b00000010 - порт 1 (вывод МК №1)
DDRB=0b00000100 - порт 2 (вывод МК №2)
...
Т.е. - порты 0,1,2,3,4,5,6,7 (выводы МК 0,1,2,3,4,5,6,7) - настроить на выход.
DDRB=0xFF - это значит настроить все выводы порта "B" на "выход".
Регистр PORTB - управление портом вкл.-выкл.МК. Т.е. подключить ножку МК к "+" питания или на "массу". ))
Регистр PORTB=0xFF тоже самое что PORTB=0b11111111. , где 11111111 - это номера портов (7...0), т.е. номера выводов МК:
PORTB=0b00000001 - подать на ножку №0 "+" 5V.
PORTB=0b00000010 - подать на ножку №1 "+" 5V.
PORTB=0b00000100 - подать на ножку №2 "+" 5V.
...
PORTB=0xFF - это значит на все порты 0,1,2,3,4,5,6,7 (выводы МК 0,1,2,3,4,5,6,7) - подать "+" 5V.
DDRD=0x00 - тоже самое что DDRB=0b00000000 - Настроитьвсе выводы порта "D" (выводы МК 0,1,2,3,4,5,6,7) на "вход".
PORTD=0x7F - тоже самое что PORTD=0b01111111 - (7=0111, F=1111, т.е. 7F =01111111). Т.е. - на порты 0,1,2,3,4,5,6 (выводы МК 0,1,2,3,4,5,6) - подать "+" 5V, через резистор около 30 кОм...
а порт 7 (вывод МК 7) - никуда не подключать. Т.е. вывод просто "болтается в воздухе". (На самом деле подключён в затвору транзистра, с высоким входным сопротивлением).
Принцип работы МК "на пальцах"
Хоть бы почитал "основы" работы МК... например тут http://radiokot.ru/start/mcu_fpga/avr/06/ но лучше посмотреть на Ютуб. http://www.youtube.com/watch?v=bLLttzXHHBw#t=423 таких видео очень много.
.....
Вот хорошее видео http://www.youtube.com/watch?v=X-RHniTUnlg мне понравилось
Если хочешь чтоб тебе подсказали, вылкадывай полную программу (исходный код). Иначе ничего сказать никто не сможет.
mixon46 писал(а):инициализация порта B. что значит 0xFF не очень понятно.
Регистр DDRB ввода-вывода МК.
Регистр DDRB=0xFF тоже самое что DDRB=0b11111111, где 11111111 - это номера портов (7...0), т.е. номера выводов МК:
DDRB=0b00000001 - порт 0 (вывод МК №0)
DDRB=0b00000010 - порт 1 (вывод МК №1)
DDRB=0b00000100 - порт 2 (вывод МК №2)
...
Т.е. - порты 0,1,2,3,4,5,6,7 (выводы МК 0,1,2,3,4,5,6,7) - настроить на выход.
DDRB=0xFF - это значит настроить все выводы порта "B" на "выход".
Регистр PORTB - управление портом вкл.-выкл.МК. Т.е. подключить ножку МК к "+" питания или на "массу". ))
Регистр PORTB=0xFF тоже самое что PORTB=0b11111111. , где 11111111 - это номера портов (7...0), т.е. номера выводов МК:
PORTB=0b00000001 - подать на ножку №0 "+" 5V.
PORTB=0b00000010 - подать на ножку №1 "+" 5V.
PORTB=0b00000100 - подать на ножку №2 "+" 5V.
...
PORTB=0xFF - это значит на все порты 0,1,2,3,4,5,6,7 (выводы МК 0,1,2,3,4,5,6,7) - подать "+" 5V.
DDRD=0x00 - тоже самое что DDRB=0b00000000 - Настроитьвсе выводы порта "D" (выводы МК 0,1,2,3,4,5,6,7) на "вход".
PORTD=0x7F - тоже самое что PORTD=0b01111111 - (7=0111, F=1111, т.е. 7F =01111111). Т.е. - на порты 0,1,2,3,4,5,6 (выводы МК 0,1,2,3,4,5,6) - подать "+" 5V, через резистор около 30 кОм...
а порт 7 (вывод МК 7) - никуда не подключать. Т.е. вывод просто "болтается в воздухе". (На самом деле подключён в затвору транзистра, с высоким входным сопротивлением).
Принцип работы МК "на пальцах"
Хоть бы почитал "основы" работы МК... например тут http://radiokot.ru/start/mcu_fpga/avr/06/ но лучше посмотреть на Ютуб. http://www.youtube.com/watch?v=bLLttzXHHBw#t=423 таких видео очень много.
Вот хорошее видео http://www.youtube.com/watch?v=X-RHniTUnlg мне понравилось
- mixon46
- Говорящий с текстолитом
- Сообщения: 1644
- Зарегистрирован: Сб фев 18, 2012 15:42:29
- Откуда: Курск
Re: Радиоуправление. Переходим на МК.
я тут запутался с программой. мне нужно сделать так что бы portd.0 работал на ввод информации. если на нем единица то на portb.0 должна быть единица и она должна быть некоторое время. время задержки. код примерно такой но он не работает почему то
{
if (pind.0==1) {} \\опрашиваем порт на наличие единицы. если истина то выполняем набор операторов 1. если нет то зациклены на одном месте.
portb.0=1;
delay_ms (200); \\задерка горения светодиода после отпускания кнопки.
}
только я не могу понять почему не работает. и не пойму как portd на ввод поставить. еще же нужно и нагрузочный резистор подключить. а как
{
if (pind.0==1) {} \\опрашиваем порт на наличие единицы. если истина то выполняем набор операторов 1. если нет то зациклены на одном месте.
portb.0=1;
delay_ms (200); \\задерка горения светодиода после отпускания кнопки.
}
только я не могу понять почему не работает. и не пойму как portd на ввод поставить. еще же нужно и нагрузочный резистор подключить. а как
Re: Радиоуправление. Переходим на МК.
ЭЭЭ ... тут надо точней писать алгоритм...
1- порт пишется БОЛЬШИМИ буквами.
2- нагрузочный резистор подключить ??? что за резистро? В МК есть внутренний. Его называют подтягивающий резистор. PORT.0 - висит в воздухе, PORT.1 между +5V и ножкой включается резистор 30 кОм.
3-для работы delay_ms (200); нужно подключить библиотеку-файл в самом верху.
Программа выполняется один раз:
----------
#include <mega8.h>
#include <delay.h>
//////////////////////////////////////////////////// настройка:
void main(void)
{
DDRD.0=0; // PORT.0 - вход
PORTD.0=0; // PORT.0 - висит в воздухе
DDRB.0=1; // PORTB - выход
PORTB.0=0; // PORTB - на массе
//////////////////////////////////////////////////// программа:
while (PIND.0==0) { // опрашиваем порт на наличие единицы. если нет то зациклены на одном месте.
};
PORTB.0=1; // вкл. диод.
delay_ms (200); // задерка горения светодиода 0,2 секунды.
PORTB.0=0; // выкл. диод.
} // конец программы. Программа выполняется один раз.
----------
Настройка портов MK. Работа компилятора codeVishion. Видео: http://www.youtube.com/watch?v=WcIZFuq4Iaw
1- порт пишется БОЛЬШИМИ буквами.
2- нагрузочный резистор подключить ??? что за резистро? В МК есть внутренний. Его называют подтягивающий резистор. PORT.0 - висит в воздухе, PORT.1 между +5V и ножкой включается резистор 30 кОм.
3-для работы delay_ms (200); нужно подключить библиотеку-файл в самом верху.
Программа выполняется один раз:
----------
#include <mega8.h>
#include <delay.h>
//////////////////////////////////////////////////// настройка:
void main(void)
{
DDRD.0=0; // PORT.0 - вход
PORTD.0=0; // PORT.0 - висит в воздухе
DDRB.0=1; // PORTB - выход
PORTB.0=0; // PORTB - на массе
//////////////////////////////////////////////////// программа:
while (PIND.0==0) { // опрашиваем порт на наличие единицы. если нет то зациклены на одном месте.
};
PORTB.0=1; // вкл. диод.
delay_ms (200); // задерка горения светодиода 0,2 секунды.
PORTB.0=0; // выкл. диод.
} // конец программы. Программа выполняется один раз.
----------
Настройка портов MK. Работа компилятора codeVishion. Видео: http://www.youtube.com/watch?v=WcIZFuq4Iaw

- Вложения
-
- 1.c
- (646 байт) 418 скачиваний
Последний раз редактировалось roman.com Сб ноя 29, 2014 23:10:17, всего редактировалось 2 раза.
- mixon46
- Говорящий с текстолитом
- Сообщения: 1644
- Зарегистрирован: Сб фев 18, 2012 15:42:29
- Откуда: Курск
Re: Радиоуправление. Переходим на МК.
работает. но не работает если не поставить резистор 10ком между кнопкой и портом pd.o на землю. а нужно сделать без резистора. что бы через кнопку в порт и на подтягивающий резистор. а еще я вынес за скобку while (1) и программа стала зацикленной. расскажи мне как сделать так что бы на семисигментник по очереди шел подсчет 1,2,3,4,5,6,7,8,9,0 и заново. это что то типо по очереди 0b0001001 и 0b0010010 и так далее выводить цифру на сигментик. надо бы попробовать простенький частотомер сделать. ввести переменную множитель и замерять длинну импульса а потом умножать на переменную ( коэффициент) и выводить полученное на сигментик. или пару сигментов. допустим 4 сигмента. чувствую будет туго. но попробовать нужно
получилось перебирать цыфры на сигменте. это не так уж и трудно. куда сложнее сделать несколько сигментов и подсчет десятков и сотен. я сейчас с этим разбираюсь. ну думаю сам не смогу.
а программа выглядет так
{
while (1)
{
portb=0b11111100;
delay_ms (200);
portb=0b00000110;
delay_ms (200);
и так далее до 9
}
}
как бы добавить к этому десятки и сотни использовав динамическое отображение. щас вот думаю. надо бы алгоритм составить. ладно поразмышляем.
1. при нажатии кнопки включается счет. блин наверно тут нужно вводить переменную. каждые 100 миллисикунд что является 0.1 сек. или 1/10 сек мы прибавляем +1 и выводим соответствующее число на сигмент. при этом проверяем дошло ли до 10 если дошло то вводим следующий десяток и начинаем счет заново. так же проверяем и десятки и прибавляем каждый следующий десяток к тому десятку что был. при достижении 6 десятков секунд вводим минуты. а вообще я запутался уже
получилось перебирать цыфры на сигменте. это не так уж и трудно. куда сложнее сделать несколько сигментов и подсчет десятков и сотен. я сейчас с этим разбираюсь. ну думаю сам не смогу.
а программа выглядет так
{
while (1)
{
portb=0b11111100;
delay_ms (200);
portb=0b00000110;
delay_ms (200);
и так далее до 9
}
}
как бы добавить к этому десятки и сотни использовав динамическое отображение. щас вот думаю. надо бы алгоритм составить. ладно поразмышляем.
1. при нажатии кнопки включается счет. блин наверно тут нужно вводить переменную. каждые 100 миллисикунд что является 0.1 сек. или 1/10 сек мы прибавляем +1 и выводим соответствующее число на сигмент. при этом проверяем дошло ли до 10 если дошло то вводим следующий десяток и начинаем счет заново. так же проверяем и десятки и прибавляем каждый следующий десяток к тому десятку что был. при достижении 6 десятков секунд вводим минуты. а вообще я запутался уже
Re: Радиоуправление. Переходим на МК.
с семисигментниками я не работал. Можно сесть и подумать))) Я сейчас делаю кораблик
Порт работает так:

Если хотим подключить к МК кнопку, то необходимо в настройках порта подкючить подтягивающий резистор. Транзистор будет открыт, пок ане нажмём кнопку ))). Иначе кнопка на землю работать не будет.
Ничё не понял...mixon46 писал(а):не работает если не поставить резистор 10ком между кнопкой и портом pd.o на землю...
Порт работает так:
Если хотим подключить к МК кнопку, то необходимо в настройках порта подкючить подтягивающий резистор. Транзистор будет открыт, пок ане нажмём кнопку ))). Иначе кнопка на землю работать не будет.
- mixon46
- Говорящий с текстолитом
- Сообщения: 1644
- Зарегистрирован: Сб фев 18, 2012 15:42:29
- Откуда: Курск
Re: Радиоуправление. Переходим на МК.
проверь свой код в протеусе. если подашь питание на PD.O то светодиод загорится и не потухнет через определенное время. а если между кнопкой и этим портом поставить резистор на землю то потухнет через то самое время задержки. ладно я с телефона сейчас схему не могу показать. меня сейчас волнует как сделать так что бы можно было подключить два сигмента и просто что бы мк считал числа. считал единицы и десятки и выводил на сигменты. и надо так что бы индикация была динамической. тоесть PORTD.1 и PORTD.2 вместе с портом PORTB.0-6 поочередно по средствам ключей выводили информацию на сигменты. надеюсь ты понял))