Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
31.01.2010, 03:39
|
|
Частый гость
Регистрация: 20.05.2007
Сообщений: 31
Сказал спасибо: 7
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Одновременный вывод сигнала на PIC
Доброго времени суток!
Пытаюсь изучить программирование PIC. Изучаю PIC Basic (Ближе чем Си и АСМ).
Возник вопрос (поиск по форуму отрицательный)...
Возможно ли ОДНОВРЕМЕННО, например, на PORTB.0 создать генерацию, скажем, 1 Гц постоянно при выполнении определенного условия, а на другом, например, PORTB.4, дать импульс в 2-3 сек. (ОДНОВРЕМЕННО)?
Где-то в глубине души чувствую, что НЕТ!?
Заранее спасибо.
|
|
|
|
31.01.2010, 04:00
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Одновременный вывод сигнала на PIC
Одновременно нет. А вот за два такта реально. При частоте 8МГц это сигналы выйдут с задержкой на 125нс. Вас это устроит?
Дам совет. Для генерации частоты используйте таймеры и прерывания. Поставьте MicroE Basic и Proteus. Вместе эта связка работает очень хорошо и понятно. Особенно с COF файлами. Вообще будут вопросы, задавайте. Поясню. Я сам в бейсике работаю. Это и хорошо и плохо. С одной стороны, связать МК с ПК по USB мне не составит труда. На ПК у меня VB6. Бейсик мне как родной. Но из-за этого возникла большая проблема с изучением АРМов т.к. синтаксис СИ вызывает рвотные рефлексы.
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
31.01.2010, 04:16
|
|
Частый гость
Регистрация: 20.05.2007
Сообщений: 31
Сказал спасибо: 7
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Одновременный вывод сигнала на PIC
Сообщение от Easyrider83
|
Одновременно нет. А вот за два такта реально. При частоте 8МГц это сигналы выйдут с задержкой на 125нс. Вас это устроит?
Дам совет. Для генерации частоты используйте таймеры и прерывания. Поставьте MicroE Basic и Proteus. Вместе эта связка работает очень хорошо и понятно. Особенно с COF файлами. Вообще будут вопросы, задавайте. Поясню. Я сам в бейсике работаю. Это и хорошо и плохо. С одной стороны, связать МК с ПК по USB мне не составит труда. На ПК у меня VB6. Бейсик мне как родной. Но из-за этого возникла большая проблема с изучением АРМов т.к. синтаксис СИ вызывает рвотные рефлексы.
|
Спасибо!
Буду изучать таймеры и прервания, а так же поставлю MicroE Basic и Proteus... До USB пока не добрался. Всю жизнь работал с логикой, но по количеству корпусов... много выходит. Решил НАКОНЕЦ освоить PIC-ки .
"Будем искать...". Еще раз - СПАСИБО!
|
|
|
|
31.01.2010, 07:13
|
|
Прописка
Регистрация: 24.06.2005
Сообщений: 123
Сказал спасибо: 7
Сказали Спасибо 37 раз(а) в 15 сообщении(ях)
|
Re: Одновременный вывод сигнала на PIC
Huuligan, если особая точность не нужна - то Вашу задачу вполно можно решить и програмно - в общем случае - посылая в порт массив из специально подобранных чисел зациклив эту последовательность Вы сможите получить, к примеру, на первом пине 1 гц, на втором 2 Гц и на третьем 3 ГЦ и т.п
|
|
|
|
31.01.2010, 13:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Одновременный вывод сигнала на PIC
Сообщение от Easyrider83
|
Одновременно нет. А вот за два такта реально. При частоте 8МГц это сигналы выйдут с задержкой на 125нс.
|
а почему же нет?В одном порту - очень даже ДА.
вот инвертирование ВСЕХ НОЖЕК:
Код:
|
in r16,port
eor r16,0x11111111
out port,r16 |
или так, с промеж переменной
Код:
|
lds r16,saveport
eor r16,0x11111111
out port,r16 |
И по моему инициатор сабжа имел в виду нечто другое, не ОДНОВРЕМЕНУЮ смену сигналов на обоих ножках а, что бы кристал выдавал ОБА сигнала.
Сообщение от Huuligan
|
Возможно ли ОДНОВРЕМЕННО, например, на PORTB.0 создать генерацию, скажем, 1 Гц постоянно при выполнении определенного условия, а на другом, например, PORTB.4, дать импульс в 2-3 сек.
|
По моему вы НЕ СОВСЕМ ПРАВИЛЬНО описали задачу. Или НЕ достаточно понятно.
Одновременно для програмиста МК обычно имеется в иду В ОДИН МОМЕНТ ВРЕМЕНИ.
вашу задачу моно решить примерно так:
Запускаете таймер например на период 1 или 10 миллисекунд. Затем организовываете счётчик до 0,5 сек.
Проще наверное на 10 милисек и зависит от желаемой длительности импульса, потому что счётчик на 50 поместится в 1 байте, а счётчик на 500 в двух. По окончании счётчика загружаете его заново и инвертируете ножку на которой хотите получить 1 гц.
Ещё один счётчик для подсчёта периода вывода второго сигнала. например счётчик = 4, импульс будет формироваться раз в 2 секунды (дискретность равна тем самым 0,5 сек). При обнулении счётчика, загружаете его заново и выставляете ножку для формирования импульса в "1". И загружаете счётчик ДЛИТЕЛЬНОСТИ этого импульса в длительностях тех самых 1 или 10 милисек. Например импульс 0,1 сек и период таймера 10 милисек то загружаете 10. Отсчитываете этот счётчик в каждом прерывании таймера, по окончании счётчика сбрасываете ножку в "0". Для того что бы ода импульса возникали на ножках В ОДИН МОМЕНТ ВРЕМЕНИ, выставляете флажки в отдельной переменной, а вывод на ножки производите одной командой.
установка и сброс сигналов
Код:
|
lds r16,saveport;загрузить
sbr r16,0;вкл 1 сигнал
сbr r16,1;выкл второй сигнал
sts saveport,r16;сохранить |
вывод на ножки
Код:
|
lds r16,saveport;загрузить
out port,r16; вывод |
Последний раз редактировалось picavr; 31.01.2010 в 13:54.
|
|
|
|
31.01.2010, 16:05
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Одновременный вывод сигнала на PIC
picavr, это все, конечно, очень правильно. Но человек бейсик изучает. А вы ему на асме пишите.
|
|
|
|
31.01.2010, 17:15
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: Одновременный вывод сигнала на PIC
Сообщение от Easyrider83
|
picavr, это все, конечно, очень правильно. Но человек бейсик изучает. А вы ему на асме пишите.
|
К тому же еще и не на PICовском...
|
|
|
|
31.01.2010, 18:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Одновременный вывод сигнала на PIC
Сообщение от Easyrider83
|
человек бейсик изучает. А вы ему на асме пишите.
|
На асме был показан только вывод в порт, ЕСЛИ потребуется ОДНОВРЕМЕННОЕ ИЗМЕНЕНИЕ сигналов на ножках... да и ИМХО разница между PIC и AVR в этом случае не большая.
А описание алгоритма применимо любому языку. Останется закодировать на требуемом языке. Как правило разработка алгоритма это более 50-70% работы.
Я не в курсе можно ли организовать прерывания по таймеру на Васике, место прерывания по переполнению таймера можно использовать просто выдержку времени на заданное время.
Остальное останется так же.
На Васике вывод думаю будет аналогичным.. только комманд Васика я не в курсе... наверное примерно так
Последний раз редактировалось picavr; 31.01.2010 в 19:17.
|
|
|
|
31.01.2010, 22:57
|
|
Частый гость
Регистрация: 20.05.2007
Сообщений: 31
Сказал спасибо: 7
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Одновременный вывод сигнала на PIC
Всем огромное спасибо за советы и поддержку!
Кажется идею понял (таймеры и прерывания). Сегодня ночью постараюсь воплотить эту идею в программном коде.
|
|
|
|
03.02.2010, 03:31
|
|
Частый гость
Регистрация: 20.05.2007
Сообщений: 31
Сказал спасибо: 7
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Одновременный вывод сигнала на PIC
Всем Доброго времени суток!
С таймерами и прерываниями не разобрался пока, но решил маленькую задачу программно на Бейсике. Задача: сформировать на В.0 сигнал частой 2Гц, на В.4 и В.7 частоту 1Гц при одновременном выполнении основной программы. Может и криво получилось, но...
вобщем вот так:
Последний раз редактировалось Huuligan; 03.02.2010 в 03:37.
Причина: не прикрепился файл
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:06.
|
|