Отправлено: 22.10.13 13:36. Заголовок: Генератор прямоугольных импульсов на PIC
Помогите написать прошивку на С для PIC 18f252, для генерации прямоугольных импульсов частотой 600- 900 кГц. если такое конечно возможно. Спасибо. P/S: использую PIC C Compiler
Какая точность нужна? На таких частотах шаг изменения частоты будет большим даже при максимальной тактовой МК. Я делал на асме, простенький, но вполне работоспособный. Если перенести на PIC 18f252, то можно выжать максимум, причём со скважностью! Генератор с интерактивным изменением частоты и скважности на 12F629
Отправлено: 30.10.13 22:04. Заголовок: MAZ, как это не пишу..
MAZ, как это не пишутся на С. Вам например такая среда как PIC C Compiler ни о чем не говорит?
Только вот это не курсовая, а диплом.
Сан Саныч, спасибо хоть на этом.
medved, не получается выжать из мк необходимые мне 600- 900 кГц. Пытаюсь 800 кГц сделать не получается, там длительность импульсов начинает плясать, один длиннее другого и наоборот.
Компилятор мне не знаком, это точно. Но покажите мне одну строчку прошивки на Си. Очень прошу. Подчеркиваю, именно прошивки. То что зашивается в мк (программируется), т.е. машинный код. Как Вы пишите машинным кодом на Си? У меня нет ответа. Я думал, что Вы не точно выразились. Поэтому и решил посмеяться, надеясь, что Вы поймете свою оговорку. Но это была оказывается не оговорка. А что за ВУЗ? Такие генераторы делают обычно в курсовых и то на 2-3 курсе. Для диплома как-то странно. Если дипломник не знает чем прошивка отличается от текста программы, написанного на чем угодно, то учат у нас точно очень хорошо. Насчет Вашей задачи. Не знаю как на Си но на асме её решить на мой взгляд не очень просто. Ваш контроллер выполняет команды по максиму 10МГц. Т.е. 0,0000001С = 0,1мкс это такт программы. А Вам нужно 0,625 мкс При 800 КГЦ. Вот и думайте как за 6 тактов сформировать фронты импульсов. Если привязать к прерываниям, не успеете, если тупо менять фронты через 6 тактов. То будет генератор, на фиксированную частоту. Если у Вас диапазон перестройки, можно конечно попробовать, но очень тесно. Компилятор ( который я не знаю) у меня большие сомнения даст Вам эти 6 тактов. Да и смысл в Си теряется.
Так это надо несколько поглубже копоть. Диплом это финиш для спеца. "Куда мне до неё..." Я только практикант в Си. Почитай что- нибудь про генераторы на МК. У PIC контроллеров 4 такта на команду, у АВР один такт. Имеет смысл рассмотреть вариант у них периодический вывод 1/0 в порт при 20 МГЦ тактовом генераторе и считать время на команды управления. Проект, что выложил, не мой, к сожалению, и сырой - думаю, но глянь. Написан на Си в среде FlowCode, работает в симуляторе Proteus. Там есть картинка предела - 86 кГц. Управление частотой кнопками. Если готовый дипломный проект ищешь, то это не то. Просто посмотри этот проект и выжми из него всё , если есть у тебя такой вопрос и серьезный интерес. И посмотри возможности АВР в этом плане. http://zalil.ru/34791529
Отправлено: 31.10.13 18:51. Заголовок: MAZ, ах вот вы о чем..
MAZ, ах вот вы о чем, тогда да был неправ. Генератор это не весь диплом, а всего лишь один из блоков. Я разрабатываю систему диагностирования. А СИ я сам изучаю, в универе нас этому не учили. Поэтому и прошу помощи.
Почему именно PIC 18f252. Все просто, у меня в эту систему будет входить 3 блока, два из них я уже реализовал, хотелось как можно меньше изменений в вносить с в схему заменить лишь прошивку.
Вячеслав, спасибо. Обязательно посмотрю проект что вы скинули.
Отправлено: 31.10.13 19:36. Заголовок: Тогда понятно. А ген..
Тогда понятно. А генератор Вам нужен на фиксированную частоту? Или все таки диапазон? Боюсь, что у Вас ничего не получится. Я Си практически не знаю. И в этом вряд ли Вам помогу. А вот то что на асме это сделать очень тяжело, практически на грани невозможности, это точно. Надеюсь понимаете, что на асме можно попасть "в иголочное ушко". И на Си можно, но это наверно дано хорошо знающему Си человеку, ну и от используемого компилятора зависит. Хотя тоже меня грызут сомнения. Дело в том что Ваш мк ничего другого делать физически не сможет, только генерировать такие частоты. Может я не прав. Но пока выхода не вижу. Не будет стабильности у такого генератора по длительности. Как выход используйте отдельный мк.
хотелось как можно меньше изменений в вносить с в схему заменить лишь прошивку.
Уже понятнее задача. Так ли я понял: есть узел с генератором на PIC 18f252, надо изменить частоты генерации этого камня? Какие функции выполняет этот МК кроме генерации? Какие частоты генерирует этот узел изначально? Сколько времени у тебя для поисков и самообразования? Задача, думаю, непростая для новичка. MAZ прав, возможно надо будет писать в АСМ. Или вставками на АСМ. Твоих возможностей не знаем, быстро и "на коленке" это возможно и не сделать. Полная картина ясна только тебе. Тебе и решать. Как бы я взялся за решение. Ответил на вопрос: какова максимальная частота генерации этого камня под управлением на Си? Интернет у тебя есть. Ищи. На схеме в Протеусе опробовал генератор со своей программой и нужными функциями, далее - макет на железе (с таким же камнем) и анализ результатов. Если годиться -тогда прошиваем камень исходного узла.
http://zalil.ru/34791810 Вот моя прикидка, как сумел. Частота такта 10 МГц, только обращение к выводу порта и по 2 nop вместо задержек. Можно, думаю, упростить обращение к портам в Си. А тебе точно нужно частоту 0,9 МГц от такого камня? Не розыгрыш? Шутников теперь много.
Какая разница вставками на асм или не ставками. Контроллер постоянно должен фиксировать такты (грубо 6), формировать фронт импульса и не на что не отвлекаться. Ни какие прерывания не помогут, т.к. одна процедура сохранения и восстановления спец регистров займет уйму времени, а если еще стоят какие то задачи? Практически невероятно. Если запустить встроенный таймер, все равно: сохранение, прерывание, предустановка, изменение фронта, восстановление. Не успеть. Основная программа работать из-за этих прерываний или не будет или слишком медленно. Задача практически не реальная. Как выход. Взять какой нибудь простой мк на те же 10 МГц и сделать только генератор. Тогда хотя бы его можно будет перестраивать с опред. шагом, включать или выключать.
Пост N: 388
Зарегистрирован: 25.09.09
Откуда: г.Саратов
Рейтинг:
1
Отправлено: 01.11.13 16:17. Заголовок: MAZ пишет: Задача п..
MAZ пишет:
цитата:
Задача практически не реальная.
Согласен. Не зная, что стоит у него в обрамлении камня, трудно судить. Может камень только управляет отдельным генератором. Допустим, стоит там компонент 561ИЕ15 - у него: один С вход, один выход и коэффициент можно задавать с 1 до 8000 с МК. Или еще что-то, типа того.
Отправлено: 02.11.13 17:20. Заголовок: в общем хотел к мк п..
в общем хотел к мк подключить nrf24l01, передавать на него команду на запуск генерации определенного количества импульсов фиксированной частоты, в общем это все что должен выполнять этот мк.
Вячеслав, а можно поподробнее про 561ИЕ15, тоже подумывал о том что бы мк всего лишь запускал внешний генератор.
Вячеслав, а можно поподробнее про 561ИЕ15, тоже подумывал о том что бы мк всего лишь запускал внешний генератор.
ИЕ это счётчик, обычно используется как делитель с коэффициентом 2 в степени .... . В Вашем случае однозначно не удастся сгенерировать нужную частоту (те же 800 кГц), тем более если МК уже чем то занят. МАЗ об этом писал. Он вообще редко ошибается! А вот прикрутить внешний вполне реально. Погуглите, есть вполне приемлемые синтезаторы частот. Если нужен меандр определённой частоты, то вообще просто. Если с возможностью перестройки, сложнее, но тоже выполнимо. От идеи организовать на том же МК с основной программой ещё и стабильный генератор на таких частотах лучше отказаться. Только время потеряете. Смотрите в сторону внешних.
Пост N: 659
Зарегистрирован: 16.03.09
Откуда: Родина, Севастополь
Рейтинг:
1
Отправлено: 02.11.13 23:21. Заголовок: unker пишет: в обще..
unker пишет:
цитата:
в общем хотел к мк подключить nrf24l01, передавать на него команду на запуск генерации определенного количества импульсов фиксированной частоты, в общем это все что должен выполнять этот мк.
Просмотрел! Повторю вопрос МАЗа, немного перефразировав. Какое время должен работать nrf24l01? И вообще какую роль он выполняет? Обычно его несущая 2.4 ГГц.
Вячеслав, а можно поподробнее про 561ИЕ15, тоже подумывал о том что бы мк всего лишь запускал внешний генератор.
Это можно. Была у меня задача: выдавать на объект разные частоты. Скажем: 2 мин - 1кГц меандр, 3 - мин 200 Гц и т.д. Просто сделал отдельный генератор на максимальную требуемую частоту и использовал ИЕ15 по его назначению. При максимальной частоте задавал коэффициент деления для ИЕ15 : 1, для других значений частот - задавал другие коэффициенты. Только вот - древний этот компонент и частотные свойства у него не ГГц -ы. Поищи современные решения. Держи описание компонента 564ИЕ15 в pdf, корпус планарный - скорее можно найти. http://zalil.ru/34792468
Отправлено: 03.11.13 11:06. Заголовок: 564ИЕ15 Это уже пра..
564ИЕ15 Это уже практически "каменный век", как не обидно, но это так. Тот же генератор можно сделать на контроллере и намного гибче. Есть отличные готовые синтезаторы, правда тоже управляются контроллером. Но управлять, это совершенно другое. AD9850 например. Его же не покупать, а так в проект прилепить
Все даты в формате GMT
3 час. Хитов сегодня: 31
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет