Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATmega2561: соединить с ЦАПом ТС1230 по I2С
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Slavast
Пытаюсь уже 3-й день в AVRStudio соединить AtMega 2561 с ЦАП ТС1320 по I2c! Но на выходе так ничего и не обнаруживаю.
Может что-то не так задаю(
Помогите советом!
Спасибо!

Кусок осн программы привожу ниже:

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 START, 0xF8

;-----------------I2с sending -------------------------------------------

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

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 ; Wait for ADRESS to be transmitted

ldi r16, 0x00
sts TWDR,r16 ; Load 00h - command for TC1320 to send next byte as Data
ldi r16, (1<<TWINT)|(1<<TWEN)
sts TWCR, r16 ; Clear TWINT bit

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

ldi r16, 0x3B
sts TWDR,r16 ; Load DATA in TWDR
ldi r16, (1<<TWINT)|(1<<TWEN)
sts TWCR, r16 ; Clear TWINT bit in TWCR to start transmittion of DATA


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

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

nop
kovigor
Цитата(Slavast @ Nov 12 2010, 12:29) *
Пытаюсь уже 3-й день в AVRStudio соединить AtMega 2561 с ЦАП ТС1320 по I2c! Но на выходе так ничего и не обнаруживаю. ...


Нескромный вопрос. Как электронщик электронщику. Вы хоть осциллографом на шину-то вставали ? Посылки пробовали захватить ? Что он показывает ?
А так - первым делом проверьте правильность адреса, по которому вы обращаетесь (помните, что младший разряд адреса задает режим доступа R/W), а также наличие PULLUPs на линиях шины ...
Slavast
Цитата(kovigor @ Nov 12 2010, 12:52) *
Нескромный вопрос. Как электронщик электронщику. Вы хоть осциллографом на шину-то вставали ? Посылки пробовали захватить ? Что он показывает ?
А так - первым делом проверьте правильность адреса, по которому вы обращаетесь (помните, что младший разряд адреса задает режим доступа R/W), а также наличие PULLUPs на линиях шины ...



Мне собственно нужен ЦАП вместе с инвертирующим Операц Усилителем для получения отрицательного аналог напряжения для управления контрастностью на LCD.

Осциллографом вставал на шину, посылки захватил: и адреса и данные. Видно четко.
Адрес устройства ТС 1320 1001 000 прописал, младший разряд адреса задает режим доступа R/W - т.е. 0, получилось 10010000 - (0х90h)
Pull up подвешены.
Но уровень на выходе не изменяется..(
kovigor
Цитата(Slavast @ Nov 12 2010, 14:04) *
Но уровень на выходе не изменяется..(


ЦАП подтверждает обращение к нему (ACK вводит) ?
Slavast
Цитата(kovigor @ Nov 12 2010, 14:11) *
ЦАП подтверждает обращение к нему (ACK вводит) ?


А вот это я не знаю как проверять.
Даташит Атмеги говорит после моего цикла проверки отправки адреса

wait2:
..
rjmp wait2 ; Wait for TWINT flag set. This indicates that the SLA+W has been transmitted, and ACK/NACK has been received

проверять ACK следущим:



lds r16, TWSR
andi r16,0xF8
cpi r16, MT_SLA_ACK
brne ERROR ; Check value of TWI Status Register. Mask Prescaler bits. If status different from MT_SLA_ACK go to the ERROR




Во первых не понял что же такое MT_SLA_ACK?
Во вторых подумал это лишнее,т.к. мой цикл wait2 и так оповещает меня установкой TWINT флага о том, что ACK передан.
kovigor
Цитата(Slavast @ Nov 12 2010, 14:26) *
А вот это я не знаю как проверять. ...


А что же вы тогда осциллографом-то смотрели ???????
ЦАП должен подтвердить обращение к нему, опустив в ноль линию данных шины I2C в ответ на 9-й тактовый бит, вводимый вашей АТМЕГой. Если этого нет, говорить вообще не о чем. Поищите в даташите на ЦАП (или на любую ИС памяти вроде 24LC16) слово ACK или ACKNOWLEDGE, и разберитесь, что же все-таки должно быть на шине ...

P.S. Вот, я сегодня добрый:

"
3.5 Acknowledge
Each receiving device, when addressed, is obliged to
generate an acknowledge after the reception of each
byte. The master device must generate an extra clock
pulse which is associated with this acknowledge bit.
The device that acknowledges, has to pull down the
SDA line during the acknowledge clock pulse in such a
way that the SDA line is stable LOW during the HIGH
period of the acknowledge related clock pulse. Of
course, setup and hold times must be taken into
account. ...
"
ILYAUL
Не увидел вот это - есть?
;**************************************************
;* ;;/Init Bit Rate fot TWI;;* *
;**************************************************
ldi temp,SYSCLK/(2*SCL_Freq)-8 ;TWI Bit Rate Register - TWBR
sts TWBR,temp ;+ Частота TWI=384 Кгц

Да и протокол общения с DAC Вы не выполнили до конца , он не знает что ему делать и к тому же похоже вообще спит.
Разберитесь с командами , которые необходимо послать , что бы он заработал.

И вот это всё сведите в одну подпрограмму

XXXX:
lds r16,TWCR
sbrs r16,TWINT
rjmp XXXXX
Slavast
Цитата(kovigor @ Nov 12 2010, 14:34) *
А что же вы тогда осциллографом-то смотрели ???????
ЦАП должен подтвердить обращение к нему, опустив в ноль линию данных шины I2C в ответ на 9-й тактовый бит, вводимый вашей АТМЕГой. Е


Осциллографом вижу четко посылку байта адреса, байта данных.
Значит ACK приходит по умолчанию. Все в том же цикле wait2.
Вопрос тогда в том - как мне это в программе задать, чтоб я в каком то порту или регистре увидел значение бита АСК? Нужно ли мне перенастраивать TWI на прием этого АСК, а потом снова на передачу?

Цитата(ILYAUL @ Nov 12 2010, 14:38) *
Не увидел вот это - есть?
;**************************************************
;* ;;/Init Bit Rate fot TWI;;* *
;**************************************************
ldi temp,SYSCLK/(2*SCL_Freq)-8 ;TWI Bit Rate Register - TWBR
sts TWBR,temp ;+ Частота TWI=384 Кгц


Есть, только TWI получается 490 кГц:
SCL = CPU(16 Мгц)/ (16+2*TWBR(0xFFh)*4в степени TWPS(задал 3))

Хотя пишут что больше 400кГц TWI не работает(..



Может через прерывания нужно осуществлять мою программу, где будет проводится проверка на окончание передачи данных?
kovigor
Цитата(Slavast @ Nov 12 2010, 14:42) *
Осциллографом вижу четко посылку байта адреса, байта данных.
Значит ACK приходит по умолчанию. Все в том же цикле wait2.


А кто его знает, что там приходит ? Посмотреть-то нетрудно. Зачем все эти исследования, если можно просто взять осциллограф и своими глазами все увидеть ?
ILYAUL
Цитата(Slavast @ Nov 12 2010, 13:58) *
SCL = CPU(16 Мгц)/ (16+2*TWBR(0xFFh)*4в степени TWPS(задал 3))

Хотя пишут что больше 400кГц TWI не работает(..



Может через прерывания нужно осуществлять мою программу, где будет проводится проверка на окончание передачи данных?

А он и не работает , у него максимум 100 кгц. DATA SHEET читали?

ldi temp,SYSCLK/(2*SCL_Freq)-8 ;TWI Bit Rate Register - TWBR
sts TWBR,temp ;+ Частота TWI=384 Кгц

где в Вашем случае, введите эти две строчки в код , он сам посчитает

.EQU SYSCLK = 16000000 ;+ Системная частота
.EQU SCL_Freq = 100000 ;+ Частота TWI

И разберитесь с тем о чём написал в предыдущем посте т.е снова прочтите DS, а уж потом осциллограф
Slavast
Цитата(ILYAUL @ Nov 12 2010, 15:08) *
А он и не работает , у него максимум 100 кгц. DATA SHEET читали?

ldi temp,SYSCLK/(2*SCL_Freq)-8 ;TWI Bit Rate Register - TWBR
sts TWBR,temp ;+ Частота TWI=384 Кгц

где в Вашем случае, введите эти две строчки в код , он сам посчитает

.EQU SYSCLK = 16000000 ;+ Системная частота
.EQU SCL_Freq = 100000 ;+ Частота TWI

И разберитесь с тем о чём написал в предыдущем посте т.е снова прочтите DS, а уж потом осциллограф



DS еще раз прочту. Может он в режиме Sleep по умолчанию?... И надо задавать отдельно еще в регистр управления DAC на пробуждение.
А вот по поводу частоты не совсем понятно.
В TWBR загоняю 11111111
A в биты TWPS1:TWPS0 регистра TWSR загоняю 1:1 - т.е. Prescaler bits равен 64. Вот и получаю свое число.
Формула из Даташита:

Формула в даташите ATMega:

Цитата(Slavast @ Nov 12 2010, 15:22) *
Формула в даташите ATMega:



С частотой разобрался! Получал то не 490кГц, а 490 Гц!!!! В голове явно опилки!

В TWPS 0:0. В TWBR (0x12h)
И ScL четко получается 100kHz.
ILYAUL
Цитата(Slavast @ Nov 12 2010, 14:48) *
Формула в даташите ATMega:


Вам надо посчитать не частоту с которой Вы будете работать , Вы ее и так знаете , чего ее считать , а значение регистра TWBR , которое надо в него загнать , что бы получить Вашу частоту TWI при Вашей тактовой частоте.
Т.е приведённую в DS Atmel формулу надо преобразовать , для расчёта TWBR , вот ее то я Вам и дал - осталось только подставить Ваши значения - тоже написал, и всё вставить в код программы , где нибудь в инит
После, этого ради любопытсва , можете посмотреть значение TWBR- должно быть 0x48
Я насчитал очень поверхностно ( времени пока нет) , приблизительно 4 команды , которые необходимо загнать в DAC , что бы он начал работать.
Slavast
Цитата(ILYAUL @ Nov 12 2010, 16:06) *
Вам надо посчитать не частоту с которой Вы будете работать , Вы ее и так знаете , чего ее считать , а значение регистра TWBR , которое надо в него загнать , что бы получить Вашу частоту TWI при Вашей тактовой частоте.
Т.е приведённую в DS Atmel формулу надо преобразовать , для расчёта TWBR , вот ее то я Вам и дал - осталось только подставить Ваши значения - тоже написал, и всё вставить в код программы , где нибудь в инит
После, этого ради любопытсва , можете посмотреть значение TWBR- должно быть 0x48
Я насчитал очень поверхностно ( времени пока нет) , приблизительно 4 команды , которые необходимо загнать в DAC , что бы он начал работать.



Совершенно верно!
В конечном перерасчете у меня тоже получилось 0х48h!
Какие же команды надо загнать в DAC для его работы?
ILYAUL
Цитата(Slavast @ Nov 12 2010, 15:18) *
Какие же команды надо загнать в DAC для его работы?

Вообще-то название микросхем принято писать англицкими буковками, на будущее


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

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


Спасибо огромное!)
Сейчас будем пробовать прописывать!

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

Цитата(Slavast @ Nov 12 2010, 17:06) *
И еще вопрос - нужно ли ставить Микроконтроллер в режим Receiver, когда DAC свой выставляет девятый подтверждающий Acknowledgment бит ?


Или просто проверяя регистр статуса TWSR проверять пришел ли этот бит (По идее вроде как только ACK бит приходит, статус меняется в TWSR на значение в таблице Даташита)?
ILYAUL
Цитата(Slavast @ Nov 12 2010, 16:16) *
Спасибо огромное!)
Сейчас будем пробовать прописывать!

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



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

Вы запустите DAC , а уж потом разберёмся , что и как проверять , Вам пока TWINT - хватит
ARV
Цитата(Slavast @ Nov 12 2010, 13:04) *
Мне собственно нужен ЦАП вместе с инвертирующим Операц Усилителем для получения отрицательного аналог напряжения для управления контрастностью на LCD.
я как бы дико извиняюсь, что не совсем в тему лезу... но не шибко ли круто - ЦАПом да еще с ОУ впридачу контрастность регулировать? может, я чего-то не понимаю, но регулируемое отрицательное напряжение в пределах 0...-5В легко получается при помощи ШИМ и конденсатора с парой диодов...
Slavast
Цитата(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!?!?!
ILYAUL
Цитата(Slavast @ Nov 15 2010, 10:39) *
Иидея хорошая. Но схема уже готова и я не могу ее изменить.



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

help!?!?!

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

А этот проверьте.
Slavast
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
ILYAUL
Цитата(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



НЕ правильно - не по протоколу
И выкладывайте в архивах коды - так проще смотреть
Slavast
Цитата(ILYAUL @ Nov 16 2010, 17:18) *
НЕ правильно - не по протоколу


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

Потому, что согласно DS любое обращение к регистрам начинается со START-SLAVEADRESS-CommandBYTE-DATA
Slavast
Еще не ас в библиотеках:
а что означает
.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. Спасибо за код. Разбираю.
ILYAUL
Цитата(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, что бы в сторону не вильнуло
Slavast
Цитата(ILYAUL @ Nov 16 2010, 17:50) *
1 Библиотека макросов

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

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

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


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

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

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

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

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


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

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



файл:
Slavast
Порядок!!!
ILYAUL
Цитата(Slavast @ Nov 18 2010, 14:24) *
Порядок!!!

laughing.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.