| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Глюки PIC. Кто хочет посмеяться? |
| Автор: rcdimon 4.1.2005, 15:30 |
| Не один Micro$oft богат глюками! У Microchip (у них даже в названии что то общее есть Это конечно смешно, но не для меня. Я делаю частотомер. Проверяю не работает. Проверяю выходы пика осциллографом и что я вижу! А что я выижу, можете посмотреть тут, я специально выложил http://www.artem131.narod.ru/doc1.htm (грузится долго, так что подожлите минуты 2-3) И скажите В ЧЕМ ДЕЛО? Мне это совсем не нравится! У меня работа стоит! ЧТо это за сигналы? Пик просто физически не может их давать! Они амлитудой вольт в 6, а питание только 5! и они Аналоговые! Но как? |
| Автор: Guest 4.1.2005, 19:13 |
| Сайт твой не могу посмотреть, пришли картинки на [email protected] На народ.ру хостинг плохой. Смотрел ли пульсации питания? Пробовал ли другой кристалл? Кварц заводится на нужной для него частоте? Попробуй тест со светодиодом с частотой 0,5 Гц - он моргает нормально? Какие в этом случае импульсы? Без схемки трудно что либо сказать, я понимаю что это коммерческая тайна, но не перегружены ли порты? |
| Автор: Гость_Alex 4.1.2005, 21:15 |
| Питание отличное, блок питание от компа. Но что меня больше всего убивает - иногда прога работает нормально, иногда неправильно, иногда вообще не работает, а иногда вообще генерации нет! Может быть я что нибудь у него не инициализирую? |
| Автор: cardinal 4.1.2005, 21:21 | ||
А кристалл какой? Это может быть очень важно!
Где-нибудь не контачит? |
| Автор: Guest 4.1.2005, 21:54 | ||
Кристалл PIC16F74-I/P. Качество пайки проверял - все нормально. В этом пике есть АЦП, так вот про него сказано, что по умолчанию его выводы инициализированы как аналоговые.
Этими командами я ставлю все выводы как цифровые. |
| Автор: cardinal 4.1.2005, 22:12 |
| А что с кварцем? |
| Автор: Гость_Alex 4.1.2005, 22:42 |
| Кварц на 5 МГц, прошивал IC-PROG и там выставлял тип кварца как HS. Варианты - XT, LP, HS и RC. Как я понял LP -низкочастотный, XT - средне и HS высокочастотный. Завтра попробую взять другой пик - может брак |
| Автор: cardinal 4.1.2005, 23:19 |
| Осцилографом посмотри какая у тебя частота, но думаю с 5Мгц проблем быть не должно... |
| Автор: Гость_jimmi 5.1.2005, 10:04 |
| Инициализацию портов делаю так ; ОЧИСТИМ ПОРТЫ ВВОДА ВЫВОДА BANKSEL PORTA CLRF PORTA CLRF PORTB CLRF PORTC ; НАСТРОИМ ПОРТЫ ВВОДА ВЫВОДА BANKSEL TRISC ; ПОРТ С BCF TRISC,0 ; ПОРТ С ВЕСЬ НА ВЫВОД. BCF TRISC,1 BCF TRISC,2 BCF TRISC,3 BCF TRISC,4 BCF TRISC,5 BCF TRISC,6 BCF TRISC,7 ; ПОРТ А ; ПОРТ А ВЕСЬ НА ВВОД BSF TRISA,0 BSF TRISA,1 BSF TRISA,2 BSF TRISA,3 BSF TRISA,4 BSF TRISA,5 BSF TRISA,6 BSF TRISA,7 ; ПОРТ В ; ПОРТ В ВЕСЬ НА ВВОД BSF TRISB,0 BSF TRISB,1 BSF TRISB,2 BSF TRISB,3 BSF TRISB,4 BSF TRISB,5 BSF TRISB,6 BSF TRISB,7 Засылка всего регистра за одну команду mov почему-то приводит к странным результатам (в отладчике). Регистр adcon1 относится к АЦП, он порты не инициализирует. Осциллятор наверное на 5 МГц нужно все-таки XT. На сайте микрочипа есть методика подбора емкостей около кварца по минимальному току потребления кристалла для получения стабильной генерации. Вообще у меня с ПИКом особых проблем не было - даташит на русском, комманд мало. |
| Автор: Alexei 5.1.2005, 10:43 | ||
Такое питание может быть отличным только в худшую сторону: помех немерено! |
| Автор: rcdimon 5.1.2005, 11:20 |
| Питание пробовали не только от компа, пробовали с двумя разными (импульсным и линейным). Не мне эти пики очень нравятся! Это что за полиморфные ошибки? Всегда по разному работает! Подносишь палец на растояние ближе чем 4 См так он вообще такие фичи выдавал! Он что чуствителен к наводкам? И все же, что вы мне посоветуете делать? Может и правда на атмелы переходить? У них хоть асм нормальный. Все видели фотки? Фотки этих крассивых аналоговых сигналов? Я и не думаль, что в пике есть такие недокументированные возможности как ЦАП, и как это я с ним работаю, не зная про ниго ничего |
| Автор: cardinal 5.1.2005, 15:19 | ||
Ага... И компилятор сишный под них тоже есть. Называется sdcc, поищи в инете... |
| Автор: Guest 5.1.2005, 16:49 |
| Вот выдержки форума по ПИКам http://www.microchip.ru/phorum/read.php?f=2&i=41058&t=41058&phorum_uriauth=jimmi%3Ac2888045cc3a9dfafced6e26b7e4d2c5 http://www.microchip.ru/phorum/read.php?f=2&i=74879&t=74879&phorum_uriauth=jimmi%3Ac2888045cc3a9dfafced6e26b7e4d2c5 http://www.microchip.ru/phorum/read.php?f=2&i=75347&t=75347&phorum_uriauth=jimmi%3Ac2888045cc3a9dfafced6e26b7e4d2c5 http://www.microchip.ru/phorum/read.php?f=2&i=74702&t=74702&phorum_uriauth=jimmi%3Ac2888045cc3a9dfafced6e26b7e4d2c5 http://www.microchip.ru/phorum/read.php?f=2&i=74237&t=74237&phorum_uriauth=jimmi%3Ac2888045cc3a9dfafced6e26b7e4d2c5 http://www.microchip.ru/phorum/read.php?f=2&i=73884&t=73884&phorum_uriauth=jimmi%3Ac2888045cc3a9dfafced6e26b7e4d2c5 http://www.microchip.ru/phorum/read.php?f=2&i=70135&t=70135&phorum_uriauth=jimmi%3Ac2888045cc3a9dfafced6e26b7e4d2c5 http://www.microchip.ru/phorum/read.php?f=2&i=58713&t=58713&phorum_uriauth=jimmi%3Ac2888045cc3a9dfafced6e26b7e4d2c5 http://www.microchip.ru/phorum/read.php?f=2&i=69254&t=69254&phorum_uriauth=jimmi%3Ac2888045cc3a9dfafced6e26b7e4d2c5 Может найдешь решение своей проблемы |
| Автор: Alexei 6.1.2005, 09:47 | ||
Попробуй Алгоритм Билдер для АВР - совсем напрягаться не надо! А по конкретному вопросу: попробуй внешний тактовый генератор. |
| Автор: PILOT 7.1.2005, 23:14 |
| ошибка 99.9999999999999999999999999% в программе. скорее всего переход на команду выше чем размер программы... симптомы именно эти. (может стек портится, может jmp куда-то не туда). Я бы порекомендовал по шагам... СУВ. |
| Автор: quarz 8.1.2005, 01:20 |
| Может быть и стек, причем у 3 пиков одновременно..! |
| Автор: PILOT 8.1.2005, 15:26 |
| а может за границы страницы вылез... Я всегда относился к подобным глюкам с самокритикой, и в 99.999% виноват был именно я, либо моя невнимательность, либо незнание, но в любом случае - я. Так что усердия вам в поиске программного бага. СУВ. |
| Автор: quarz 10.1.2005, 22:31 |
| Все верно, ошибка была именно в программе. Очень помог пример 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 11.1.2005, 00:53 |
| А вы померить осциллографом частоту кварца можете? (через усилок например) Может гармонику ловите 4х? СУВ. |
| Автор: jimmi 11.1.2005, 10:54 |
| Да, я тоже с такой ситуацией столкнулся, кварц генерит на своей частоте, посчитал константу для таймера, запустил устройство. Частота импульсов на выходе почти в два раза ниже. Просто подстроил по осциллографу константу таймера и все. Загадка какая-то. Комманда BANKSEL переключает банки в ПИКе. Регистры лежат в разных банках, и могло такое быть, что ты писал в совершенно другой регистр. В отладчике это можно увидеть. |
| Автор: PILOT 11.1.2005, 22:31 |
| а я как-то раз столкулся именно с гармониками (правда частоты повыше)... особенно часто это бывает на поделках, где не всегда получается все красиво соединить проводниками. СУВ. |
| Автор: Kaskad 13.1.2005, 16:01 | ||||
Нету.
Ничего не понял У меня один раз так было, сижу смотрю мульты с антимульт.ру и бац экран гаснит, опять появляется изображение, а там куча элементов предыдуших кадров с новыми и всё хаотично движется, какие то звуки(наложение). короче ужас шо было |
| Автор: jimmi 13.1.2005, 18:03 |
| Комманда BANKSEL у ПИКа есть, так как транслятор ассемблера не ругается, банки переключаются нормально, устанавливается тот банк памяти, в котором находится регистр, указанный операндом в этой комманде. Ну я же не сам эту комманду придумал, а нашел в интернете в прошивке реально работающего http://kazus.ru/modules.php?name=Content&pa=showpage&pid=835. В книге "Микроконтроллеры PIC16X7XX" автор В.А.Ульрих такой комманды действительно нет, но есть примеры с инициализацией портов. Например на странице 55 clrf PORTA bsf STATUS,RPO ;Явно указываем банк 1 movlw 0xCF movf TRISA |
| Автор: quarz 15.1.2005, 20:07 |
| jimmi то что такой команды нет - только что проверил. В доке с microchip.com где расписывались двоичные коды АЛУ и мнемоника команды, banksel не было. Скорее всего это макрокоманда MPASM'a , который сам подставляет нужный регистр переключая RPx в зависимости от конкретного пика. |
| Автор: rcdimon 15.1.2005, 21:05 |
| А мне очень интересно то, что такие команды как BANKSEL не написаны в книге по пикам от микрочипа. И там листинги программ без этого. А у нас без этого не работает. В чем же дело? |
| Автор: PILOT 15.1.2005, 21:36 |
| BANKSEL - не команда видимо, а директива. СУВ. |