да ничего с того. просто он о том что много напихано ненужного. лучше бы тактовую частоту подняли чем наворотов всяких. была бы тактовая 25-30 мгц. нормальные вещи можно было лепить. осцилографы например. хмега вроде 25 мгц работает
так а что же мне потребуется для написания программы. codeVishion avr. ну и компилятор нужен или нет? какое нибудь пособие по языку C для авр. программатор уже есть 200/300 что через com порт. elkat давал мне совет почитать книгу белова по изучению си и авр. есть такая книга. я даже сам бегущий огонь делал а потом компилировал как то не помню и прошивал. понравилось. интересно
По справочнику мега до 20Мгц... хотя теоретически можно разогнать и чуть больше. 25 Мгц - это тоже мало для реальных вещей. Тут нужен уже процессор двухядерный с частотой 3...4 Ггц ))) - получится отличный осциллограф))) МК созданы для других целей - делать маленькие схемки с малым потреблением, от батареек))). Потребление МК еще зависит от тактовой частоты.
codeVishion- это и есть программа-компилятор. Она читает нашу программу на Си (понятную нам) и переводит в 16-ричный машинный код, понятный микроконтроллеру. Качаем бесплатно codeVishion. 1-Создаём проект в отдельной папке. 2-Выбираем тип МК из списка и задаём начальные настройки МК... частоту ...порты... и т.д. 3-пишем программу на Си, используя готовые операторы слева... 4-нажимаем кнопочку "компилируем". codeVishion - передодит нашу программу в машинный код. 5-нажимаем кнопочку "прошить". Выбираем из списка программатор. подключаем МК к компьютеру и жмём ОК.
Сидим и наслаждаемся работой МК. За нас всё сделала программа codeVishion. Вот и всё.
Поищу движки с принтеров, только смотрел по характеристикам они ток кушают порядком, а тут приходится ток немного экономить. Аккома кораблика 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В примерно так.
Обязательно воспользуюсь вашими наработками в плане обработки кода сигнала, когда сяду делать квадрик. Сейчас занимаюсь разработкой SDR системы, которая здесь тоже пригодиться. Удачи в вашем начинании, буду следить за темой.
занимаюсь разработкой SDR системы, которая здесь тоже пригодиться
Интересно. Каким образом?
Такс... Вот такую можно собрать схему в перспективе: Но это потом. Сложный проект нужно начинать с простого. Для начала просто соберём простенький пульт без обратной связи...
править не могу прошлое сообщение. что то не фига я не разобрался с этим codeVishion avr. там если проект делаешь то он в новом окне открывается. если другое выбираешь (не проект что) то можно выбирать операторы справа. компилировать почему то нельзя. я не разбираюсь короче что да как
Последний раз редактировалось mixon46 Ср ноя 26, 2014 21:12:27, всего редактировалось 2 раз(а).
что то не фига я не разобрался с этим codeVishion avr.
Всё правильно. После всех настроек МК, необходимо сгенерировать начальные настройки. Нажимаем File. В выпадающей вкладке выбираем "сгенерировать наши настройки": Затем открываются три окна (одно за другим). Пишем там названия наших файлов (проект): 1- 2- 3- Получаем новый проект. На диске компьютера должно быть три файла: Всё! Теперь можно писать свою программу внизу:
ну понял. теперь попробую что нибудь сделать если получится конечно)
вот тут скомпиллировал или нет. куда сохранилось то это *.exe? и подскажи пожалуйста где по операторам можно найти инфу. и по регистрам мк. какие и как подключать.чего у меня ошибки? вроде все правильно и точки и точки с запятыми. а не компилирует
вот например
void main(void)
это главная с начала строка. с нее начинается программа. это я понял.
PORTB=0xFF DDRB=0xFF
инициализация порта B. что значит 0xFF не очень понятно. хотя в переводе с шестнадцатеричной системы в десятичную это будет число 255. что по сути является логической единицей. вообщем говоря это подключение порта B как я понял
PORTD=0x7F DDRD=0x00
инициализация порта D. почему тут 0x7F тоже загадка. в переводе в десятичную это 127. ну хватит пока. и так непоняток полным полно))
Красным цветом слево компилятор codeVishion пишет ошибки в программе. Причём указывает в какой строчке и какая ошибка... Если хочешь чтоб тебе подсказали, вылкадывай полную программу (исходный код). Иначе ничего сказать никто не сможет.
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) - никуда не подключать. Т.е. вывод просто "болтается в воздухе". (На самом деле подключён в затвору транзистра, с высоким входным сопротивлением).
я тут запутался с программой. мне нужно сделать так что бы portd.0 работал на ввод информации. если на нем единица то на portb.0 должна быть единица и она должна быть некоторое время. время задержки. код примерно такой но он не работает почему то
{ if (pind.0==1) {} \\опрашиваем порт на наличие единицы. если истина то выполняем набор операторов 1. если нет то зациклены на одном месте. portb.0=1; delay_ms (200); \\задерка горения светодиода после отпускания кнопки. }
только я не могу понять почему не работает. и не пойму как portd на ввод поставить. еще же нужно и нагрузочный резистор подключить. а как
ЭЭЭ ... тут надо точней писать алгоритм... 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; // выкл. диод. } // конец программы. Программа выполняется один раз. ----------
работает. но не работает если не поставить резистор 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 десятков секунд вводим минуты. а вообще я запутался уже
с семисигментниками я не работал. Можно сесть и подумать))) Я сейчас делаю кораблик
mixon46 писал(а):
не работает если не поставить резистор 10ком между кнопкой и портом pd.o на землю...
Ничё не понял... Порт работает так: Если хотим подключить к МК кнопку, то необходимо в настройках порта подкючить подтягивающий резистор. Транзистор будет открыт, пок ане нажмём кнопку ))). Иначе кнопка на землю работать не будет.
проверь свой код в протеусе. если подашь питание на PD.O то светодиод загорится и не потухнет через определенное время. а если между кнопкой и этим портом поставить резистор на землю то потухнет через то самое время задержки. ладно я с телефона сейчас схему не могу показать. меня сейчас волнует как сделать так что бы можно было подключить два сигмента и просто что бы мк считал числа. считал единицы и десятки и выводил на сигменты. и надо так что бы индикация была динамической. тоесть PORTD.1 и PORTD.2 вместе с портом PORTB.0-6 поочередно по средствам ключей выводили информацию на сигменты. надеюсь ты понял))
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения