Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 24.05.2016, 21:47  
rusyvochka
Гражданин KAZUS.RU
 
Аватар для rusyvochka
 
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
rusyvochka на пути к лучшему
По умолчанию Re: WDT

Вот озадачили...
В даташит рекомендовано при входе в подпрограммуобработки прерываний:
Код:
movwf	W_Copy
movfw	STATUS
movwf	Status_Copy
movfw	FSR
movwf	FSR_Copy	; по необходимости
movfw	PCL
movwf	PCL_Copy	; по необходимости
но, в следствии замечаний tsb
Цитата:
если в момент вызова прерывания был включен какой либо банк
у меня вся уверенность в том, что раньше сочинялось, пропала. И по логике то ведь правильное замечание!
Это для сохранения аккумулятора, при резервировании скажем 0х70может "выпасть" любая "параллельная" ячейка, в зависимости от банка при входе, т.е. при выходе с неё же чтение / восстановление и произойдет?
70h - F0h - 17h - 1Fh.
accesses - асоциируется, я так понимаю, а как на самом деле происходит?
И можно / нужно ли в эти адреса помещать "рабочие" регистры: Temp, Cykl, Time ну и др, которые меняются в программе. Попробую по другому: дабы не тасовать банки, я как то резервировал пару-тройку регистров в первом, например, банке, в случае работы с TRIS. т.e. при входе в подпрограмму данные для записи, скажем 1-Wire, в акк; меняю банк, и movwf Temp, который в первом банке. Далее только bcf - bsf TRIS, при выходе банк 0.
Недостаток: или запретить прерывания, или разложить по времени процедуру вне их, скажем после смены разряда индикации, проверка установленного в обработке флага, его сброс и запись 1-Wire Data.
Это как бы мысли вслух. Как поступают великие Гуру?

Цитата:
Признайтесь, почему PIC16 а не ардуина?
Их есть у меня (не раз уже обсасывался этот вопрос, не каюсь!)
Вопрс: чему равен обьем шара?
Ответ: шара обьема не имеет!
Реклама:
__________________
Смотрящий под ноги - звёзды видит в лужах.

Последний раз редактировалось rusyvochka; 24.05.2016 в 21:56.
rusyvochka вне форума  
Непрочитано 24.05.2016, 22:14  
Albert_V
Гражданин KAZUS.RU
 
Регистрация: 13.04.2012
Адрес: Королёв МО
Сообщений: 786
Сказал спасибо: 621
Сказали Спасибо 364 раз(а) в 200 сообщении(ях)
Albert_V на пути к лучшему
По умолчанию Re: WDT

PCL при входе в прерывание сохранять не надо.
Он и так автоматически сохранить в Stack-е.
После сохранения WREG, STATUS-а и т.д. не забудьте переключиться в банк0, поскольку в прерывание вы можете попасть из любого банка.
И ещё:
Опасно у вас сделаны переходы по Count_B0.
После чтения его значения, перед addwf PCL, я бы поставил andlw 7.
И учтите, что это будет работать только если в результате сложения не будет перехода через 255.
Albert_V вне форума  
Непрочитано 24.05.2016, 22:23  
cogen
Прописка
 
Регистрация: 25.04.2010
Сообщений: 24
Сказал спасибо: 9
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
cogen на пути к лучшему
По умолчанию Re: WDT

Эх, вот как-то так я делал. Переменные для хранения предыдущего контекста как раз в тех банконезависимых адресах

Код:
;***** VARIABLE DEFINITIONS 
INT_VAR     UDATA_SHR   
w_temp      RES     1       ; variable used for context saving 
status_temp RES     1       ; variable used for context saving

;*************************************************  ********

INT_VECTOR      CODE    0x0004       ; interrupt vector location
        movwf   w_temp            ; save off current W register contents
        movf    STATUS,w          ; move status register into W register
        movwf   status_temp       ; save off contents of STATUS register

		banksel PIR1			
		btfsc	PIR1,ADIF
		call	HandleADC
		btfsc	INTCON,RAIF
		call	HandleRotEnc
		btfsc	INTCON,T0IF
		call 	HandleTMR0

        movf    status_temp,w     ; retrieve copy of STATUS register
        movwf   STATUS            ; restore pre-isr STATUS register contents
        swapf   w_temp,f
        swapf   w_temp,w          ; restore pre-isr W register contents
        retfie                    ; return from interrupt

Последний раз редактировалось cogen; 24.05.2016 в 23:23. Причина: адрес таки в INT_VAR UDATA_SHR не указываем
cogen вне форума  
Непрочитано 24.05.2016, 22:35  
rusyvochka
Гражданин KAZUS.RU
 
Аватар для rusyvochka
 
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
rusyvochka на пути к лучшему
По умолчанию Re: WDT

Цитата:
не будет перехода через 255.
все время на контроле
Код:
INT_VAR     UDATA_SHR   0x20   
w_temp      RES     1       ; variable used for context saving 
status_temp RES     1       ; variable used for context saving
ну и как то не улавливаю, в чем разница с CBLOCK 0x20?
Где ссылка на 0x70?
Буду оправдываться:
в 16ф628 например, есть неполноценный вывод, у которого отсутствует +фет, для 1-вир саме то, можно гонять данные без смены банков, не трогая трис.
в 886 все выводы полноценные, потому приходиться тасовать банки, отсюда и проблемы, как я понимаю...
Самое противное, после последних правок, 3-е суток полет нормальный, не срок, конечно, но выходные самые сетепроблемные в часном секторе. Думаю заcлуга в распределении времени по операциям: процедуры по очереди, не пересекаясь с обработками прерываний (кроме Т1, но тут, если выпадет пара импульсов при плавном включении освещения, криминала не будет: всеравно, в конце концов, установится макс. яркость).
Овчинка выделки... Не та игрушка. Вопрос темы то WDT $)
__________________
Смотрящий под ноги - звёзды видит в лужах.

Последний раз редактировалось rusyvochka; 24.05.2016 в 22:48.
rusyvochka вне форума  
Непрочитано 24.05.2016, 22:54  
cogen
Прописка
 
Регистрация: 25.04.2010
Сообщений: 24
Сказал спасибо: 9
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
cogen на пути к лучшему
По умолчанию Re: WDT

CBLOCK - моветон

udata_shr – BEGIN AN OBJECT FILE SHARED UNINITIALIZED DATA
SECTION (PIC12/16 MCUs)
4.64.1 Syntax
[label] udata_shr [RAM_address]
4.64.2 Description
This directive declares the beginning of a section of shared uninitialized data. If label
is not specified, the section is named .udata_shr. The starting address is initialized
to the specified address or will be assigned at link time if no address is specified. This
directive is used to declare variables that are allocated in RAM that is shared across all
RAM banks (i.e. unbanked RAM).
cogen вне форума  
Сказали "Спасибо" cogen
rusyvochka (24.05.2016)
Непрочитано 24.05.2016, 23:06  
rusyvochka
Гражданин KAZUS.RU
 
Аватар для rusyvochka
 
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
rusyvochka на пути к лучшему
По умолчанию Re: WDT

Доходчиво, бум знать, сенк!
__________________
Смотрящий под ноги - звёзды видит в лужах.
rusyvochka вне форума  
Непрочитано 24.05.2016, 23:08  
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,633
Сказал спасибо: 73
Сказали Спасибо 1,793 раз(а) в 647 сообщении(ях)
RECTO на пути к лучшему
По умолчанию Re: WDT

Сообщение от rusyvochka Посмотреть сообщение
70h - F0h - 17h - 1Fh.
accesses - асоциируется, я так понимаю, а как на самом деле происходит?
На самом деле происходит так: 70h, F0h, 170h и 1F0 - это физически один и тот же регистр, то есть обращение к которому не зависит от установленного банка (RP0, RP1). Можете записать в 1F0h и потом прочитать это значение из 70h, никакой разницы. И так до регистра 7F (он же - FFh, 17Fh, 1FF). Собственно, это и сделано для того, чтобы можно было сохранить контент при входе в прерывание, когда номер установленного банка заранее не известен.

Сообщение от rusyvochka Посмотреть сообщение
И можно / нужно ли в эти адреса помещать "рабочие" регистры: Temp, Cykl, Time ну и др, которые меняются в программе.
Да, конечно, можно использовать как обычные регистры, но с учетом названных выше особенностей.
RECTO вне форума  
Непрочитано 24.05.2016, 23:17  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: WDT

Сообщение от rusyvochka Посмотреть сообщение
Доходчиво, бум знать, сенк!
Да ничего ты не будешь знать! Переходи на СИ и не мучайся, а не рви свой мозг задрот-АСМ-тягомотиной. От твоей АСМ писанины всё равно толку никакого нет.
STM32F0 вне форума  
Непрочитано 24.05.2016, 23:26  
cogen
Прописка
 
Регистрация: 25.04.2010
Сообщений: 24
Сказал спасибо: 9
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
cogen на пути к лучшему
По умолчанию Re: WDT

пардон, в моём примере был грязный хак, исправился. это для 16f676 было 0x020, адрес линкер должен сам назначить 0x070

Последний раз редактировалось cogen; 24.05.2016 в 23:35.
cogen вне форума  
Непрочитано 24.05.2016, 23:29  
NewWriter
Почётный гражданин KAZUS.RU
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,512
Сказал спасибо: 401
Сказали Спасибо 2,218 раз(а) в 1,316 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: WDT

Сообщение от cogen Посмотреть сообщение
CBLOCK - моветон
Дануна... Ща научите, блин...
это обычная директива ассма, позволяющая объявлять группу с последовательными адресами.
По вашему, лучше писать equ в каждой строчке? Запутаться блин, если че вдруг поправить...
И не путайте генерацию объектных файлов и пись в абсолютном коде

И вообще, да... Чем ТАК писать на асме, лучше уже не мучиться и начать писать на Си. Там хоть половину работы сделает компилятор...
NewWriter вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Attiny13 на коде из Bascom не просыпается по WDT 123ksn AVR 7 18.12.2017 23:30
Работа с WDT в МК PIC16F628 vavan1983 PIC 17 21.02.2015 20:22
wdt не работает yellow87 PIC 14 14.02.2014 05:08
PIC16F88 & WDT tolyanv8 Микроконтроллеры, АЦП, память и т.д 2 02.08.2010 15:37
WDT с чем его едят? t34 Микроконтроллеры, АЦП, память и т.д 6 17.08.2005 23:16


Часовой пояс GMT +4, время: 15:07.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot