реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> AVR atmel studio 6.0, в симуляторе не работает интерфейс TWI
Valentin_U
сообщение Jan 24 2015, 04:19
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 24-01-15
Пользователь №: 84 744



На ассемблере написан пример для работы по интерфейсу TWI.
В atmel Studio 6.0, при выполнении кода в симуляторе, данные в регистры TWI загружаются, как указано в описании. После записи команды “старт” в регистр TWI,
состояние на выходах порта D не меняется, и прерывание не выполняется.
Подозрение, что в atmel studio 6.0 (6.2) не работает симуляция данного протокола.
В чем причина данной ситуации. Как решить данную проблему?

CODE
/*
* i2c_new.asm
*
* Created: 18.01.2015 17:08:02
* Author: Admin
*/
.DEVICE ATMEGA2560

.CSEG
.ORG 0000
JMP start

.CSEG
.ORG 0x004e
rjmp Int_TWI

nop
.CSEG
.ORG 0x0100
start:
cli ; запретить прерывания
ldi r16, high(RAMEND) ; конечный адр ОЗУ
out SPH, r16 ; загрузить регистр H стека
ldi r16, low(RAMEND) ; конечный адр ОЗУ
out SPL, r16 ; загрузить регистр L стека
;========================== ========================
startt_1:
rcall TWI_init_100 //Инициализируем интерфейс TWI на 100 000

rcall TWI_start // разреш прерыв и посылаем стоп
ttt: nop
sei ; разрешить все прерывания
nop
nop
nop
rjmp ttt
;----------------------------------------
; ======== обработка прерывания от TWI ==============
Int_TWI: ; Прерыв_39, 0x04E, прерывание от TWI
.def temp17 = r17
.def temp16 = r16
cli ; запретить прерывания
Int_twi_1:
lds temp17, TWSR ; регистр статуса TWI
nop
rjmp Int_twi_1
;----------------------------
; ПРОЦЕДУРЫ РАБОТЫ С TWI

TWI_init_100: //Инициализация TWI на скорости 100 000 б/сек
; TWBR =((Fcpu/Fi2c)-16)/(2*4^twps)
; TWBR =((16000000/100000)-16)/(2*4^0)=72 (0x48) (0b0100 1000)
cli
ldi temp16, 0x12 ; 2 мл бита в TWSR 0b01 0010,2бита в рег TWSR
sts TWBR, temp16 ;адр 0xB8 рег скорости
ldi temp16,(0<<TWPS1)|(0<<TWPS0)
sts TWSR,temp16 ;адр 0xB9, 2 бита рег скорости
ret
; ------------------------------------------------
TWI_start: //Передача стартовой посылки
ldi temp16,(1<<TWINT)|(1<<TWSTA)|(1<<TWEN)|(1<<TWIE)
; сброс | уст стоп | раз.раб | раз прерыв
sts TWCR, temp16 ; рег управл адр 0хBC
ret
;----------------------------------------------------
TWI_stop: //Отправляет стоповую посылку
ldi temp16, (1<<TWINT)|(1<<TWEN)|(1<<TWSTO)|(1<<TWIE)
sts TWCR, temp16 ;адр 0xBC
ret


Сообщение отредактировал IgorKossak - Jan 24 2015, 20:42
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
V_G
сообщение Jan 24 2015, 07:15
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Пардон, не стал вдаваться в ваш пример, но у меня сложилось впечатление, что Astudio в версиях 5 и выше ориентируется на программирующих на Си, а не на ассемблере.
Я как-то давно сообщал в их техподдержку про какой-то баг с отображением то ли регистров, то ли памяти при отладке, внятного ответа не получил, кроме совета переходить на Си. В результате откатился на версию 4.19.
Go to the top of the page
 
+Quote Post
Valentin_U
сообщение Jan 25 2015, 08:21
Сообщение #3





Группа: Новичок
Сообщений: 3
Регистрация: 24-01-15
Пользователь №: 84 744



Цитата(V_G @ Jan 24 2015, 19:15) *
Пардон, не стал вдаваться в ваш пример, но у меня сложилось впечатление, что Astudio в версиях 5 и выше ориентируется на программирующих на Си, а не на ассемблере.
Я как-то давно сообщал в их техподдержку про какой-то баг с отображением то ли регистров, то ли памяти при отладке, внятного ответа не получил, кроме совета переходить на Си. В результате откатился на версию 4.19.


Спасибо.
Поставил 4.19 но проблема в том, что 4.19 не поддерживает atmega 2560
Go to the top of the page
 
+Quote Post
demiurg1978
сообщение Jan 25 2015, 13:31
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709



Цитата(Valentin_U @ Jan 25 2015, 14:21) *
Спасибо.
Поставил 4.19 но проблема в том, что 4.19 не поддерживает atmega 2560

Кто вам такое сказал? У студии 2 симулятора. Симулятор и симулятор 2. Если вы при создании проекта укажете симулятор 2, то будет вам поддержка недостающих кристаллов симулятора 1. В том числе ATMEGA2560.
Тип симулятора можно изменить и у текущего проекта. Вкладка Debug-Select Platform And Device-AVR Simulator 2

Сообщение отредактировал demiurg1978 - Jan 25 2015, 13:34
Go to the top of the page
 
+Quote Post
Valentin_U
сообщение Feb 2 2015, 09:35
Сообщение #5





Группа: Новичок
Сообщений: 3
Регистрация: 24-01-15
Пользователь №: 84 744



Спасибо. попробывал симулятор 2, там есть 2560. Но, это не решило проблему.
Не идет симуляция twi. регистры загружаются, а на выходе порта D сигнал не устанавливается,
и прерывания от twi не срабатывает.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Feb 2 2015, 12:34
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Достаточно заглянуть в документацию на AVR Studio, чтобы понять, что в симуляторе:
Цитата
TWI is not supported
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01416 секунд с 7
ELECTRONIX ©2004-2016