24.05.2016, 23:43
|
|
Прописка
Регистрация: 25.04.2010
Сообщений: 24
Сказал спасибо: 9
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
|
Re: WDT
Сообщение от NewWriter
|
По вашему, лучше писать equ в каждой строчке?
|
это то же самое что и CBLOCK по смыслу - абсолютная адресация.
Чтобы программу разбить на модули используются перемещаемые секции (relocatable code) типа UDATA и CODE, никаких ORG и абсолютных адресов
|
|
|
|
24.05.2016, 23:53
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: WDT
Да не прикалывайтесь вы над Русалочкой со своим перемещаемым кодом. У него и так всё "там не помню, там не знаю".
|
|
|
|
25.05.2016, 22:00
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: WDT
Что ни ответ - все по теме, все о WDT...
А насчет Си...
Сравните обьем кода, скажем 4-х прерываний (было INT,T0,T1,UART,ADC)
после компиляции Си и АСМ. А потом дисасемблируйте оба результата.
Сильно разняться.
На вкус и цвет, как говорится...
Когда фазоимпульсное управление нагрузкой, любая пара call - return добавит 4 шага, что не всегда есть гут...
Бл. и сам туда же.
Лирика...
P.S. поправка: не русалочка, а РусЯвочка, Руслан, Руся (маманя так называла, вот и приклеелось).
__________________
Смотрящий под ноги - звёзды видит в лужах.
|
|
|
|
25.05.2016, 23:41
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: WDT
Сообщение от rusyvochka
|
Что ни ответ - все по теме, все о WDT...
|
А что ВДТ? Начитались сказок? Нормальная сделанная прога и при выключенном ВДТ должна работать. И сохранять свою работоспособность даже при внешних воздействиях. И уже говорили, ВДТ не панацея, это последний рубеж, на который тоже особо надеяться нельзя.
Сообщение от rusyvochka
|
А насчет Си...
|
А что Си? ПИКовые, даже старые, ХайТековские компили творили вполне вменяемый код, но я вас не уговариваю, решать вам.
Сообщение от rusyvochka
|
Сравните обьем кода, скажем 4-х прерываний (было INT,T0,T1,UART,ADC)
после компиляции Си и АСМ. А потом дисасемблируйте оба результата.
Сильно разняться.
|
Та ну? Насколько? На размер начального кода и обнуление переменных? Невелика потеря! А мудохаться с банками и страницами ещё не достало? Зато с вашим подходом кодирования вероятность выхода проги на Си в рабочем состоянии намного будет выше, чем ваша писанина на АСМ.
Сообщение от rusyvochka
|
На вкус и цвет, как говорится...
|
Не уговариваю. Но задуматься нужно.
Сообщение от rusyvochka
|
Когда фазоимпульсное управление нагрузкой, любая пара call - return добавит 4 шага, что не всегда есть гут...
|
Вы о чём сейчас? Вы считаете свой код на АСМе идеалом по скорости и размеру? Я вас умоляю! На Си функции можно инлайнить, можно тулить макросы, можно АСМовые вставки делать, если уж совсем туго. Да и на АСМе вам с каждым днём всё труднее будет ждать помощи. Народ давно уже свалил на Си и на другие платформы. Вы скоро уже станете "последним из могикан".
|
|
|
Сказали "Спасибо" STM32F0
|
|
|
26.05.2016, 19:59
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: WDT
А я вообще BASIK люблю, который с Randomize USR
На вскидку: количество "счастливых" билетов от 000000 (образец) до 999999
при кварце 4 МГц - 16,556 сек, 50 строк, если проверку через Call / Ret - 24.330 сек: 1.5 раза по времени, по обьему есно меньше.
Пишем на С?
Забыл
версия 1 - 16,556 сек версия 2 - 18,667 сек
__________________
Смотрящий под ноги - звёзды видит в лужах.
Последний раз редактировалось rusyvochka; 27.05.2016 в 19:33.
Причина: Склероз
|
|
|
|
04.06.2016, 16:12
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: WDT
Поправте меня, если не прав:
- чтобыполучить доступ к "МОИМ" данным находясь в любом банке памяти, достаточно раположить их в "регистры с адресами F0h-FFh, 170h-17Fh, 1F0h-1FFh реализованых как статическоее ОЗУ с отображением на регистры 70h-7Fh".
Т.е. привычное
Код:
|
CBLOCK 0x70
Dig1
Dig2
Dig3
Dig4
Dig5
Dig6
Temp
Resultat_L
Resultat_H
ENDC |
имеет право на жизнь?
Всего то сменить CDLOCK 0x20 на CDLOCK 0x70?
Воды то налили...
__________________
Смотрящий под ноги - звёзды видит в лужах.
|
|
|
|
05.06.2016, 00:42
|
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,633
Сказал спасибо: 73
Сказали Спасибо 1,793 раз(а) в 647 сообщении(ях)
|
Re: WDT
Сообщение от rusyvochka
|
чтобыполучить доступ к "МОИМ" данным находясь в любом банке памяти, достаточно раположить их в "регистры с адресами F0h-FFh, 170h-17Fh, 1F0h-1FFh реализованых как статическоее ОЗУ с отображением на регистры 70h-7Fh".
|
Да, всё правильно понимаете...
|
|
|
|
05.06.2016, 03:38
|
|
Гражданин KAZUS.RU
Регистрация: 10.06.2010
Сообщений: 590
Сказал спасибо: 222
Сказали Спасибо 232 раз(а) в 152 сообщении(ях)
|
Re: WDT
Сообщение от rusyvochka
|
Всего то сменить CDLOCK 0x20 на CDLOCK 0x70?
Воды то налили...
|
ну ли в конце концов пользоваться для написания кода заготовками мплаба , благо их есть
C:\Program Files\Microchip\MPASM Suite\Template\Code
и не наступать на детские грабли и писать магические числа типа
Код:
|
__CONFIG _CONFIG1, 20CCh
__CONFIG _CONFIG2, 770h |
вместо осмысленых
Код:
|
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V |
ну и так мысли в слух
Код:
|
RW_1Wire CLRWDT ; передача чтение (при FF все "1"),для 4 Мц.
BCF Data_Wire ; при входе, сбросил бит, перстраховка защелки
MOVWF Temp ; Исходные данные были в W
MOVLF 0x86,FSR ; TRISB
MOVLF 0x08,Cykl ; 8 bit
RWLoop BCF Wire ; 0 --› 1-Wire, 3 мкс
nop ; ЕСЛИ ЗДЕСЬ ушли в прерывание
nop
BTFSC Temp,0x00 ; Установить,если младший бит TEMP1 = 1
BSF Wire ; при чтении - отпустил шину через 3 мкс
RRF Temp,F ; Подготовить следующий бит
Pauza 0x03 ; Пауза ~15 мкс,от старта в "0" до установки данных на шине
BCF Temp,0x07 ; Принимаем в тот же Tемп
BTFSC Data_Wire ; чтение. в интернвале 15-60, номинал = 15
BSF Temp,0x07 ; ИЛИ ЗДЕСЬ ушли в прерывание
Pauza 0x10 ; При передаче "0"
BSF Wire ; 46 мкс до отпускания шины
DECFSZ Cykl,F ; 8 бит обработаны?
GOTO RWLoop ; Еще нет - переход: между тайм слот 50 мкс
MOVFW Temp ; Принятый байт в W
Return |
какой будет результат...
Последний раз редактировалось DmitriyVDN; 05.06.2016 в 03:52.
|
|
|
|
05.06.2016, 17:23
|
|
Гражданин KAZUS.RU
Регистрация: 30.05.2008
Адрес: Запорожье, Украина
Сообщений: 505
Сказал спасибо: 190
Сказали Спасибо 95 раз(а) в 56 сообщении(ях)
|
Re: WDT
Цитата:
|
какой будет результат...
|
не сразу и нашел, чего. Цвет бы выделить...
лирика.
Да-да, Ваша правда. Даже и не пытался ровнять тайминги.
Тут (по моему криворукию) два варианта: или запретить прерывания на время подпрограммы, что не есть хорошо визуально на индикации, или, как в моем случа (совестно - всегда так делаю) расположить в промежутке между прерываниями.
Если конкретно в этой программе, жду переход через "0", запрет INT, разрешение Т0 - индикатор, смена индикации (все 8 разрядов за 10 мкс), и до следующего перехода (INT, по времени еще с запасом) чтение / запись, запрет Т0, разрешение INT. Еще, дабы не частило, не каждый такт. Выше расписано. Были попытки подружить прерывания с данной подрограммой - плюнул, "обдурил" флагом "прерывание прошло", и читаю / пишу только тогда. В случае "непредвиденного" входа в обработку прерываний - гаплык, потому, для перестраховки, запрещал...
Может и криво: все работает, все стреляет. Пусть будет.
Сенк за тыка-носомье, с этим уже влетал, записано в черный список...
Ну а по первому: выставляю биты конфигурации в окошке МПЛАБ, выбором из выпадашки. Копирую в програмныйй код для перестраховки: так толком и не понял: если галочка "код в программе" не стоит, присоеденяет ли конфигурацию в HEX или нет, не задумывался. Програмирую П-Кит2, пока без проблем. Из под МП-Лаб как то тоже было, но... Набираю / эммитирую на одном компьютере, прораммирую, как правило, на другом. На всех программаторов не напасешся...
Бл, понесло, извиняюсь за лирику, погода, наверное.
__________________
Смотрящий под ноги - звёзды видит в лужах.
|
|
|
|
06.06.2016, 08:46
|
|
Прописка
Регистрация: 11.04.2009
Сообщений: 233
Сказал спасибо: 11
Сказали Спасибо 109 раз(а) в 66 сообщении(ях)
|
Re: WDT
по даташитам WDT - этакая железная штука, которая сработает всегда и вытащит контроллер/прогу из зависа
по моим наблюдениям, в жизни совсем не так - WDT фактически НИЧЕГО НЕ ГАРАНТИРУЕТ, в частности, У AVR.
если уж очень надо - можно снаружи притулить какую-нибудь ATtiny13 или что-то ещё мельче для управления RESET по каким-то критериям, в том числе, напрмер, по отсутствию контрольных импульсов.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:52.
|
|