Теперь в нашем онлайн-магазине доступна уникальная книга «BEAM-робототехника. От азов до создания практических устройств», идеально подходящая как для кружков робототехники, так и для самообучения дома. Вы можете приобрести её по привлекательной цене в 699 рублей. Дополнительная информация о книге доступна на нашем сайте. Также в ассортименте нашего онлайн-магазина представлены готовые наборы для сборки роботов, с помощью которых ваш ребенок сможет легко собрать своего первого робота, следуя нашим подробным инструкциям. Перейти в магазин


[ Раскрыть online-чат / Закрыть ] · [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Модератор форума: nightmare, Huntswarrior, Aleks_Crow  
Форум » Программирование микроконтроллеров AVR, PIC » Вопросы по програмированию » Вопрос по использованию портов
Вопрос по использованию портов
Отправлено 15.10.2012 - 23:3916
Участник
14 сообщений
Мужчина
Он выделяет только строку с ошибкой, а где в этой строке я пропустил эту скобку?


Профиль Личное сообщение Дом. страница icq Skype
0
Администраторы
3417 сообщений
Мужчина
выложите код программы на сайт codepad.org или подобный, и сюда ссылку киньте.


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Отправлено 15.10.2012 - 23:4618
Участник
14 сообщений
Мужчина
Да
//Прерывание _____________________________________________________________________________________

Добавлено (15.10.2012, 23:46)
---------------------------------------------
http://codepad.org/pRnYwgFC



Профиль Личное сообщение Дом. страница icq Skype
0
Администраторы
3417 сообщений
Мужчина
Я вот не помню точно, но что за нумерация прерываний в коде программы ? Скиньте еще и ссылку на то откуда этот код взят плз.


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Отправлено 15.10.2012 - 23:5320
Участник
14 сообщений
Мужчина
Ну программу я написал сам по примеру из видео курса Микроконтроллеры Первые шаги, его можно найти в поисковике или я выложил его в контакт http://vk.com/videos-43882563


Профиль Личное сообщение Дом. страница icq Skype
0
Администраторы
3417 сообщений
Мужчина
ьам в курсе точно круглые скобки ? По другим примерам вроде как [ ]
Судя по примерам так ~ быть должно

Quote
interrupt [EXT_INT0] void ExtInt0(void)


Видео проверьте...


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Отправлено 16.10.2012 - 00:3022
Участник
14 сообщений
Мужчина
И точно, хех) Но вылезла вторая проблема, в сточке №2 (пронумеровал сам чтоб понятно было где)

Error: C:\cvavreval\Проекты\Обработка прерываний\Обработка прерываний.c(8): '{' not expected

1.interrupt[2] void ExtInt0(void); // Обработка прерываний на рорте Int0 (порт PD2, Вывод 4)
2. {
3. PORTC=0b1; delay_ms(200);
4. PORTC=0b10; delay_ms(200);
5.
}

Добавлено (16.10.2012, 00:26)
---------------------------------------------
Блин, замучился уже х)

Добавлено (16.10.2012, 00:26)
---------------------------------------------
не одно так другое(((

Добавлено (16.10.2012, 00:30)
---------------------------------------------
Убрал точку с запятой после
interrupt[2] void ExtInt0(void)

Другая ошибка Error: C:\cvavreval\Проекты\Обработка прерываний\List\Обработка прерываний.asm(773): Undefined symbol: mcucr


Профиль Личное сообщение Дом. страница icq Skype
0
Администраторы
3417 сообщений
Мужчина
Quote (ShiNi)
Другая ошибка Error: C:\cvavreval\Проекты\Обработка прерываний\List\Обработка прерываний.asm(773): Undefined symbol: mcucr


- ну дк тутже в конце и указывается причина - "Undefined symbol: mcucr"
Открываем гугл переводчик и переводим весь текст\строку или то что поле : идет.

переводчик скажет что символ "mcucr" не опознан. Причина ? Либо неправильно записана переменная MCUCR... либо не объявленя вообще нигде. Компилятор не из воздуха же берет и понимает типа "А, да - символ "А" равен 10, а символ "Б" равен 0. А знает это он только оттуда, что где-то вн ачале программы объявленны эти значения.


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Отправлено 16.10.2012 - 19:2524
Участник
14 сообщений
Мужчина
Эм, и где он объявляется? Там в начале где написано #include? И как его объявить?


Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 16.10.2012 - 19:4125
Начальная группа
1798 сообщений
Мужчина
Названия регистров надо писать всегда заглавными буквами. Вообще Си язык регистрозависимый поэтому MCUCR и mcucr это 2 разных слова.
Quote
Эм, и где он объявляется? Там в начале где написано #include? И как его объявить?

MCUCR объявлен в mega*.h, где звездочка - это цифра, соответствующая модели микроконтроллера.
Твоя программа компилируется без ошибок: http://codepad.org/F4fsMzPh
Не надо писать" магические числа" не понятно откуда взявшиеся:
Code

interrupt[2] void ExtInt0(void) //   Обработка прерываний на рорте Int0 (порт PD2, Вывод 4)
  {...

Есть специальные константы:
Code

interrupt[EXT_INT0] void ExtInt0(void) //   Обработка прерываний на рорте Int0 (порт PD2, Вывод 4)
  {...


Профиль Личное сообщение Дом. страница icq Skype
38
Отправлено 16.10.2012 - 21:2726
Участник
14 сообщений
Мужчина
Всем спасибо, программа компелировась. Прошил м.к. и первое что я сказал "Че за хрень?" м.к. взбесился и на обум выполнял программы, на нажатия кнопок не реагировал (провода были длинной примерно 15 мс) начал реагировать на прикосновения к проводам от прерываний, ещё реагировал когда я просто проводил рукой над м.к. Отключил его от компа и сам комп вырубил, выключил все приборы из розетки и он начал по стабильней работать, но всё равно логике не поддавался >.<
Попробовал перепрошить, та же фигня. отпаял провода от кнопок и в ручную замыкал провода, иногда м.к. на это срабатывал. Отпаял от выводы м.к. провода с прерыванием. После этого м.к. начал стабильно выполнять основную программу, дотронулся проводом (+5) до выводов прерывания м.к. и только тогда он начал правильно выполнять свою программу с редкими сбоями. Разве м.к. может так сильно реагировать на помехи в воздухе??


Профиль Личное сообщение Дом. страница icq Skype
0
Администраторы
3417 сообщений
Мужчина
Quote (ShiNi)
Разве м.к. может так сильно реагировать на помехи в воздухе??

- ну а ты как думал ? Точнее проходил в школе на уроках физики... или еще не проходил... -Воздух пронизывает куча различных, эээмм, сред. А ты тоже... проводник. У человека же есть токи, если бы их не было - твои мышцы были бы как копчик - остатком от прошлого )))


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Отправлено 16.10.2012 - 21:5928
Участник
14 сообщений
Мужчина
Это мы не проходили но это я и так знаю из практики, я гитарист и немного занимался с аудио аппаратурой, примочками... усилителями... Я практик а не теорик, всё узнаю на практике, на своих опытах. Я предпологал что помехи будут влиять на м.к. поэтому поставил экранированный провод от компа до м.к. Но чтобы так сильно м.к. реагировал на эти помехи.... не ожидал))

Добавлено (16.10.2012, 21:59)
---------------------------------------------
Короче сделаю печатную плату, а то эти провода все помехи ловят >.<



Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 16.10.2012 - 22:0229
Начальная группа
1798 сообщений
Мужчина
Порт сконфигурирован на вход как высокоомный. Электромагнитное поле от ближайшего трансформатора, мобильника, пейджера (0_О) без проблем наводит в проводе, который подключен к этому входу ЭДС, в итоге на входе то ноль, то еденица, вообщем черти что. Надо вход его либо к земле, либо к плюсу подключить через резистор. Либо использовать встроенный резистор, который подключается к + питания при настройке порта на вход и установке соответствующих битов в регистре PORTx в еденичку.
Code

DDRx =0;
PORTx = 0b00000001; //Нулевой пин на вход, с подтяжкой к + при помощи встроенного резистора на ~56 кОм


Профиль Личное сообщение Дом. страница icq Skype
38
Отправлено 16.10.2012 - 22:1630
Участник
14 сообщений
Мужчина
Да, про подтягивающий резистор я знаю)) Ну теперь у меня есть вся информация на первое время, буду экспериментировать)) Дальше хочу понять как управлять "роботом"без прерываний, тоесть м.к. как я понял сравнивает напряжение на выводах и принимает решение, как это делать на данный момент я даже понятия не имею х)


Профиль Личное сообщение Дом. страница icq Skype
0
Форум » Программирование микроконтроллеров AVR, PIC » Вопросы по програмированию » Вопрос по использованию портов
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск: