Уже в продаже: первая в своем роде книга «BEAM-робототехника. От азов до создания практических устрйств». Книга для кружков робототехники и самостоятельного обучения на дому. Книга доступна по цене 699 руб Подробнее о книге
Дело такое, мне лень читать литературу да и особо не знаю какую нужно... Научился управлять портами, делать бегущие светодиоды на порте С микроконтроллера ATmega8 Хочу задействовать все выводы какие можно и сделать рисунки из светодиодов с помощью прерываний. Вопрос такой, порты PB3 по PB5 нужны для прошивки, тоесть их нельзя использовать, а как их не трогать чтобы управлять как выходами с PB0 по PB2 и с PB6 по PB7 Программирую в CodeVisionAVR в ней можно управлять отдельным портом, можно ли решить эту задачу такой записью?
DDRB=0b111; //первые 3 порта и последние 2 порта - выходы, т.к. 3 порта в середине настроены на прошивку DDRB.6=1; DDRB.7=1; //дальше управлять ими
На сколько знаю через точку можно задать отдельный порт и присвоить ему значение не трогая остальные порты и это запись чисто кодвиженавская. Или можно записать так?
DDRB=0b11100011 Дальше управление ими... Я просто боюсь того что если я задействую эти порты то потом не смогу пере прошить м.к. и эта программа останется в памяти на вечно х)
через точку можно задать отдельный порт и присвоить ему значение не трогая остальные порты и это запись чисто кодвиженавская.
- верно.
Надо смотреть в сторону "кубов" 4х4х4. 8х8х8 и смотреть в коде как там реализовано все. Ведь при ограниченном количестве портов, светодиодов там огромное множество Если nightmare зайдет, подскажет. Я давно в CvAVR не юзал мк... Но это реально - то что ты хочешь
Да, такая запись валидна(правильна) PORTB.6=1; Это расшифровывается как 6 бит порта В установка в лог.1. В данном случае запись через точку означает индивидуальное задание нужного бита порта В. Если записать так PORTB.7=0 , то это установка 7 бит порта B в лог.0. Но сама программа, что-то не закончена, поэтому привожу такой вариант:
Code
#include <mega8.h> #include <delay.h> #define dl 50 /* директива заменит dl на значение 50 */ void main(void) { DDRB=0b111; DDRB.6=1; DDRB.7=1; while(1) /* бесконечный цикл */ { PORTB=0b1; delay_ms(dl); PORTB=0b10; delay_ms(dl); PORTB=0b100; delay_ms(dl); PORTB=0b000;; PORTB.6=1; delay_ms(dl); PORTB.6=0; PORTB.7=1; delay_ms(dl); PORTB.7=0; }; } если изменять переменную dl, то будет меняться скорость перемещения огня.
К портам для программирования можно подключиться, лишь бы токоограничительные резисторы не были слишком малы и "держали" на этих выводах всегда логический ноль. Можно светодиоды подключить к этим выводам через транзисторные ключи с резистором в базе килоом на 10 и работать будет. В одном устройстве так электромагнитная пищалка подключена к MISO, в итоге при перепрошивке она проигрывает забавные мелодии, причем с разными программаторами разные мелодии.
//Настройка портов и регистров _____________________________________________________________________________________________________________
void main(void) {
DDRC=0b1111111; //Все порты С сконфигурированы как выходы
DDRD=0b11110011; //Вне порты кроме PD2 и PD3 выходы (2 и 3 это прерывания)
delay_ms(10); // задержка нужна для зарядки антидребезгого конденсатора для правельной работы
GICR=0b11000000; /* Регистр eneral Interrupt Control Register разрешает внешнее прерывание 10 000000 - по выводу int1 01 000000 - по выводу int0 11 000000 - по всем выводам */
MCUCR=0b00001111; /* Регистр Micro Controller Unit Control Registr настраиваетпрерывания на срабатывание:
int1 int0 0000 10 10 - по спадающему фронту сигнала на выводе 0000 11 11 - по нарастающему фронту 0000 00 00 - по низкому уровню сигнала 0000 01 01 - по любому игменению уровня сигнала */
#asm("sei") // или SREG=(1<<7); Status Register разрешает общее прерывание
Добавлено (15.10.2012, 23:19) --------------------------------------------- Вот ещё раз Error: C:\cvavreval\Проекты\Обработка прерываний\Обработка прерываний.c(7): '[' expected, but '(' found
USB? Я программирую через LTP порт, задействованы порты для прошивки PB3, PB4, PB5, PC6 (выводы 1,17,18,19) А вот порты PD2 и PD3 это INT0 и INT1(выводы 4,5)
Добавлено (15.10.2012, 23:30) --------------------------------------------- Не пойму что не хватает для компиляции
Открыт набор на БЕСПЛАТНОЕ ОБУЧЕНИЕ в кружке BEAM-робототехника на 2022 - 2023 год!
Для учащихся г. Санкт-Петербург: Уважаемые учащиеся и родители! Мы сообщаем Вам о начале открытой регистрации в кружок "BEAM-робототехника (радиоэлектронные системы управления)" Центра робототехники Президентского физико-математического лицея №239 на новый 2022-2023 учебный год!
Записаться в нашу группу может совершенно любой учащийся города Санкт-Петербург в возрасте от 10 - 18 лет. Обучение в кружке полностью бесплатное. В рамках обучения в кружке ребята получат необходимые теоретические и практические знания по электротехнике, схемотехнике, созданию электронных схем и своих собственных печатных плат для роботов. Научатся работать с ручными инструментами, 3D-принтерами для изготовления деталей робота, лазерным станком для изготовления корпусов робота. Количество свободных мест - ограниченное, успейте подать Вашу заявку первыми! Перешлите этот пост своим друзьям и знакомым, кого может заинтересовать BEAM-робототехника
***
Давайте поближе разберемся, что же мы изучаем на кружке BEAM-робототехники. И так, приступим:
1. Вы начинающий робототехник Смотрите видео BEAM-робототехника
Вы новенький в робототехнике. Вам интересно это современное направление, вы очень хотите научиться создавать крутых роботов самостоятельно, но вы пока не знаете как именно это делать? Не беда! Мы с удовольствием обучаем начинающих робототехнике всем необходимым навыкам настоящего робототехника, с которыми в последствии вы с легкостью будете собирать крутых роботов , участвовать в соревнованиях , выставках или просто делать крутые поделки для себя. Для этого мы открыли специальное направление: Радиоэлектроника (#BEAM-роботы). В ходе обучения в этом кружке вы научитесь понимать и разбираться в электронике - знать что такое резистор, транзистор, светодиод, мотор и как это работает. Закон #Ома - куда же без него :) Вы изучите схемотехнику - будете разбираться и уметь читать схемы - без этого робота не сделать. Вы научитесь делать свои собственные платы роботов (куда паяют детальки по крутому - без проводков!) Вы поработаете с механикой - нужно знать как и каким образом использовать моторчики, редукторы и различные хитрости их применения. Конечно же научитесь правильно и профессионально паять - это очень важно, иначе ваши роботы постоянно будут разваливаться. Также в рамках этого кружка вы сможете собрать несколько роботов для участия в соревнованиях, и выставках, так как мы считаем, что ваш творческий потенциал очень важен для робототехники в целом.
***
В этом году мы соберем с вами шагающих роботов, будем участвовать в соревнованиях "шагающих роботов", роботов для "следование по линии", роботов для участия в "сумо", а также в творческих выставках.
*** 2. Как подать заявку в кружок?
Прошлый год показал, что желающих заниматься аналоговой робототехникой, создавать beam'ов и участвоват ьс ними в соревнованиях - достаточно много. Поэтому на новый учебный год мы решили увеличить количество мест, создав две группы.
Первая группа по BEAM-робототехнике #261РЭ Радиоэлектроника (BEAM-роботы). Эта группа рассчитана на ребят, кто только начинает изучать робототехнику и кому необходимо получить базовые знания по электротехнике, схемотехнике, и самим бим-роботам. Для того, чтобы записаться в группу 261РЭ , вам нужно пройти по этой ссылке https://robofinist.ru/educationcenter/main/groups/id/1?groupId=796 (кликай) и заполнить анкету (чтобы подать заявку - сперва зарегистрируйтесь на сайте Робофинист как "ученик". Обязательно сохраните логины и пароли - потом они вам очень понадобятся!).
Вторая группа по BEAM-робототехнике #371РЭ Радиоэлектроника (BEAM-роботы). Эта группа рассчитана для учащихся, кто уже сталкивался с направлением BEAM или сам изучал электротехнику и схемотехнику, кто уже принимал участие в соревнованиях с этими роботами. В рамках этой группы мы будет улучшать ваши теоретические и практические навыки, создавать сложных роботов и большую часть занятий посвящать интересным проектам и соревнованиям. Для того, чтобы записаться в группу 371РЭ , вам нужно пройти по этой ссылке https://robofinist.ru/educationcenter/main/groups/id/1?groupId=797 (кликай) и заполнить анкету (чтобы подать заявку - сперва зарегистрируйтесь на сайте Робофинист как "ученик". Обязательно сохраните логины и пароли - потом они вам очень понадобятся!).
Преподаватель данного направления: Мельников Сергей Алексеевич, педагог дополнительного образования Президентского физико-математического лицея №239, руководитель образовательного проекта SERVODROID - Центр робототехники для начинающих. Группа № 261РЭ и 371РЭ. Будьте внимательны, при заполнении анкеты.
*** Краткий план годового обучения:
1. Повторение теоретических знаний по электротехнике, схемотехнике, радиоэлектронике. Закрепление знаний на практике на основе создания самых простых конструкций роботов.
2. Создание роботов для участия в соревнованиях и выставках. Творческие проекты. Много много соревнований
3. Закрепление знаний для дальнейшего перехода с аналоговой робототехники (от BEAM-роботов) к цифровой робототехнике (роботам на Arduino). На последних занятиях вы соберете BEAM-ARDUINO подобного робота ;)