Страница 1 из 1

PIC12f629 запись данных в EPROM контроллера

Добавлено: Вс мар 22, 2015 13:42:00
Сем30
Помогите разобраться почему неполучается у меня записать информацию в память контроллера. Часть проги вырезал т.к. надо понять тока как записать 01h в 00h ячейку

Код: Выделить всё

LIST		P=PIC12F629
__CONFIG	31C4h
ADCON0		EQU			1Fh
CMCON		EQU			19h
GPIO		EQU			05h
TRISIO		EQU			85h
STATUS		EQU			03h
EEADR		EQU			1BH
EECON1		EQU			1CH
EECON2		EQU			1Dh
EEDATA		EQU			1AH
INTCON		EQU			0bh
Q1			EQU			20h
Q2			EQU			21h
			ORG			0
start		       movlw		b'00000000'
			movwf		ADCON0 ;АЦП
			movlw		b'00000111'
			movwf		CMCON ;Отключение компаратоа
			clrf		        GPIO
			bsf			STATUS,5
			movlw		b'00000010
			movwf		TRISIO
			clrf	        	INTCON
			bsf			STATUS,5
			movlw		00h
			movwf		EEADR
			movlw		01h
			movwf		EEDATA
			bsf			EECON1,2
			movlw		55h
			movwf		EECON2
			movlw		.170
			movwf		EECON2
			bsf			EECON1,1
			bcf			EECON1,4
			bcf			STATUS,5
			nop
end

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Вс мар 22, 2015 14:03:52
КРАМ
Отформатируйте текст кода в теги "код"

Код: Выделить всё

Этот текст написан как код
Читать совершенно невозможно.
По существу.
Из чего следует, что запись не порисходит?
По коду.
Любая программа в МК должна быть зациклена.
Директива ассемблера END не является остановом. Она лишь означает завершение листинга трансляции. Эта директива - указание для компилятора.

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Вс мар 22, 2015 14:11:50
Сем30
я в mplab открыл окно с ячейками памяти и наблюдаю что там происходит, после выполнения кода в шаовом режиме информация в ячейках неменяется. Форум убирает пробелы поэтому прикрепил файлик с кодом. Невырезал в начале текста отключение АЦП т.к. его тут нет. Просто игнорируйте эти несколько строчек

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Вс мар 22, 2015 15:03:09
otest
EEADR, EEDATA находятся в банке 0 . Читаем ДШ.

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Вс мар 22, 2015 15:08:31
Аlex
Форум убирает пробелы
Ничего он не убирает. Вам же сказали - используйте тег CODE.

По сабжу. В даташит загляните, там есть пример записи в EEPROM.

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Вс мар 22, 2015 19:39:46
КРАМ
Сем30 писал(а):я в mplab открыл окно с ячейками памяти и наблюдаю что там происходит, после выполнения кода в шаовом режиме информация в ячейках неменяется.
В пошаговом режиме?
Стало быть Вы используете СИМУЛЯТОР, поскольку дебаггера на кристалле у этого МК нет, а хедер с отладчиком у Вас скорее всего отсутствует.
Однако MPLAB SIM не поддерживает симуляцию EEPROM данных.
Даже при наличии отладчика результат записи в EEPROM можно проконтролировать, только ПРИНУДИТЕЛЬНО прочитав ее соответствующей кнопкой на панели управления дебагом в МПЛАБе.

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Пн мар 23, 2015 00:05:31
Albert_V
КРАМ писал(а):Однако MPLAB SIM не поддерживает симуляцию EEPROM данных....
Вы не правы. Поддерживает (по крайней мере, MPLAB v8.92). Только надо помнить о том, что данные изменятся в окне EEPROM (как и сказано в pdf) через 2ms.
Сколько "шагов" в программе для этого необходимо сделать при заданной частоте "Processor Frequency" в окне "Simulator Setting" - посчитать не сложно.

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Пн мар 23, 2015 06:33:52
Smen
Albert_V писал(а):через 2ms
Т.е. время записи в ячейку EEPROM, во время которого надо запрещать всяческое с ней общение, а по окончании, это общение разрешать.
Т.е. в программе надо либо организовывать циклическое чтение флага прерывания EEPROM, либо разрешать это самое прерывание, и уже "разблокировку" производить в нём.
Следовательно, если программа организована правильно, всегда можно найти точку, где данные в EEPROM обновятся. :)

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Пн мар 23, 2015 15:19:09
Сем30
Вот подредактировал програмку её цель записать в ячейку EEPROM 01h информацию 55h и потом скопировать информацию из ячейки EEPROM 01h в ОЗУ в ячейку 21h все наглядно сделал. Процедуру записи взял из даташита, все равно не работает запись!!!
Если даже если предположить что PLAB SIM неотображает содержимое EEPROM то на этот случай сделал копирование ячейки в озу.
Прикрепил даташит от PIC12F629
Конфигурация:
Калибровка сброса по снижению питания & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _CPD_OFF_&_BODEN_OFF

Код: Выделить всё

LIST		P=PIC12F629
__CONFIG	191h
ADCON0		EQU			1Fh
CMCON		EQU			19h
GPIO		EQU			05h
TRISIO		EQU			85h
STATUS		EQU			03h
EEADR		EQU			9Bh
EECON1		EQU			9Ch
EECON2		EQU			9Dh
EEDATA		EQU			9Ah
INTCON		EQU			0Bh
Q1			EQU			20h
Q2			EQU			21h
			ORG			0
;Подготовка контроллера
start		movlw		b'00000111'
			movwf		CMCON ;Отключение компаратоа
			clrf		GPIO
			bsf			STATUS,5
			movlw		b'00000010
			movwf		TRISIO
;Процедура записи в EPROM
			bsf			STATUS,5;Переход в банк 1
			movlw		01h
			movwf		EEADR ;Запись в регистр адреса ячейки EPROM 01h
			movlw		55h
			movwf		EEDATA ;Запись в регистр информации ячейки EPROM
			bsf			EECON1,2
			bcf			INTCON,7
			movlw		0x55
			movwf		EECON2
			movlw		0xAA
			movwf		EECON2
			bsf			EECON1,1
			bcf			STATUS,5
;запись в Q1 и Q2 данных из EEPROM
			movlw		0h
			movwf		EEADR
			bsf			EECON1,0
			movf		EEDATA,W
			bcf			STATUS,5
			movwf		Q1
			bsf			STATUS,5
			movlw		01h
			movwf		EEADR
			bsf			EECON1,0
			movf		EEDATA,W
			bcf			STATUS,5
			movwf		Q2
b2			nop
			goto		b2
end

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Пн мар 23, 2015 15:35:39
Albert_V
Для начала, вы можете написать "шапку" программы в таком виде или предлагаете расшифровывать __CONFIG 31C4h???

Код: Выделить всё

;PIC12F629
        include	<C:\Program Files (x86)\Microchip\MPASM Suite\P12F629.INC>
;
	LIST   P=PIC12F629
;
 __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _CP_OFF & _CPD_OFF
/Это был пример/

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Пн мар 23, 2015 15:40:25
Аlex
Прикрепил даташит от PIC12F629
Вы бы лучше его почитали.
А ещё почитали бы, что Вам написали выше, и вникли бы в посты.

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Пн мар 23, 2015 16:06:22
Albert_V
Сем30 писал(а):Прикрепил даташит от PIC12F629
:facepalm: :facepalm: Так это документация не с официального сайта Microchip :facepalm: :facepalm:
/Возможно, там нет ошибок, но проверять это - нет желания...../

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Пн мар 23, 2015 16:09:31
Сем30
Программистов контроллеров тут много, напишите код на 12f629 который способен записать в память что ни буть и работал в MP LAB 8.92. Мне большего и не надо ничего.

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Пн мар 23, 2015 16:21:42
Albert_V
Почти в каждой ветке форума говорят что надо вначале читать документацию а потом спрашивать.
Нет, постоянно кто-то хочет доказать что напишет программу на ASM не читая pdf...
Изучайте. Ваш текст программы. Запись числа 55h в EEPROM по адресу 01h.
Изображение

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Пн мар 23, 2015 16:54:59
Аlex
напишите код на 12f629 который способен записать в память что ни буть и работал
Вы его уже написали и выложили сюда. Только вот люди, несколькими постами выше Вашего, видимо напрасно распинались, объясняя почему Вы не видите записи данных.

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Вт мар 24, 2015 08:36:58
BOB51
Маахоонький вопросец...
А каким образом было определено, что запись не выполнена?
8)

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Вт мар 24, 2015 10:12:21
КРАМ
BOB51 писал(а):Маахоонький вопросец...
Автор желает увидеть изменение в Data EEPROM MPLAB SIM.

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Вт мар 24, 2015 15:10:03
Сем30
Всем спасибо! Разобрался. Все оказалось все же во времени записи, ждал недостаточно долго и все изза того что в SIM стояла частота контроллера 20Мгц, а мне надо 4 Мгц. Как только изменил этот парамерт программа заработала.

Re: PIC12f629 запись данных в EPROM контроллера

Добавлено: Чт мар 26, 2015 06:51:02
Smen
Сем30 писал(а):Разобрался
Cудя по последнему посту, не похоже.