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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> ATmega2561: соединить с ЦАПом ТС1230 по I2С, прописывание внешнего устройства по I2C
ILYAUL
сообщение Nov 12 2010, 13:59
Сообщение #16


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(Slavast @ Nov 12 2010, 16:16) *
Спасибо огромное!)
Сейчас будем пробовать прописывать!

И еще вопрос - нужно ли ставить Микроконтроллер в режим Receiver, когда DAC свой выставляет девятый подтверждающий Acknowledgment бит ?



Или просто проверяя регистр статуса TWSR проверять пришел ли этот бит (По идее вроде как только ACK бит приходит, статус меняется в TWSR на значение в таблице Даташита)?

Вы запустите DAC , а уж потом разберёмся , что и как проверять , Вам пока TWINT - хватит


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
ARV
сообщение Nov 12 2010, 16:03
Сообщение #17


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

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(Slavast @ Nov 12 2010, 13:04) *
Мне собственно нужен ЦАП вместе с инвертирующим Операц Усилителем для получения отрицательного аналог напряжения для управления контрастностью на LCD.
я как бы дико извиняюсь, что не совсем в тему лезу... но не шибко ли круто - ЦАПом да еще с ОУ впридачу контрастность регулировать? может, я чего-то не понимаю, но регулируемое отрицательное напряжение в пределах 0...-5В легко получается при помощи ШИМ и конденсатора с парой диодов...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Slavast
сообщение Nov 15 2010, 07:39
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395



Цитата(ARV @ Nov 12 2010, 19:03) *
регулируемое отрицательное напряжение в пределах 0...-5В легко получается при помощи ШИМ и конденсатора с парой диодов...


Иидея хорошая. Но схема уже готова и я не могу ее изменить.

Цитата(ILYAUL @ Nov 12 2010, 15:46) *
1. Command Set -01
2 Включить DAC
3. Command Set 00
4. Данные для Data register
приблизительно так


Получается совсем что-то непонятное. Соблюдая правила пакета TC1320 и вышеуказанный совет:

1. Command Set -01
2 Включить DAC
3. Command Set 00
4. Данные для Data register

т.е. отсылая 2 пакета, в первом из которых мы разрешаем Normal Mode, a во втором собственно отсылая данные - на выходе ничего нет.

А если использовать один пакет в котором мы сразу заносим Command Set 00 и данные для Data register (т.е. подразумевая что изначально TC1320 НЕ в спящем режиме) на выходе имеем немного пониженный уровень сигнала с малыми синусоидальными колебаниями (может их вносит Операц усилит??).

В каком режиме TC1320 изначально - в даташите не указывается.

help!?!?!
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Nov 15 2010, 12:30
Сообщение #19


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(Slavast @ Nov 15 2010, 10:39) *
Иидея хорошая. Но схема уже готова и я не могу ее изменить.



В каком режиме TC1320 изначально - в даташите не указывается.

help!?!?!

А ,если прочитать конфиг и посмотреть в каком он состоянии изначально. Хотя это и не надо
И Ваш код в архивном виде ,плиз

А этот проверьте.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Slavast
сообщение Nov 16 2010, 13:01
Сообщение #20


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395



QUOTE (ILYAUL @ Nov 15 2010, 16:30) *
И Ваш код в архивном виде ,плиз


Пардон, а что это за код?

TC1320+Atmega2561: Наблюдается очень интересная но совсем непонятная вещь, из-за которой уже 5-й день бьюсь головой о стенку. Первый байт - старт бит отсылается нормально, видно на осциллографе; второй байт - адрес отсылается тоже нормально( но если туда прописать не 0x90, т.е. адрес TC1320 - ТС1320 поднимает SDA в высокий уровень и не воспринимает вообще ничего!!!!!!); а вот в начале пересылки 3 байта данных после приема от ТС1320 ACK идет маленький скачек в пол высокого уровня и что бы я ни записывал, на осциллографе получается сООвсем не та цифра которую я заношу.

Что это может быть за скачок и почему он препятствует мне продолжать дальше?
спасибо.
CODE
.include "m2561def.inc"
.device ATMEGA2561


;--çàäàåì èìåíà ðåãèñòðàì------------------
.def temp = r22 ;ðàáî÷àÿ ïåðåìåííàÿ


; ---------------Inizialization ------

ldi r16,high(RAMEND) ; Íà÷àëî
out SPH,r16 ; îñíîâíîé ïðîãðàììû
ldi r16,low(RAMEND)
out SPL,r16




;------ Port Init--------

ldi r17, 0x00
out PINE, r17 ; äåàêòèâèðóåì Pull-up ðåçèñòîðû

ldi r17, 0x08
out DDRE, r17 ; ïîðò íà âûâîä äëÿ àêòèâàöèè SHDN íà ADM222

ldi r17, 0x00
out PINB, r17 ; äåàêòèâèðóåì Pull-up ðåçèñòîðû

ldi r17, 0x60
out DDRB, r17 ; ïîðò íà âûâîä äëÿ ñâåòîäèîäîâ

ldi r17, 0x00
out PINA, r17 ; äåàêòèâèðóåì Pull-up ðåçèñòîðû

ldi r17, 0xFF
out DDRA, r17 ; ïîðò íà âûâîä äëÿ ñâåòîäèîäîâ

ldi r17, 0xFF
out PINC, r17 ; äåàêòèâèðóåì Pull-up ðåçèñòîðû

ldi r17, 0xFF
out DDRC, r17 ; ïîðò íà âûâîä äëÿ ñâåòîäèîäîâ


ldi r17, 0x00 ; âñå îñòàëüíûå íà ââîä
out DDRD, r17
out DDRF, r17
out DDRG, r17


ldi r26,0x40
ldi r27,0x20


ldi r18, 0xD0
sts XMCRA, r18 ; Enable External Memory

ldi r18, 0x80
sts XMCRB, r18 ; Whole PortC for XRAM

ldi r16, 0x91
sts TWAR,r16 ; Slave address to TWAR

ldi r18, 0xC6
sts TWBR, r18 ; Bit Rate 0x48 - 100khz , 0xC6 - 10kHz

ldi r18, 0x00
sts TWSR, r18 ; Prescaler bits



;-------------1 Start packet-------------------------------------------------------

ldi r16,(1<<TWINT)|(1<<TWSTA)|(1<<TWEN)
sts TWCR, r16 ; Send s-t-a-r-t condition



wait1:
lds r16,TWCR
sbrs r16,TWINT
rjmp wait1 ; Wait for START bit to be transmitted


lds r16, TWSR
andi r16,0xF8
cpi r16, 0x08
brne wait1 ; Check TWSR if START was sent



;------------2 send Address-----------------


ldi r16, 0x90
sts TWDR,r16 ; Load Address in TWDR
ldi r16, (1<<TWINT)|(1<<TWEN)
sts TWCR, r16 ; Clear TWINT bit


wait2:
lds r16,TWCR
sbrs r16,TWINT
rjmp wait2
break ; Wait for ADRESS to be transmitted



lds r16, TWSR
andi r16,0xF8
cpi r16, 0x18
brne wait2 ; Check TWSR if ADRESS was sent


out PORTB, r27


;----------------3 send Command--------------------------------

lds r16, 0x01
sts TWDR,r16 ; Load 00 Command
ldi r16, (1<<TWINT)|(1<<TWEN)
sts TWCR, r16 ; Clear TWINT bit


wait77:
lds r16,TWCR
sbrs r16,TWINT
rjmp wait77 ; Wait for DATA to be transmitted


lds r16, TWSR
andi r16,0xF8
cpi r16, 0x28
brne wait77 ; Check TWSR if Command was sent


;----------------4 send Data---------------------------------------
jmp error


lds r16, 0x00
sts TWDR,r16 ; Load 1F to DAC as Data
ldi r16, (1<<TWINT)|(1<<TWEN)
sts TWCR, r16 ; Clear TWINT bit

wait88:
lds r16,TWCR
sbrs r16,TWINT
rjmp wait88 ; Wait for DATA to be transmitted

lds r16, TWSR
andi r16,0xF8
cpi r16, 0x28
brne wait88 ; Check TWSR if ADRESS was sent

;out PORTB, r26



error:
out PORTB, r27

ldi r16,(1<<TWINT)|(1<<TWEN)|(1<<TWSTO)
sts TWCR, r16 ; Send s-t-o-p condition


Сообщение отредактировал IgorKossak - Nov 16 2010, 17:02
Причина редактирования: Когда научитесь тэгами пользоваться?
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Nov 16 2010, 13:18
Сообщение #21


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(Slavast @ Nov 16 2010, 16:01) *
Пардон, а что это за код?


Я Вам написал

Цитата(Slavast @ Nov 16 2010, 16:01) *
;----------------4 send Data---------------------------------------
jmp error


lds r16, 0x00
sts TWDR,r16 ; Load 1F to DAC as Data
ldi r16, (1<<TWINT)|(1<<TWEN)
sts TWCR, r16 ; Clear TWINT bit

wait88:
lds r16,TWCR
sbrs r16,TWINT
rjmp wait88 ; Wait for DATA to be transmitted

lds r16, TWSR
andi r16,0xF8
cpi r16, 0x28
brne wait88 ; Check TWSR if ADRESS was sent

;out PORTB, r26



error:
out PORTB, r27

ldi r16,(1<<TWINT)|(1<<TWEN)|(1<<TWSTO)
sts TWCR, r16 ; Send s-t-o-p condition



НЕ правильно - не по протоколу
И выкладывайте в архивах коды - так проще смотреть


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Slavast
сообщение Nov 16 2010, 13:21
Сообщение #22


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395



Цитата(ILYAUL @ Nov 16 2010, 17:18) *
НЕ правильно - не по протоколу


Почему не по протоколу?
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Nov 16 2010, 13:37
Сообщение #23


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(Slavast @ Nov 16 2010, 16:21) *
Почему не по протоколу?

Потому, что согласно DS любое обращение к регистрам начинается со START-SLAVEADRESS-CommandBYTE-DATA


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Slavast
сообщение Nov 16 2010, 13:45
Сообщение #24


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395



Еще не ас в библиотеках:
а что означает
.include "macros_v1.72.asm"
и
.include "1Init_MCU.asm"

Цитата(ILYAUL @ Nov 16 2010, 17:37) *
Потому, что согласно DS любое обращение к регистрам начинается со START-SLAVEADRESS-CommandBYTE-DATA


Так у меня ж тоже в принципе те же 4 операции - START-SLAVEADRESS-CommandBYTE-DATA?


P.S. Спасибо за код. Разбираю.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Nov 16 2010, 13:50
Сообщение #25


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(Slavast @ Nov 16 2010, 16:45) *
Еще не ас в библиотеках:
а что означает
.include "macros_v1.72.asm"
и
.include "1Init_MCU.asm"



Так у меня ж тоже в принципе те же 4 операции - START-SLAVEADRESS-CommandBYTE-DATA?


P.S. Спасибо за код. Разбираю.


1 Библиотека макросов
2. Файл для инит любого процессора - вершину стека определяет сам-и чистит регистры и память SRAM, что бы в сторону не вильнуло


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Slavast
сообщение Nov 16 2010, 13:53
Сообщение #26


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395



Цитата(ILYAUL @ Nov 16 2010, 17:50) *
1 Библиотека макросов

А где можно найти состав этой библиотеки макросов?
В инете macros_v1.72.asm нет подробного описания. Интересно ведь, все же настолько многие команды облегчают задачу.

P.S. Пока еще разбираю.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Nov 16 2010, 13:57
Сообщение #27


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(Slavast @ Nov 16 2010, 16:53) *
А где можно найти состав этой библиотеки макросов?
В инете macros_v1.72.asm нет подробного описания. Интересно ведь, все же настолько многие команды облегчают задачу.

P.S. Пока еще разбираю.


У Вас в архиве полный проект для STUDIO , там же и находятся все файлы в том числе и о которых идёт речь. Достаточно просто запусть *.aps и проверить


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Slavast
сообщение Nov 16 2010, 14:49
Сообщение #28


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395



ААААААААААААААААААААА!!!!!!!!!!!!!!!
РАБОТАЕТ!!!!!!!!!!!
На выходе осциллографа вижу бегущие плавно изменяющиеся уровни отрицательного напряжения (как я понял потому как у нас массив этих значений!!!)
Спасибо огромное, что столько времени потратили с моей задачей!! Для меня же это неделя упорного но безрезультатного труда!

Но почему же мой алгоритм не работает? Ведь по идее - все те же операции START-SLAVEADRESS-CommandBYTE-DATA??
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Nov 16 2010, 16:44
Сообщение #29


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(Slavast @ Nov 16 2010, 17:49) *
Но почему же мой алгоритм не работает? Ведь по идее - все те же операции START-SLAVEADRESS-CommandBYTE-DATA??

Потому, что согласно DS любое обращение к регистрам начинается со START-SLAVEADRESS-CommandBYTE-DATA- вчитайтесь, что у Вас есть, только правильное обращение к config регистру, а чего нет , нет ни start и slave ни command при обращении к data регистру....

Цитата
плавно изменяющиеся уровни отрицательного напряжения (как я понял потому как у нас массив этих значений!!!)
Да , просто "пила", загнал как тест

Цитата
На выходе осциллографа
Скорее всё таки на экране biggrin.gif


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Slavast
сообщение Nov 17 2010, 09:36
Сообщение #30


Частый гость
**

Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395



Цитата(ILYAUL @ Nov 16 2010, 20:44) *
Потому, что согласно DS любое обращение к регистрам начинается со START-SLAVEADRESS-CommandBYTE-DATA- вчитайтесь, что у Вас есть, только правильное обращение к config регистру, а чего нет , нет ни start и slave ни command при обращении к data регистру....


Теперь Понял!

У меня такой вопрос. Я на UART хочу вывести слово "Привет Комсомолу" на Терминал компьютера (Использую программу Win Term). Но выводит всё, кроме первых 2-х букв. Вместо них какие-то квадраты. В чем загвоздка? В цикле вывода массива? И как правильно проверять конец строки (Я проверяю по точке)?



файл:

Прикрепленные файлы
Прикрепленный файл  UART5.RAR ( 8.03 килобайт ) Кол-во скачиваний: 19
 
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 7th July 2025 - 20:44
Рейтинг@Mail.ru


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