![]() |
|
Модераторы: PILOT, ManiaK, Mazzi |
![]()
|
|
| quarz |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 7.1.2005 Репутация: нет Всего: 3 |
Может быть и стек, причем у 3 пиков одновременно..!
|
|||
|
||||
| PILOT |
|
|||
|
производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
а может за границы страницы вылез...
Я всегда относился к подобным глюкам с самокритикой, и в 99.999% виноват был именно я, либо моя невнимательность, либо незнание, но в любом случае - я. Так что усердия вам в поиске программного бага. СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
| quarz |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 7.1.2005 Репутация: нет Всего: 3 |
Все верно, ошибка была именно в программе. Очень помог пример jimmi, мы инициализировали порты без BANKSEL. Кстати, что это значит? Насколько я помню у пиков такой команды нет. Сейчас прога заработала, но на это ушло 2 ночи. Сейчас будем разбиратся с протоколом передачи данных в комп через последовательный порт. И есть еще один вопрос: даже не знаю задавать его здесь или в новой теме.
Короче, для получения определенного интервала времени - 1 сек мы используем модуль 2-х байтный модуль TMR1 все в том же 74 пике. На С0-С1 повесили часовой кварц (32768Гц) и к таймеру прикрепили прерывание по переполнению. По логике, при частоте импульсов 2^15 Гц 16-разрядный таймер должен переполняться каждые 2 секунды. Но мало того, для получения интервала в 1 сек нам пришлось еще и предделитель к нему поставить 1:2 ! Только так получилось что он сбрасывается примерно каждую секунду. 'Примерно' - если сверять его с часами то он за минуту уходит на 10-15 секунд. Как такое может быть? Ведь часы с этим кварцев работали нормально. Или я считать в двоичной системе разучился. Но 2^15=32768, а именно столько кварц дает импульсов в 1 секунду и от такой частоты 15-разрядный счетчик должен переполняться. Но у нас 16-разрядный,-->он должен сбрасываться в 2 раза реже. Он жн сбрасывается в 2 раза чаще... Что касается программы, ни в один из байтов таймера мы ничего не записываем, только считываем. По переполнению переходим в подпрограмму обработки прерывания и там делаем все что нам нужно. |
|||
|
||||
| PILOT |
|
|||
|
производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
А вы померить осциллографом частоту кварца можете? (через усилок например)
Может гармонику ловите 4х? СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
| jimmi |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.9.2004 Репутация: 5 Всего: 5 |
Да, я тоже с такой ситуацией столкнулся, кварц генерит на своей частоте, посчитал константу для таймера, запустил устройство. Частота импульсов на выходе почти в два раза ниже. Просто подстроил по осциллографу константу таймера и все. Загадка какая-то.
Комманда BANKSEL переключает банки в ПИКе. Регистры лежат в разных банках, и могло такое быть, что ты писал в совершенно другой регистр. В отладчике это можно увидеть. |
|||
|
||||
| PILOT |
|
|||
|
производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
а я как-то раз столкулся именно с гармониками (правда частоты повыше)... особенно часто это бывает на поделках, где не всегда получается все красиво соединить проводниками.
СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
| Kaskad |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 24.9.2004 Репутация: нет Всего: 3 |
Нету.
Ничего не понял У меня один раз так было, сижу смотрю мульты с антимульт.ру и бац экран гаснит, опять появляется изображение, а там куча элементов предыдуших кадров с новыми и всё хаотично движется, какие то звуки(наложение). короче ужас шо было -------------------- Well come to America! |
||||
|
|||||
| jimmi |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.9.2004 Репутация: 5 Всего: 5 |
Комманда BANKSEL у ПИКа есть, так как транслятор ассемблера не ругается, банки переключаются нормально, устанавливается тот банк памяти, в котором находится регистр, указанный операндом в этой комманде.
Ну я же не сам эту комманду придумал, а нашел в интернете в прошивке реально работающего устройства. В книге "Микроконтроллеры PIC16X7XX" автор В.А.Ульрих такой комманды действительно нет, но есть примеры с инициализацией портов. Например на странице 55 clrf PORTA bsf STATUS,RPO ;Явно указываем банк 1 movlw 0xCF movf TRISA |
|||
|
||||
| quarz |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 7.1.2005 Репутация: нет Всего: 3 |
jimmi то что такой команды нет - только что проверил. В доке с microchip.com где расписывались двоичные коды АЛУ и мнемоника команды, banksel не было. Скорее всего это макрокоманда MPASM'a , который сам подставляет нужный регистр переключая RPx в зависимости от конкретного пика.
|
|||
|
||||
| rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: нет Всего: 2 |
А мне очень интересно то, что такие команды как BANKSEL не написаны в книге по пикам от микрочипа. И там листинги программ без этого. А у нас без этого не работает. В чем же дело?
|
|||
|
||||
| PILOT |
|
|||
|
производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
BANKSEL - не команда видимо, а директива.
СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
![]()
|
| Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |