Например TDA7294

Форум РадиоКот • Просмотр темы - Сравнение ячейки EEPROM.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс фев 08, 2026 18:56:07

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 22 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Сравнение ячейки EEPROM.
СообщениеДобавлено: Пт июн 26, 2015 23:10:32 
Открыл глаза

Зарегистрирован: Пн сен 22, 2008 14:19:27
Сообщений: 70
Откуда: Челябинск
Рейтинг сообщения: 0
Доброй ночи всем! Нужна помощь чайнику! Есть ячейка EEPROM 0x79 в которой периодически появляются вот такие данные 00, 01, 02, 03. Не знаю как написать кусок программы, чтоб в зависимости от этих вариантов, можно было уйти в разные метки.

_________________
Все надо делать с юмором! - сказал палач рубя голову дольками....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Сб июн 27, 2015 05:12:05 
Встал на лапы

Карма: 1
Рейтинг сообщений: 12
Зарегистрирован: Пт окт 19, 2012 05:54:55
Сообщений: 132
Рейтинг сообщения: 0
А если язык дольками порубить, чтоб понятней стало? На какой мове ваяем?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Сб июн 27, 2015 05:22:23 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1501
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15441
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Векторный переход по типу
addwf PCL,f
или чего подобного (предобработка указателя адреса вектора), а по тому адресу сам вектор или короткая программа-исполнитель.
только не забывать, что по факту будет переход на PCLATH:PCL и по исполнении в PCH останется полное значение из PCLATH. Плюс еще нюанс - перенос из старшего разряда PCL не учитывается! Т.е. переход только в пределах текущей страницы.
:beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Сб июн 27, 2015 05:38:55 
Открыл глаза

Зарегистрирован: Пн сен 22, 2008 14:19:27
Сообщений: 70
Откуда: Челябинск
Рейтинг сообщения: 0
На ассемблере, забыл указать!

BCF STATUS,RP0
MOVF 0x79
MOVWF EEADR
BSF STATUS,RP0
BSF EECON1,0
BCF STATUS,RP0
movF EEDATA
BTFSC EEDATA,0
GOTO PROV
BTFSC EEDATA,1
GOTO GUARD0
BTFSC EEDATA,0
GOTO LIGNT0
BTFSC EEDATA,0
GOTO ALARM

Вот пытался, хоть как то ...

_________________
Все надо делать с юмором! - сказал палач рубя голову дольками....


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Сб июн 27, 2015 05:51:46 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2954
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24817
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
BOB51 писал(а):
Векторный переход по типу
addwf PCL,f

Речь не шла о чтении из программного флеша.
Речь шла о EEPROM данных.
taime писал(а):
Вот пытался, хоть как то ...

Проверка бита здесь не слишком удобна.
И к тому же у Вас с ошибками.
Код:
.......
movlw     0x01
subwf     EEDATA, w
btfsc       STATUS, Z
goto        <метка 01>
movlw     0x02
subwf     EEDATA, w
btfsc       STATUS, Z
goto        <метка 02>
............

Это фрагмент, как Вы сами поняли...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Сб июн 27, 2015 06:09:21 
Открыл глаза

Зарегистрирован: Пн сен 22, 2008 14:19:27
Сообщений: 70
Откуда: Челябинск
Рейтинг сообщения: 0
Не доходит до меня, в какое место вставить этот текст...(

_________________
Все надо делать с юмором! - сказал палач рубя голову дольками....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Сб июн 27, 2015 06:14:19 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2954
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24817
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Весь код
Код:
movlw     EEADR
movwf     FSR
movlw     0x79
movwf     INDF
movlw     EEDATA
movwf     FSR
movlw     0x00
subwf     INDF, w
btfsc       STATUS, Z
goto        <метка 00>
movlw     0x01
subwf     INDF, w
btfsc       STATUS, Z
goto        <метка 01>
movlw     0x02
subwf     INDF, w
btfsc       STATUS, Z
goto        <метка 02>
movlw     0x03
subwf     INDF, w
btfsc       STATUS, Z
goto        <метка 03>

PS Исправил на косвенную адресацию, поелику не помню где расположен EEDATA


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Сб июн 27, 2015 06:52:42 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1501
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15441
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Так а что мешает данные из той ячейки EEPROM в акумулятор (W) считать и затем прыгнуть? 8)
В принципе и перебор вариантов с анализом на совпадение проходит - для начинающего он более безопасный.
Все зависит от требований к программе и ресурсов.
:beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Сб июн 27, 2015 07:30:47 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2954
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24817
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
BOB51 писал(а):
и затем прыгнуть? 8)

С точки зрения кода выигрыша никакого не будет, потому что СНАЧАЛА нужно прочитать ТАБЛИЦУ переходов, а лишь затем "прыгнуть".
То, что ТС запутается - 100%.
Но можно:
Код:
; для первой страницы кода
movlw   EEADDR
movwf   FSR
movlw   0x79
movwf   INDF
movlw  EECON1
movwf  FSR
bsf       INDF, RD
movlw   EEDATA
movwf   FSR
movf    INDF, w
clrf    PCLATH
call    tabFoo
movwf   PCL
...........
tabFoo:
addwf   PCL, f
retlw   <метка 00>
retlw   <метка 01>
retlw   <метка 02>
retlw   <метка 03>


Последний раз редактировалось КРАМ Вс июн 28, 2015 06:14:53, всего редактировалось 5 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Сб июн 27, 2015 07:36:08 
Открыл глаза

Зарегистрирован: Пн сен 22, 2008 14:19:27
Сообщений: 70
Откуда: Челябинск
Рейтинг сообщения: 0
Блиин, да я и так запутался))) не хочет прыгать на метку...

_________________
Все надо делать с юмором! - сказал палач рубя голову дольками....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Сб июн 27, 2015 07:40:28 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2954
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24817
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Я поправил адресацию EEDATA в первом варианте.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Сб июн 27, 2015 08:54:17 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1501
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15441
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Это если таблица на нулевой странице. - Проще с исходным содержимым PCLATH.
А ежли сразу же за текущим значением счетчика? - там простая подстановка как константы.
Да и в любом случае или три (несколько) сравнений с предварительно записанным в буфер ОЗУ значением или непосредственными данными (у среднемладших нет команд неразрушающего контроля вида CPL/CPI)... Возможен и побитовый перебор - но там данные надо готовить в соответствующем виде
Другое дело было бы исходным условием не "каждому значению свой обработчик", а переход только по аварийному статусу при нескольких нормально завершенных - тогда всё значительно проще будет.
:roll:
Топикстартеру вопросы для "конкретики выпутывания" :
- а что за ПИК используется? (для конкретного анализа структуры возможных решений) ;
- зачем пересылка через еепромку, когда достаточно ОЗУ? ;
- есть ли смысл в отдельной подпрограмме для каждого состояния или достаточно обработки статуса ошибки? ;
- обязательна ли структура контролируемого значения в виде числовых данных или возможно иное представление данных для анализа? .
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Сб июн 27, 2015 22:25:48 
Открыл глаза

Зарегистрирован: Пн сен 22, 2008 14:19:27
Сообщений: 70
Откуда: Челябинск
Рейтинг сообщения: 0
КРАМ писал(а):
Весь код
Код:
movlw     EEADR
movwf     FSR
movlw     0x79
movwf     INDF
movlw     EEDATA
movwf     FSR
movlw     0x00
subwf     INDF, w
btfsc       STATUS, Z
goto        <метка 00>
movlw     0x01
subwf     INDF, w
btfsc       STATUS, Z
goto        <метка 01>
movlw     0x02
subwf     INDF, w
btfsc       STATUS, Z
goto        <метка 02>
movlw     0x03
subwf     INDF, w
btfsc       STATUS, Z
goto        <метка 03>

PS Исправил на косвенную адресацию, поелику не помню где расположен EEDATA


Ну не хочет прыгать на метку, хотя в 0x79 биты записаны... Я точно должен был только метки проставить?

_________________
Все надо делать с юмором! - сказал палач рубя голову дольками....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Сб июн 27, 2015 23:24:48 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
Ничего не забыли?
Есть процедура чтения EEPROM, которая указывается в каждой документации на контроллер в разделе "DATA EEPROM MEMORY".
К примеру, такая:
Изображение

taime, С каким конкретно контроллером вы работаете?
Сравнение чисел, обычно, проще делать через XOR.
Каким образом через FSR вы хотите обратиться к EEPROM???
Берёте данные из EEDATA, загружаете в TEMP и работаете с TEMP-ом.
TEMP, естественно, в SRAM.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Вс июн 28, 2015 05:32:07 
Открыл глаза

Зарегистрирован: Пн сен 22, 2008 14:19:27
Сообщений: 70
Откуда: Челябинск
Рейтинг сообщения: 0
Albert_V писал(а):
Ничего не забыли?
Есть процедура чтения EEPROM, которая указывается в каждой документации на контроллер в разделе "DATA EEPROM MEMORY".
К примеру, такая:
Изображение

taime, С каким конкретно контроллером вы работаете?
Сравнение чисел, обычно, проще делать через XOR.
Каким образом через FSR вы хотите обратиться к EEPROM???
Берёте данные из EEDATA, загружаете в TEMP и работаете с TEMP-ом.
TEMP, естественно, в SRAM.


Тут даже, можно сказать не знал! Работаю с PIC16F628, дело имею с ассемблером можно сказать второй раз, задача поправить один имеющийся чужой исходник и разобраться в нём ) так что сильно меня не ругайте...)

_________________
Все надо делать с юмором! - сказал палач рубя голову дольками....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Вс июн 28, 2015 05:59:15 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2954
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24817
Откуда: Московская область, Фрязино
Рейтинг сообщения: 1
Albert_V писал(а):
Сравнение чисел, обычно, проще делать через XOR.

Чем проще?
:)
Вы видите разницу между:
Код:
movlw 0x01
subwf  <RAM>, F
btfsc    STATUS, Z
goto     <label 01>

и
Код:
movlw 0x01
xorwf  <RAM>, F
btfsc    STATUS, Z
goto     <label 01>

? :tea:

Albert_V писал(а):
Каким образом через FSR вы хотите обратиться к EEPROM???

На эту тему есть ограничения?
Разве EEDATA или EEADR не отображены на общее адресное пространство ОЗУ?
:)
Использование FSR-INDF позволяет забыть о расположении используемых SFR в конкретном банке.
Что весьма удобно и устраняет множество ошибок.
А вот управление чтением я действительно пропустил - виноват, забыл... :oops:

Любезный ТС, вставьте пожалуйста фрагмент кода:
Код:
movlw  EECON1
movwf  FSR
bsf       INDF, RD

перед
Код:
movlw     EEDATA
movwf     FSR

Получится:
Код:
; пишем адрес в EEPROM
movlw     EEADR
movwf     FSR
movlw     0x79
movwf     INDF
; даем команду чтения
movlw     EECON1
movwf     FSR
bsf       INDF, RD
; ставим указатель на EEDATA
movlw     EEDATA
movwf     FSR
; сравнение и переход по 0
movlw     0x00
subwf     INDF, w
btfsc       STATUS, Z
goto        <метка 00>
; сравнение и переход по 1
movlw     0x01
subwf     INDF, w
btfsc       STATUS, Z
goto        <метка 01>
; сравнение и переход по 2
movlw     0x02
subwf     INDF, w
btfsc       STATUS, Z
goto        <метка 02>
; сравнение и переход по 3
movlw     0x03
subwf     INDF, w
btfsc       STATUS, Z
goto        <метка 03>


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Вс июн 28, 2015 12:32:14 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1501
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15441
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
taime
Весьма смелое решение внести свои правки в чужой исходник на ассемблере для начинающего :beer:
Только тут одной консультацией по подстановке не обойтись - весь исходник и собственно чего от измененного получить хотелось видеть надобно.
Ежли интерес имеется - скинь в личку "на посмотреть" - может чего путнего увидится..
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Вс июн 28, 2015 18:49:05 
Открыл глаза

Зарегистрирован: Пн сен 22, 2008 14:19:27
Сообщений: 70
Откуда: Челябинск
Рейтинг сообщения: 0
Всем спасибо откликнувшимся в особенности КРАМ, теперь работает!!!!)

_________________
Все надо делать с юмором! - сказал палач рубя голову дольками....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Вс июн 28, 2015 21:40:07 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
КРАМ писал(а):
Вы видите разницу между:
Код:
movlw 0x01
subwf  <RAM>, F
btfsc    STATUS, Z
goto     <label 01>

и
Код:
movlw 0x01
xorwf  <RAM>, F
btfsc    STATUS, Z
goto     <label 01>

? :tea:

Вижу. Команда XOR не "затирает" флаг C (влияет только на флаг Z). Очень часто это бывает нужно для оптимизации кода.
Что касается FSR, особенно когда он один, я им обычно пользуюсь для чтения блоков данных (к примеру, некий буфер или таблицы).
Лишний раз перегружать значение FSR не всегда бывает лучшим решением.
:beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сравнение ячейки EEPROM.
СообщениеДобавлено: Вс июн 28, 2015 21:47:36 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2954
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24817
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Для ТС это не слишком актуально (xor-sub). Ему бы предложенное понять.
Что касается FSR, то когда он единственный, грузить его единственным указателем - сильно плохая идея...
Компиляторы так никогда не делают.
ОФФ. По поводу xor-sub.
Я с трудом себе представляю типичность решения, при котором флаг С "пролетает" над xor...
Вычитание в целом универсальнее.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 40


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y