![]() |
|
Модераторы: PILOT, ManiaK, Mazzi |
![]()
|
|
| Nosaer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
Здравствуйте!
Столкнулся с задачей и не знаю как реализовать, надеюсь на вашу помощь. Необходимо последовательно подавать "1" на большое количество выводов. Задача осложняется тем, что выводы в рамках одного порта подключаются не последовательно. т.е. в каком то цикле, мы поочередно подключаем сначала PORTB.1, PORTB.4, PORTB.5, PORTB.2, PORTB.3. Затем в этом же цикле еще и выводы другого порта, например С. Другими словами просто прогнать каждый порт в цикле не получится. Нужно как то создать список где они будут записаны в той последовательности в которой нужны, и уже гонять цикл по этому списку. Что у меня реализовать как раз таки не получается. Микроконтроллер AVR. Язык С/С++. |
|||
|
||||
| LeonidPr |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 17.2.2012 Где: г. Чебоксары Репутация: нет Всего: 1 |
Могу предложить такую идею.
объявить структуру вида:
Затем объявить константный массив, например
Затем в цикле пробегать по этому массиву и на каждой итерации выбрасывать в регистры портов значения, хранящиеся в структуре Values[i]. P.S. Я не программировал AVR, но есть опыт работы с другими контроллерами, там такой подход вполне должен работать, думаю, что и в AVR заработает. Это сообщение отредактировал(а) LeonidPr - 1.6.2012, 22:05 --------------------
pkunzip.zip |
||||
|
|||||
| Nosaer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
2LeonidPr, спасибо
В C++ не особо силен, опыта мало, но задумка в целом понятна. П.С. Буду рад, если кто то еще идею предложит. |
|||
|
||||
| LeonidPr |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 17.2.2012 Где: г. Чебоксары Репутация: нет Всего: 1 |
Дык тут и не C++ а обычный Си.
Можете реализовать на асме, если вам удобнее. Суть то от этого не меняется. Главное что-бы работало, и работало правильно и надежно. Это сообщение отредактировал(а) LeonidPr - 2.6.2012, 14:21 --------------------
pkunzip.zip |
|||
|
||||
| Nosaer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
LeonidPr да мне хоть С/ хоть С++.
Мне на Python куда привычнее. Но все равно спасибо) |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: нет Всего: 20 |
Список фиксированный или его нужно создавать/менять в рантайме? -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| Nosaer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
Список фиксированный.
|
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: нет Всего: 20 |
Ну тогда тут других идей больше нет. Обратитесь в Центр Помощи. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 9 Всего: 97 |
Если планируется использовать не все выводы порта, то предложенный LeonidPr вариант надо немного доработать. Надо завести ещё один массив. В первом массиве должна хранится информация о том, какие пины выставлять в "1", а во втором соответственно обнулять. И изменять значения не через присваивания, а с помощью битовых операций И ("&") и ИЛИ ("|").
Ещё вариант - программно объединить нужные выводы в группы. Например в этой статье рассказывается как это сделать средствами С++. На том же ресурсе была статья, как сделать аналогичное на Си средствами препроцессора, но ссылки найти не могу. |
|||
|
||||
| alexSl |
|
|||
![]() проходил мимо Профиль Группа: Участник Сообщений: 28 Регистрация: 22.2.2008 Репутация: нет Всего: нет |
http://we.easyelectronics.ru/Soft/rabota-s...ez-plyusov.html |
|||
|
||||
| slav0n |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 3.7.2012 Репутация: нет Всего: нет |
||||
|
||||
| LeonidPr |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 17.2.2012 Где: г. Чебоксары Репутация: нет Всего: 1 |
Мне понравилось в контроллерах на ядре Cortex-M3 ногами дрыгать. Через bit-banding. Одно удовольствие.
--------------------
pkunzip.zip |
|||
|
||||
| pettimm |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 24.9.2005 Репутация: 1 Всего: 1 |
Ну что, получилось?
|
|||
|
||||
![]()
|
| Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |