Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
28.07.2007, 04:25
|
|
Прохожий
Регистрация: 28.07.2007
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
помогите с кодом для АВР. язык си.
Здравствуйте.
У меня возникла проблема с написанием или поиском кода на языке СИ для АВР.
Задумка такая: создать проект, чтобы автоматически после запуска шёл перебор подаваемой единицы на 5 пинов. Тоесть чтобы переменно подавался высокий уровень(тобишь 1) на порты контроллера. Чтобы этот перебор был автоматически и хаотичен.
Представление такое: включили, пошло "жанглирование" на пяти портах. Тоесть нужно создать алгоритм, в котором будет осуществляться хаотичный выбор порта на который будет подаваться высокий уровень.
Помогите пожалуйста с кодом.
Может у кого есть старые проекты такого плана.
Может кто-нибудь знает литературу в которой описано создание данного действия или просто литературу которая может помочь,подтолкнуть.
Помогите пожалуйта...
|
|
|
|
28.07.2007, 11:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Вам нужно случайные (иди псевдо-) числа выводить в порт.
вот краткий курс avr123.nm.ru и там проекты на МК.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
02.08.2007, 04:15
|
|
Прохожий
Регистрация: 28.07.2007
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от avr123-nm-ru
|
Вам нужно случайные (иди псевдо-) числа выводить в порт.
вот краткий курс avr123.nm.ru и там проекты на МК.
|
Спасибо.
Скачал полный архив с Вашим курсом, но к сожалению ничего похожего в проектах я не нашёл. Может я чего пропустил? помогите пожалуйста почной сылкой или закиньте сюда.
|
|
|
|
02.08.2007, 07:34
|
|
Прописка
Регистрация: 11.07.2006
Адрес: Ru, Nsk
Сообщений: 249
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Скачайте с avr123.nm.ru архив FAQ (ссылка называется Скачать FAQ - сборник вопросов и ответов).
В нем есть файл (_77 псевдоСлучайное число получить.txt). Имхо то что надо.
|
|
|
|
16.08.2007, 23:41
|
|
Временная регистрация
Регистрация: 27.03.2007
Адрес: Москва
Сообщений: 50
Сказал спасибо: 21
Сказали Спасибо 1 раз в 1 сообщении
|
Пожалуй тут спрошу, в основном у avr123.nm.ru Вот на страничке http://avr123.nm.ru/z09.htm такая фраза есть:
Цитата:
|
Внимание!
CodeVisionAVR позволяет использовать в программе виртуальный 16 битный регистр ADCW:
регистр ADCW
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
9
9
регистр ADCH регистр ADCL
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
это бывает удобно !
|
Так что, просто ADCH он считать не позволяет??? А то я присвоил
ppmg=ADCH; , ошибок не выдало, а вот во что откомпиллится... ?
|
|
|
|
17.08.2007, 00:02
|
|
Вид на жительство
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
В языке С существует функция rand(), которая позволяет генерировать случайные значения. Я не знаю, сишный компилятор под контроллеры использует ее или нет. Во всяком случае, можно попробовать. Если не получится, то надо будет открыть заголовочный файл ctime.h и переложить кодировку на МК. Потому что случайное число берется из-за привязки к системным чисам компа. Это на асме написано, если не ошибаюсь. Вам нужно будет сделать привязку к таймеру МК.
Вот пример кода на С++, выполните в какой-нибудь кансоли:
Код:
|
include‹iostream.h›
include‹iomanip.h›
include‹stdlib.h›
include‹ctime.h›
int main()
{
int n[10];
for(int i=0; i‹10; i++)
{
n[i]=rand();
}
cout‹‹"Element"‹‹setw(13)‹‹"Number";
for(i=0; i‹10; i++)
{
cout‹‹setw(13)‹‹i‹‹"Number"‹‹setw(13)‹‹n[i]‹‹endl;
}
return 0;
} |
|
|
|
|
17.08.2007, 00:37
|
|
Прописка
Регистрация: 15.10.2006
Сообщений: 130
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
|
А что если использовать способ,
который применяют повсеместно в кодировании
для получения псевдослучайных чисел:
сдвигать регистр,
а на вход подавать результат суммы по модулю 2 (XOR) определенных битов регистра:
Ну вот скажем пример для 4-х разрядного регистра
- если начальное состояние 1000,
то то последовательно будут получены следующие значения
1000, 0100, 0010, 1001, 1100, 0110, 1011, 0101,
1010, 1101, 1110, 1111, 0111, 0011, 0001, 1000
-- Прилагается рисунок: --
|
|
|
|
17.08.2007, 00:49
|
|
Вид на жительство
Регистрация: 27.07.2006
Сообщений: 308
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Цитата:
|
последовательно будут получены следующие значения
1000, 0100, 0010, 1001, 1100, 0110, 1011, 0101,
1010, 1101, 1110, 1111, 0111, 0011, 0001, 1000
|
Ему нужен хаос. Последовательность? Возможно. Как разновидность хаоса.
|
|
|
|
17.08.2007, 00:54
|
|
Временная регистрация
Регистрация: 27.03.2007
Адрес: Москва
Сообщений: 50
Сказал спасибо: 21
Сказали Спасибо 1 раз в 1 сообщении
|
retcom, double_dash, проехали уже, 2 недели назад... Тогда и надо было советовать и обсуждать...
|
|
|
|
17.08.2007, 08:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Сообщение от LessM
|
Так что, просто ADCH он считать не позволяет???
|
Позволяет конечно.
ADCW - просто для удобства пользователя введен.
Порядок чтения в задаче 11 ... /z11.htm
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:58.
|
|