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

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

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

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

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

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

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 12.11.2008, 13:01  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию AVR пишет в ОЗУ непонятно куда......

Привет.
И так.
В обработчике прерывания от таймера стоит процедурка для чтения программного SPI. Но есть проблемы.
При выполенени следующего куска кода... Прога пишет ибо в ячейку 00 и 01, или в 01 02 в зависимости от кода, который стоял выше (я думаю не так важно).

Код:
Код:
programm_SPI_test:
		wdr

		push	XL	
		push	XH
		push	TEMP_C
		push	TEMP_B

		clr		TEMP_C

		ldi		TEMP_B, $BD
		call	programm_SPI_send_resive

				ldi		TEMP_A,0 					
					load_p	X, controls_table_memory_begin
					add_to_word X,TEMP_A
					ld		TEMP_A, X
					ldi		TEMP_C, $0F
					st		X+,TEMP_C
					st		X, TEMP_C
		
		pop		TEMP_B
		pop		TEMP_C
		pop		XH		
		pop		XL


ret
Макросы:
Код:
.macro  load_p  
        ldi     @0H,HIGH(@1)
        ldi     @0L,LOW(@1)
.endmacro


.macro	add_to_word
		push	TEMP_A
		mov		TEMP_A, @1
		adc		@0L, TEMP_A
		brcc	goto_end
		ldi		TEMP_A, 1
		add		@0H, TEMP_A
		goto_end:
		pop		TEMP_A
3-й день борюсь....
Да,... controls_table_memory_begin =2Е8.
В чем я неправ при записи в ОЗУ???
Че не учел?, или это баг?
Реклама:
ua_gruzin вне форума  
Непрочитано 12.11.2008, 13:19  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,956
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию

Ну так и есть. У вас первое сложение с переносом, а второе без. А должно быть наоборот.
nml вне форума  
Непрочитано 12.11.2008, 14:23  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию

Да я не про то.
ПО коду должно сохранять в ячейки 00 и 01.
А иногда сохраняет в ячейки 01 и 02 при том же коде, хотя ДОЛЖНО сохранять в 00 и 01.

Типо по коду:
X=0
st X+,TEMP_C ;TEMP_C -› X(0)
st X, TEMP_C ;TEMP_C -› X(1)

А иногда сохраняет типо так:
X=0
st X+,TEMP_C ;TEMP_C -› X(1)
st X, TEMP_C ;TEMP_C -› X(2)

Вчем грабли то?
Похожий баг был при попытке использовать моканду ADIW вместо макроса add_to_word. При многоразовом вызове ADIW:
ADIW X, 63
ADIW X, 63
ADIW X, 20
тоже писало подобно данной ситуации.
ua_gruzin вне форума  
Непрочитано 12.11.2008, 14:25  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию

P.S.
Из мануала:
Код:
ldi   r26,$60        ; Set X low byte to $60

st    X+,r0          ; Store r0 in data space loc. $60(X post inc)

st    X,r1           ; Store r1 in data space loc. $61
ua_gruzin вне форума  
Непрочитано 12.11.2008, 14:42  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию

Выдало ошибку при изменениии кода выше:
Loaded partfile: C:Program FilesAtmelAVR ToolsPartDescriptionFilesATmega1280
Error in plugin: Atmel AVR Assembler Command: COMPILE

Решилась перезапуском студии.
ua_gruzin вне форума  
Непрочитано 12.11.2008, 15:19  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,956
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию

Сообщение от ua_gruzin
Да я не про то.
Вот именно что не про то.
У вас адрес, куда писать, вычисляется в макро.
А там - загрузка базового адреса и + к нему смещение.
Первое сложение - командой ADC - это значит, сложить операнды И ПЕРЕНОС! Состояние бита переноса вам неизвестно. Потому и попадает то в нужный, то в нужный+1

А второе сложение - без переноса.
ДОЛЖНО БЫТЬ НАОБОРОТ
nml вне форума  
Непрочитано 12.11.2008, 15:31  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию

Вы правы на все 100%.
Большое спасибо!
ua_gruzin вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с ОЗУ cherepanova Информация по радиокомпонентам 4 12.05.2008 12:16
непонятно ... mega_john Микроконтроллеры, АЦП, память и т.д 7 02.09.2007 01:17
как в PIC 18F452 считать из такойто ячейки ОЗУ данные? DAS_WEYDER Микроконтроллеры, АЦП, память и т.д 5 22.08.2007 11:09
[Решено] Куда пойти учиться.... ???? ESl Отвлекитесь, эмбеддеры! 8 19.10.2006 18:06
Вопрос по AVReal, что то фузы BLB12 и BLB11 не пишет MemoryTest Микроконтроллеры, АЦП, память и т.д 1 14.06.2003 14:46


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


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