Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
31.12.2007, 02:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,535
Сказал спасибо: 698
Сказали Спасибо 4,313 раз(а) в 1,977 сообщении(ях)
|
Да, так лажанулся я или нет?
Расслабился очень самому думать лень.
|
|
|
|
31.12.2007, 12:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Если порт настроен только на вывод и в процессе работы не меняется направление выдачи - то можно, не влияет. Во всех других вариантах - ну, в 18 пиках регистр LAT не зря придумали... А на 16, чтобы не было сюрпризов, я лично уже давно для порта держу регистр и меняю биты в нем - а потом его выдаю. Имхо, лучший вариант.
|
|
|
|
14.03.2008, 15:22
|
|
Прохожий
Регистрация: 17.05.2007
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
|
Может кто-то подскажет у меня такая проблема. Схема в Proteuse 7.2SP2 моделируется и работает так как я хочу. Однако когда я запускаю программу на на MPLAB 8.0 в симуляторе MPLAB SIM то порт А не переключается практически никогда (все время 00 и только в конце при передаче USART 10). Когда я запускаю программу на на MPLAB 8.0 в симуляторе Proteus VSM порт А работает как надо порт В работает как-то странно т.е данные, такие как надо, попадают в порт В не сразу а через несколько циклов работы. И при приеме USART при входе на прием первого байта из этого цикла никогда не выходит. Подскажите в чем может быть проблема файлы прилагаю.
Прикрепленный файл: 7432945.zip
|
|
|
|
14.03.2008, 15:43
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Что касаемо порта А, то Вы не выключили компараторы (во всяком случае, я не увидел -movlw 07 movwf comcon ).Что касается порта В ... Имхо, используйте прерывание.И зачем описывать регистры ? Подключите заголовочный файл.
|
|
|
|
14.03.2008, 17:58
|
|
Частый гость
Регистрация: 18.10.2007
Сообщений: 22
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Что касается порта А, то полностью согласен.
Про порт В не понятно. В чем не корректность работы?
Из цикла не выходит так как у тебя проверка идет на принятие байта данных, а в симумяторе он не принимается, вот и идет по циклу.
Да, кстате. У тебя в программе на команде проверки принятия первого байта происходит переполнение сторожевого таймера и программа просто сбрасывается.
Просмотри это.
|
|
|
|
19.03.2008, 10:43
|
|
Прохожий
Регистрация: 17.05.2007
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
|
Большое спасибо за ответ. Но я хотел спросить почему в разных симуляторах одна и таже программа ведет себя по разному. Может есть какие-то хитрости (это мой первый проект). Хотелось быть уверенным в правильности симуляции. Могу сказать больше что в MPLAB v4.72 при симуляции MPLAB SIM порт А работает так как надо но при приеме USART из цикла не выходит. В программе PROTEUS v7.2SP5 все работает как надо порт А вырабатывает синхросигналы записи в регистр, при приеме и передаче USART порт В вырабатывает пачки CLC по 24 импульса при приеме и передаче и никто не циклится. Чему верить? Привожу осцилограмму сигналов в PROTEUS. Хочу так же спросить почему симуляция в PROTEUS идет очень медленно разряды переключаются со скоростью примерно 1 сек. Можно ли увеличить скорость интерполяции (компьютер Р4 2ГГц ОЗУ 1,25 Гб), чтобы динамическая индикация работала как в примерах?
-- Прилагается рисунок: --
|
|
|
|
19.03.2008, 14:30
|
|
Частый гость
Регистрация: 18.10.2007
Сообщений: 22
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Значится так:
В симуляторе MPLAB не возможно, на сколько я знаю, смоделировать прием или передачу байта модулем USART.
Вот программа и вертится в цикле, потому, что проверяется поднятие флага приема байта от модуля.
А он установится в 1 только после того как будет принят байт и только. В симуляторе, ты можешь отработать саму программу, в смысле- время задержки, точность исполнения алгоритма, значения регистров, запись-чтение EEPROM ит. д.
А PROTEUS моделирует работу железа и передача информации по USART в этом эмуляторе возможна, вот она и происходит, по этому программа не зацикливается, потому, что моделируется поднятие флага от USART при принятии байта.
Что касается скорости работы, то исполнение инструкции программы в МК зависит от частоты тактового генератора, посмотри в MPLAB под какую частоту писалась программа, открой в PROTEUSe свойства микроконтроллера и поставь требуемую частоту.
|
|
|
|
19.03.2008, 15:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
|
Сообщение от vsbars
|
Хочу так же спросить почему симуляция в PROTEUS идет очень медленно разряды переключаются со скоростью примерно 1 сек. Можно ли увеличить скорость интерполяции (компьютер Р4 2ГГц ОЗУ 1,25 Гб), чтобы динамическая индикация работала как в примерах?
|
Скорость можно очень сильно увеличить если убрать транзисторы, вместо них можно поставить цифровые инверторы. И поставить в резисторах и диодах тип DIGITAL вместо ANALOG. Если используются аналоговые элементы, то симулируются точные формы сигналов. В цифровой - только задержки и уровни сигналов. В данной схеме это без разницы абсолютно, как я вижу.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:39.
|
|