Пост N: 24
Зарегистрирован: 13.12.07
Откуда: г.Макеевка
Рейтинг:
0
Отправлено: 27.02.08 13:36. Заголовок: Proteus и TMR1
Всем привет. Возникла у меня такая проблема. В будущей программе у меня будет встроен таймер TMR1. И для ознакомления с его работой собрал простенькую схемку в PROTEUSe Сама программа написана для PIC16f628a. За основу взял "Односекундный таймер А. Милевского". Оформил ее в программу, Зашил ПИК в PROTEUSe. Запустил. Не работает генератор, а следовательно нет и прерываний от TMR1. А теперь поподробнее: Причин 2-е: 1.В коде. 2.Схема в PROTEUSe. Схема простая, поэтому расскажу и все будет понятно. К PIC16f628a подключен часовой кварц(32768Гц), выводы RB6-RB7, к этим же выводам подключены конденсаторы 33пф(схема включения стандартная). К выводу RA0 подключен светодиод, далее резистор 300 Ом и на "землю". Когда возникает прерывание светодиод на RA0 однократно загорается и тухнет. К выводам RB0-RB1 подключены светодиоды, далее резисторы 300 Ом и на "землю". Вот и вся схема. Кварц 4-20МГц. Схема работает так: Основная программа попеременно включает-выключает светодиоды на выводы RB6-RB7 с небольшими задержками. Этот процес зациклен. При возникновении прерывания загорается и тухнет однократно светодиод на выводе RA0, Далее снова выполняется основная программа и так по кольцу. Это вся работа. http://upload.com.ua/get/900126798 Текст программы по ссылке. В тексте программы строки №155,156 закрыты (;). В таком виде программа должна работать. Если (;) убрать, то будет принудительный подъем флага прерывания от TMR1 и естественно программа будет уходить в прерывание в конце основной программы. Программу гонял в симуляторе, проверял биты, банки...Вроде так, но почему не работает не пойму
Совершенно правильно. Надо выбрать генератор "Clock", а подавать сигнал на RB6. Частоту, у генератора, лично я задал в два раза выше номинальной (что б быстрее симулировал ).
Вчера попробовал подключить генератор PROTEUSa, и получилось. Сигнал "Clock" подавал на RB6 или RB7, работает и так и так. Прерывание работает четко. Значит в программе ошибок нет. Программа оформлена, можно компилировать. Она может послужить заготовкой для большой программы. Комментарии почти в каждой строке, так что разобраться очень легко. Программа будет находиться на ссылке до 27.04.08, пользуйтесь, кому интересно. Спасибо Дмитрий. С ув. Виктор.
Пост N: 28
Зарегистрирован: 13.12.07
Откуда: г.Макеевка
Рейтинг:
0
Отправлено: 29.02.08 17:22. Заголовок: Между RB7 и RB6 разн..
Между RB7 и RB6 разницы не заметил, работает по моему одинаково. Прикидывал схему с кварцем(32768), а два то вывода заняты. Обычно ПОРТВ используется на вывод 7-ми сегментов+запятая. А так нужно добавлять с ПОРТаА, а это лишние команды. Можно использовать внутренний генератор или перейти на TMR2(сейчас читаю). Пока не определился. Сегодня приценивался на радиорынке к PIC16F873a(6a)выводов побольше будет. У нас в Донецке стоят 5$.
Отправлено: 29.02.08 19:27. Заголовок: Я использовал TMR2 ..
Я использовал TMR2 в качестве генератора прерываний RTC , пока одни положительные эмоции кварц внешний 4 мГц . Проще сказать часы идут стабильно , прект коммерческий , рекламаций нет...
Пост N: 30
Зарегистрирован: 13.12.07
Откуда: г.Макеевка
Рейтинг:
0
Отправлено: 01.03.08 12:16. Заголовок: dosikus пишет: Я ис..
dosikus пишет:
цитата:
Я использовал TMR2 в качестве генератора прерываний RTC , пока одни положительные эмоции
Вот и я склоняюсь к TMR2 в качестве генератора прерываний . Разговор вел про PIC16f628a, а в нем выводов на порт А маловато будет, да и АЦП нет Как говори Г.Хазанов :"...хорошая машина "Запорожец", да жаль пулемета в ней нету..." Я, так сказать нахожусь в процессе выбора. В недалеком(я надеюсь) будущем будут разборки с ССР. Поэтому пока осваиваю эти модули. Да и ПИК может быть другой. А отработку сделаю на простых программках по модулям "Для усвоения глубинного смысла, происходящих в них(модулях) процессах!". Во сказанул И PROTEUS здесь очень кстати (пользуюсь вер 6.9sp5 и 7.2sp2)
Пост N: 757
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг:
1
Отправлено: 01.03.08 14:44. Заголовок: Viktor_VK пишет: а ..
Viktor_VK пишет:
цитата:
а в нем выводов на порт А маловато будет
Как-раз 7 штук. Лично у меня именно так и сделано. А 8-й, который только на вход, использую, для опроса клавиатуры (4 кнопки) и наличия основного питания. TMR2 у меня занят, для эмуляции UART, а TMR0, для динамической индикации и опроса клавиатуры. Можно, конечно, на него и отсчёт времени навесить, но я сделал на TMR1. Это позволяет, при работе от резервного источника питания, переводить МК в слееп, в промежутках между секундными отсчётами. А АЦП у 628 действительно нет.
Отправлено: 01.03.08 15:09. Заголовок: Если используем весь..
Если используем весь порт А , лишаемся внешнего кварца . В принципе если RTC не используем в устройстве , это не страшно. Я использовал tmr2 потому что нужна была точность для часов . tmr0 использую для дин. индикации и опроса клавы.
Ребята, прошу прощения. Это все происки PIC16f84a. Действительно в PIC16f628a выводов портА-восемь. Мне нужны будут часы, задействую TMR2-очень точность подкупает. Сделаю тоже самое и на TMR1, но без внешнего кварца. А так же хочу использовать косвенную адресацию, она позволяет делать дела в цикле(перебирая адреса...)как на ЯВУ. Сейчас ее прорабатываю. Чего раньше не использовал? Да дошел до 12 раздела самоучителя и начал самостоятельно писать программы(понятно, что не сложные) ну уж руки очень зудели, т.к. больно хорошо информация из самоучителя ложилась на мозги . Динамическую индикацию(не косвенную) выкопал из других программ, разобрался и приспособил для своих задач.С записью в память EEPROM большого количества подряд идущих данных был "стопор", но ничего разобрался. А сейчас наверстываю пропущенное(все упирается во время )
Если используем весь порт А , лишаемся внешнего кварца
Я использовал внутренний генератор. А внешний кварц ("часовой") подключал к генератору TMR1. Как говорил, это позволило, при работе от резервного источника питания, оставлять включённым только TMR1, а весь МК "усыплять". По прерываниям от TMR1 (каждые полсекунды) МК просыпается, корректирует значение счётчика времени, и опять "на боковую". Таким образом, на батарейке 3,6 вольта, ёмкостью 80mAh ("бочонок", как на старых материнских платах) он у меня проработал более двух недель (но менее трёх ).
Viktor_VK пишет:
цитата:
в PIC16f628a выводов портА-восемь
Ещё раз повторяю. Выводов - семь. Вводов - восемь.
Все даты в формате GMT
3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет