|
|
  |
ATmega2561: соединить с ЦАПом ТС1230 по I2С, прописывание внешнего устройства по I2C |
|
|
|
Nov 15 2010, 07:39
|
Частый гость
 
Группа: Участник
Сообщений: 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!?!?!
|
|
|
|
|
Nov 15 2010, 12:30
|

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

|
Цитата(Slavast @ Nov 15 2010, 10:39)  Иидея хорошая. Но схема уже готова и я не могу ее изменить.
В каком режиме TC1320 изначально - в даташите не указывается.
help!?!?! А ,если прочитать конфиг и посмотреть в каком он состоянии изначально. Хотя это и не надо И Ваш код в архивном виде ,плиз А этот проверьте.
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Nov 16 2010, 13:01
|
Частый гость
 
Группа: Участник
Сообщений: 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
Причина редактирования: Когда научитесь тэгами пользоваться?
|
|
|
|
|
Nov 16 2010, 13:18
|

Профессионал
    
Группа: Свой
Сообщений: 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 НЕ правильно - не по протоколу И выкладывайте в архивах коды - так проще смотреть
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Nov 16 2010, 13:21
|
Частый гость
 
Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395

|
Цитата(ILYAUL @ Nov 16 2010, 17:18)  НЕ правильно - не по протоколу Почему не по протоколу?
|
|
|
|
|
Nov 16 2010, 13:45
|
Частый гость
 
Группа: Участник
Сообщений: 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. Спасибо за код. Разбираю.
|
|
|
|
|
Nov 16 2010, 13:53
|
Частый гость
 
Группа: Участник
Сообщений: 81
Регистрация: 25-10-10
Пользователь №: 60 395

|
Цитата(ILYAUL @ Nov 16 2010, 17:50)  1 Библиотека макросов А где можно найти состав этой библиотеки макросов? В инете macros_v1.72.asm нет подробного описания. Интересно ведь, все же настолько многие команды облегчают задачу. P.S. Пока еще разбираю.
|
|
|
|
|
Nov 16 2010, 16:44
|

Профессионал
    
Группа: Свой
Сообщений: 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 регистру.... Цитата плавно изменяющиеся уровни отрицательного напряжения (как я понял потому как у нас массив этих значений!!!) Да , просто "пила", загнал как тест Цитата На выходе осциллографа Скорее всё таки на экране
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Nov 17 2010, 09:36
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|