Модераторы: PILOT, ManiaK, Mazzi

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Последовательная по стробу, где ошибка? 
:(
    Опции темы
quarz
Дата 30.4.2005, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 7.1.2005

Репутация: нет
Всего: 3



Пишу для PIC16F74 программу - по стробу на portb,0 выдает побитно переменную. Не работает!
Он даже не выходит на прерывание

Код

ORG    0x000
goto    Init
ORG    0x004
goto    Int


;---------------------------Подпрограмма обработки прерывания---------------------------
Int
    
movwf    w_tmp        ; сохранение W
movf    status, 0       ; и status
movwf    status_tmp

rrf    const, 1

btfsc    status, 0
bsf    portb, 1
btfss    status, 0
bcf    portb, 1

btfsc    status, 0
bsf    const,7
btfss    status, 0
bcf    const,7

movf    status_tmp, 0    ;восстанавливаем 
movwf    status        ;значения регистров
movf    w_tmp, 0    ;

bcf    intcon, 1

retfie
;-------------------------//Подпрограмма обработки прерывания//-------------------------



;--------------------------------------------Init--------------------------------------------
Init

bcf    status, RP0
    clrf    status
    BANKSEL    portb
    clrf    portb

bsf    status, RP0
    movlw    0xff
    BANKSEL    trisa
    movwf    trisa

    BANKSEL    trisb
    clrf    trisb
    bsf    trisb, 0              ;portb, 0 - INT прерывание

    clrf    option_reg
    bsf    option_reg, 7        ;не подтягивать portb к Vdd
    bsf    option_reg, 6        ;прерывание по переднему фронту

bcf    status, RP0

    clrf    intcon
    bsf    intcon, 7        ;GIE
    bsf    intcon, 6        ;маска перифирийных устройствых
    bsf    intcon, 4        ;маска RB0\INT

    movlw    B'10101010'
    movwf    const

incfsz    tupoi_pic_init, 1
goto    Init            ;это глупый Init будет повторятся 256 раз!!!
goto    Begin

;------------------------------------------//Init//------------------------------------------



Begin

goto    Begin

End

PM MAIL   Вверх
PILOT
Дата 30.4.2005, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



В симуляторе работает?

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
quarz
Дата 30.4.2005, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 7.1.2005

Репутация: нет
Всего: 3



если честно не пробовал, мне тоже такая мысль приходила. Но я ее упорно отгонял, лень было доставать диск и ставить. Вместо этого я еще раз просматривал код. Но ошибок нет. Нет?
PM MAIL   Вверх
PILOT
Дата 30.4.2005, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Я тебе помочь не смогу, т.к. на пиках не программлю.
Но могу подсказать следующее:
а) проверь разрешил ли ты прерывание по перепаду уровня на выводе
б) проверь по какому перепаду (из нуля в единицу, наоборот и т.п.)
в) разрешил ли ты глобально прерывания (т.е. разрешил ли ты в принципе прерывания)
г) настроен ли пин-прерывания на вход (возможно в ПИКах это не нужно)
д) настроен ли пин для передачи на выход(возможно в ПИКах это не нужно)

Если ты пересылаешь байт, то как ты собираешься увидеть что очередной байт пересылается если скорость передачи очень большая, можно и не увидеть.

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
quarz
Дата 30.4.2005, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 7.1.2005

Репутация: нет
Всего: 3



PILOT спасибо, все эти действия сделаны.
Алгоритм такой: по каждому переднему фронту стробы пик выдает биты переменной начиная с младшего(сдвиг вправо). Скорость передачи байта зависит от частоты стробирующих импульсов.
PM MAIL   Вверх
PILOT
Дата 30.4.2005, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



ясно, сам понимаешь, я не ПИКист smile могу посоветовать теперь только симулятор...

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
cardinal
Дата 30.4.2005, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Цитата(quarz @ 30.4.2005, 18:06)
Он даже не выходит на прерывание

А это что значит?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
PILOT
Дата 30.4.2005, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Осмелюсь предположить, что при дерганьи вывода который вызывает прерывание не происходит самомго проерывания, вот только как он это обнаружил без эмулятора и симулятора?

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
quarz
Дата 1.5.2005, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 7.1.2005

Репутация: нет
Всего: 3



PILOT - точно. А обнаружить это не составило никакого труда. Как видно из кода, в Int'е я вывожу побитно переменную const на portb<1>. Но ее состояние даже не меняется.
Пробовал также в главном цикле(Begin-->End) отсылать пик поспать. При этом тактовый генератор тоже молчит и любое прерывание должно выкинуть пик в подпрограмму обработки прерывания Int. Но генерация по прежнему не восстанавливается.
Я думаю есть какие то особенности настройки прерывания у этого пика.
Пролистал всю книгу - тишина...
PM MAIL   Вверх
cardinal
Дата 2.5.2005, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



А это
Цитата
это глупый Init будет повторятся 256 раз!!!

и это
Цитата(quarz @ 1.5.2005, 18:56)
Как видно из кода, в Int'е я вывожу побитно переменную const на portb<1>.

как у тебя реализовано?

p.s. мне просто команды pic'a неизвестны...



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
ManiaK
Дата 2.5.2005, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 2
Всего: 29



Цитата(quarz @ 30.4.2005, 20:06)
ORG    0x000
goto    Init
ORG    0x004
goto    Int

Вот этот кусочек очень интересен.
Я в асме не очень силён пока, но впервые вижу использование goto для перехода на обработку прерывания.
PM MAIL WWW   Вверх
Guest
Дата 2.5.2005, 14:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А как еще???
  Вверх
PILOT
Дата 2.5.2005, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



ManiaK smile smile
По другому не сделаешь, либо прямо на месте обрабатываешь (если позволяет архитектура), несколько байт там бывает...

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
ManiaK
Дата 3.5.2005, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 2
Всего: 29



smile smile smile smile Виноват, что называется "утро после 1 мая". Единственная мелкосхемка, которую на асме шайтанил - At89C**51. Дык там команды goto нет вовсе. Следите уровень мышления "после праздника": асемблерной команды нет, смотрим где есть; Си - ага, а прога на асме - значит неправильно что-то. smile

1 мая - гнусный праздник! smile

Принесли сейчас PIC12F675, тоже с прерываниями работать придётся. Т.ч. "как только - так сразу!" smile
PM MAIL WWW   Вверх
quarz
Дата 3.5.2005, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 7.1.2005

Репутация: нет
Всего: 3



Все, теперь ясно в чем было дело. Моя ошибка. А пока вчера с другом разбирались в чем дело погром у него дома устроили...чего стоит что мы винду98 ставили 4 часа...на 4 компах пробовали...
В общем код, который я выложил в самом начале, рабочий. А какие чудеса вчера творились - кину на днях тему во флейм. Я сам думал что чертовщины не бывает..smile)
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0634 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.