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

 
 
> ATMega128 - проблема с SPI Master, при выводе строки видеоизображения
Lisitsin
сообщение Oct 3 2012, 15:35
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 227
Регистрация: 1-10-10
Из: Рязань
Пользователь №: 59 868



Здравствуйте. Помогите разобраться с проблемой ...
Формирую на ATMega128 видеосигнал при помощи SPI. Устанавливаю режим Master, двойная скорость. Одна точка изображения занимает два такта. Необходимо выводить байт за байтом непрерывно. Всего 48 байт.
Инициализация:
LDI BUF,(1<<SPE)|(1<<MSTR)|(1<<CPHA); 4
OUT SPCR,BUF ; SPI
LDI BUF,1<<SPI2X ; CONFIGURATION
OUT SPSR,BUF ;
(BUF - временный регистр)
SS устанавливаю на вывод единицы. MOSI устанавливаю на выход.

Начинаю вывод строки:
VSTRLOOP: OUT SPDR,VDATA24 ; 1 - начинаю вывод данных
OUT ATTRPORT,ATTR ; 2 - это вывод аттрибутов цвета изображения
LD VDATA24,X+ ; 4 - читвю из ОЗУ очередной байт данных
LD ATTR,Y+ ; 6 - и очередной аттрибут цвета
NOP ; 7 - выравниваю время нопами
NOP ; 8
NOP ; 9
NOP ; 10
NOP ; 11
NOP ; 12
NOP ; 13
CPI XL,0X40 ; 14 - в конце проверяю на предмет передачи последнего байта
BRNE VSTRLOOP ; 15 /> 16 - цикл
NOP ; 16

Такты подсчитываю в комментариях.

В результате: первый байт передаётся правильно. Второй - не передаётся, вместо него на экране вижу последний переданный бит - белую черту в случае если последним битом была единица и тёмную - если был ноль. Третий байт опять корректный, четвёртый - как второй и так далее до конца строки.
В общем пока не понял что это такое и как добиться задуманного.

Сообщение отредактировал Lisitsin - Oct 3 2012, 16:47


--------------------
с Уважением,
Lisitsin
Vasil.Lisitsin@yandex.ru
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 37)
chernenko
сообщение Oct 3 2012, 15:37
Сообщение #2


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

Группа: Свой
Сообщений: 170
Регистрация: 8-02-06
Из: Москва
Пользователь №: 14 116



я бы проверил осциллографом что там физически выходит по SPI может там все так как и задумалось а проблема в другом месте
Go to the top of the page
 
+Quote Post
Lisitsin
сообщение Oct 3 2012, 15:55
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 227
Регистрация: 1-10-10
Из: Рязань
Пользователь №: 59 868



Цитата(chernenko @ Oct 3 2012, 19:37) *
я бы проверил осциллографом что там физически выходит по SPI может там все так как и задумалось а проблема в другом месте

Проблема точно не в другом. Видеосигнал я принимаю USB TV тюнером Beholder по нч видеовходу. Есть другая программа, где я вывод делаю вручную, и и она работает отлично, но там получается три такта на пиксел, а мне недо 2.

А вот если в конце передачи байта выключть SPI и тут же включить, то всё становится на свои места. Но только на место этого включения/выключения смотреть неприятно. Пиксел затянут.
Схемка во вложении)

Сообщение отредактировал Lisitsin - Oct 3 2012, 15:59
Прикрепленные файлы
Прикрепленный файл  ASpect128.sch ( 511.98 килобайт ) Кол-во скачиваний: 28
 


--------------------
с Уважением,
Lisitsin
Vasil.Lisitsin@yandex.ru
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 3 2012, 16:07
Сообщение #4


Гуру
******

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



Цитата(Lisitsin @ Oct 3 2012, 19:35) *
Формирую на ATMega128 видеосигнал при помощи SPI. Устанавливаю режим Master, двойная скорость. Одна точка изображения занимает два такта. Необходимо выводить байт за байтом непрерывно. Всего 48 байт.

ИМХО, это принципиально невозможно. Новые данные в SPDR можно загрузить только после передачи предыдущего байта (т.е. на семнадцатом такте).

Цитата(Lisitsin @ Oct 3 2012, 19:35) *
В результате: первый байт передаётся правильно. Второй - не передаётся, вместо него на экране вижу последний переданный бит - белую черту в случае если последним битом была единица и тёмную - если был ноль. Третий байт опять корректный, четвёртый - как второй и так далее до конца строки.

Эти симптомы подтверждают сказанное мной выше.

Чтобы убедится в этом окончательно - добавьте один NOP к группе пустых операторов в "выравнивании времени". Думаю, что тут же появятся и четные байты, а вот последние пикселы каждого байта будут в полтора раза "длиннее" остальных...
Go to the top of the page
 
+Quote Post
Lisitsin
сообщение Oct 3 2012, 16:12
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 227
Регистрация: 1-10-10
Из: Рязань
Пользователь №: 59 868



Цитата(Палыч @ Oct 3 2012, 20:07) *
ИМХО, это принципиально невозможно. Новые данные в SPDR можно загрузить только после передачи предыдущего байта (т.е. на семнадцатом такте).


Эти симптомы подтверждают сказанное мной выше.

Чтобы убедится в этом окончательно - добавьте один NOP к группе пустых операторов в "выравнивании времени". Думаю, что тут же появятся и четные байты, а вот последние пикселы каждого байта будут в полтора раза "длиннее" остальных...

Так я и передаю следующий байт семнадцатым тактом. Там я в комментариях каждый такт считаю (см. выше). А ноп втыкать пробовал, и не один - результат тот же (в смысле нет результата).


--------------------
с Уважением,
Lisitsin
Vasil.Lisitsin@yandex.ru
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 3 2012, 16:18
Сообщение #6


Гуру
******

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



Цитата(Lisitsin @ Oct 3 2012, 20:12) *
Так я и передаю следующий байт семнадцатым тактом.
Нет, шестнадцатым - считать нужно с команды, следующей за OUT SPDR,VDATA24. Вставьте, в конце концов, ещё один NOP и убедитесь, что отображение четных байт появиться...
Go to the top of the page
 
+Quote Post
Lisitsin
сообщение Oct 3 2012, 16:21
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 227
Регистрация: 1-10-10
Из: Рязань
Пользователь №: 59 868



Цитата(Палыч @ Oct 3 2012, 20:18) *
Нет, шестнадцатым - считать нужно с команды, следующей за OUT SPDR,VDATA24. Вставьте, в конце концов, ещё один NOP и убедитесь, что отображение четных байт появиться...

Я их там три штуки пробовал ставить. Ничего. Строчная синхронизация уже слетать начинает. Да и делу это не поможет - мне нужно непрерывное изображение, без затягиваний ...

Сообщение отредактировал Lisitsin - Oct 3 2012, 16:23


--------------------
с Уважением,
Lisitsin
Vasil.Lisitsin@yandex.ru
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 3 2012, 16:31
Сообщение #8


Гуру
******

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



Цитата(Lisitsin @ Oct 3 2012, 20:21) *
Я их там три штуки пробовал ставить. Ничего.

В том, что Вы пытаетесь записать данные раньше положенного времени, можно убедиться, посмотрев на флаг WCOL
Go to the top of the page
 
+Quote Post
Lisitsin
сообщение Oct 3 2012, 16:41
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 227
Регистрация: 1-10-10
Из: Рязань
Пользователь №: 59 868



Цитата(Палыч @ Oct 3 2012, 20:31) *
В том, что Вы пытаетесь записать данные раньше положенного времени, можно убедиться, посмотрев на флаг WCOL

Не раньше. Проблема совсем не в этом. SPI по скорости настроен как надо: 2 такта процессора не точку, и на экране я вижу то же самое ...Передаю 0B10101010 и вижу 4 точки и 4 пробела. Из 48 байт вижу ровно 24 корректных и 24 некоректных.

Сообщение отредактировал Lisitsin - Oct 3 2012, 16:45


--------------------
с Уважением,
Lisitsin
Vasil.Lisitsin@yandex.ru
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Oct 3 2012, 17:56
Сообщение #10


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

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



Цитата
Из 48 байт ...

Код
CPI XL,0X40
= 64 или первые 16 чем-то ещё заняты?

И схему выложите в pdf


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

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 4 2012, 02:02
Сообщение #11


Гуру
******

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



Цитата(Lisitsin @ Oct 3 2012, 20:21) *
Я их там три штуки пробовал ставить. Ничего.
Кстати! Возможно, их там и нужно вставить три штуки! Согласно с комментарием к команде
Цитата
LD VDATA24,X+ ; 4 - читвю из ОЗУ очередной байт данных
данные выбираются не из памяти программ (как я это отчего-то подумал), а из ОЗУ. В этом случае команда LD Rd,X+ выполняется за один такт, а таких команд у Вас в программе две.
Но! И в этом случае может быть неудача! Обратите внимание на рисунок "SPI Block Diagram", приведенный в DS. Тактирование SPI осуществляется от делителя сигнала XTAL. C этим сигналом тактирования SPI выполнение Вашей программы нигде не синхронизируется. Т.е. работа SPI при выводе первого байта может начаться не в следующий такт за командой загрузки данных в регистр SPDR, а при поступлении от делителя тактового импульса (поскольку у Вас деление на 2, то больше чем на такт он задержаться не может).
Таким образом, следует добавить в "выравнивание времени" три пустых оператора, и если не изменилась картина на выводе, то перед циклом вывода добавить ещё один пустой оператор для синхронизации с импульсами тактирования SPI.

P.S. Извеняюсь - недодумал... Если вставить в "выравнивание времени" три пустых оператора, то выполнение цикла будет производиться за нечетное число тактов XTAL и произайдёт рассинхронизация с тактовыми импульсами SPI (т.е. цикл должен всегда выполняться за четное число тактов). Следовательно в цикл следует добавить четыре пустых оператора (ну, или, возможно, и два, в чём я лично сомневаюсь).

P.P.S. Я, конечно, понимаю, что Вам не хочется вставлять такое число пустых операторов - последний пиксел, соответствующий последниму биту в байте будет в два раза "длиннее" остальных... Я в своем первом сообщении в этой теме и предупреждал о вероятной невозможности обеспечения непрерывной передачи по SPI. Если Вы намеревались выводить графическую информацию, то, конечно, при таком выводе она будет неприятно искажена. А для вывода символной информации - такой эффект может оказаться маленьким плюсом, если у Вас символы будут иметь ширину 7 пикселов: удвоенный восьмой бит можно использовать как промежуток между символами...
Go to the top of the page
 
+Quote Post
zombi
сообщение Oct 4 2012, 04:47
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(Палыч @ Oct 4 2012, 05:02) *
В этом случае команда LD Rd,X+ выполняется за один такт, а таких команд у Вас в программе две.

Может я кончно чего и не знаю, но согласно DS на мегу128 все LD Rd,X... выполняются минимум за ДВА такта.
Go to the top of the page
 
+Quote Post
Maik-vs
сообщение Oct 4 2012, 09:24
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



Непрерывную строку пикселов выводить не получается. Между двумя байтами минимальный зазор 1,5 такта spi, на загрузку нового значения. Долго возился в своё время с мегой16 - не получилось. И в даташите в общем так и нарисовано. Разве что переделали SPI в 128-й меге, но вряд ли.
Go to the top of the page
 
+Quote Post
Lisitsin
сообщение Oct 4 2012, 15:12
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 227
Регистрация: 1-10-10
Из: Рязань
Пользователь №: 59 868



Спасибо.
Да, действительно. Сегодня плотно повозился с этим делом. Наилучший эффект получается только с двумя дополнительными нопами плюс к 16 тактам. Последний бит неизбежно затягивается.
Я разозлился и сделал следующее: начинаю делать вывод данных через SPI. Пока они выводятся вывожу в порт B: MOSI последний - нулевой бит данных. Когда доходит дело до вывода этого самого бита через SPI жестоко выключаю SPI по питанию. В этот момент конфигурация порта В:MOSI изменяется и на линии оказывается записанное прежде в порт В последнего бита. Тут же включаю SPI. В результате портятся пол точки на экране. Затем повторяю весь цикл.
Но и тут возникает загвоздка. Всё равно корректность работы SPI зависит от ДАННЫХ, которые я передаю. И при определённых данных опять чётные передачки ломаются.
Короче после этого я окончательно разозлился на SPI и стал выводить данные вручную по 3 такта на точку. Как раз 48 байт умещаются в строке, но на экране я вижу только 43, а 5 по-моему оказываются в зоне сигналов гашения TV тюнера. Вот такая вот история.А код такой:
.MACRO VIDEOSTRING_

OUT PORTB,VDATA1 ; 7
OUT ATTRPORT,ATTR ; 7
LSL VDATA1 ; 7

OUT PORTB,VDATA1 ; 6
BST VDATA1,1 ; 6 SAVE BIT 0
LSL VDATA1 ; 6

OUT PORTB,VDATA1 ; 5
BLD VDATA10,PIXEL ; 5 TO VDATA10:PIXEL
LSL VDATA1 ; 5

OUT PORTB,VDATA1 ; 4
BST VDATA1,4 ; 4 SAVE BIT 1
LSL VDATA1 ; 4

OUT PORTB,VDATA1 ; 3
BLD VDATA11,PIXEL ; 3 TO VDATA11:PIXEL
LSL VDATA1 ; 3

OUT PORTB,VDATA1 ; 2
LD VDATA1,X+ ; 2

OUT PORTB,VDATA11 ; 1
;LD ATTR,Y+ ; 1
LDI BUF,0B01000111
MOV ATTR,BUF

OUT PORTB,VDATA10 ; 0
NOP ; 0
NOP ; 0



OUT PORTB,VDATA1 ; 7
OUT ATTRPORT,ATTR ; 7
LSL VDATA1 ; 7

OUT PORTB,VDATA1 ; 6
BST VDATA1,1 ; 6 SAVE BIT 0
LSL VDATA1 ; 6

OUT PORTB,VDATA1 ; 5
BLD VDATA10,PIXEL ; 5 TO VDATA10:PIXEL
LSL VDATA1 ; 5

OUT PORTB,VDATA1 ; 4
BST VDATA1,4 ; 4 SAVE BIT 1
LSL VDATA1 ; 4

OUT PORTB,VDATA1 ; 3
BLD VDATA11,PIXEL ; 3 TO VDATA11:PIXEL
LSL VDATA1 ; 3

OUT PORTB,VDATA1 ; 2
LD VDATA1,X+ ; 2

OUT PORTB,VDATA11 ; 1
;LD ATTR,Y+ ; 1
LDI BUF,0B01000111
MOV ATTR,BUF

OUT PORTB,VDATA10 ; 0
NOP ; 0
CLR BUF ; 0




.ENDMACRO
А схема есть в ворде (вложение).
Прикрепленные файлы
Прикрепленный файл  ASpect_128.zip ( 259.57 килобайт ) Кол-во скачиваний: 55
 


--------------------
с Уважением,
Lisitsin
Vasil.Lisitsin@yandex.ru
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Oct 5 2012, 08:10
Сообщение #15


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

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



А какая частота строчной развёртки?


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

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Oct 5 2012, 20:24
Сообщение #16


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



В новых мегах можно настроить USART как SPI Master, причем с буферизацией, и такой проблемы быть не должно. Когда-то я воевал с SPI, что-то отложилось про 18 тактов на все. Подробностей не помню, правда...
Go to the top of the page
 
+Quote Post
Lisitsin
сообщение Oct 6 2012, 06:08
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 227
Регистрация: 1-10-10
Из: Рязань
Пользователь №: 59 868



Цитата(ILYAUL @ Oct 5 2012, 12:10) *
А какая частота строчной развёртки?

Стандартная. 15.625 КГц.

Цитата(rx3apf @ Oct 6 2012, 00:24) *
В новых мегах можно настроить USART как SPI Master, причем с буферизацией, и такой проблемы быть не должно. Когда-то я воевал с SPI, что-то отложилось про 18 тактов на все. Подробностей не помню, правда...

Новые меги ... Имеется ввиду ATMega128A- ... ?


--------------------
с Уважением,
Lisitsin
Vasil.Lisitsin@yandex.ru
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 6 2012, 07:18
Сообщение #18


Гуру
******

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



Цитата(Lisitsin @ Oct 6 2012, 10:08) *
Имеется ввиду ATMega128A- ... ?

Нет, имеется в виду ATmega164/324/644/1284
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Oct 6 2012, 08:24
Сообщение #19


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Да, и в младших (48/88/168). Если нужно что-то многоногое типа M128 - надо смотреть, я с такими дела не имел...
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Oct 6 2012, 18:37
Сообщение #20


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

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



Ну, вот полмысли Вам уже высказали- UART - и это не только двойная буферизация , но и работа в сихронном режиме с помощью внешнего сигнала XCK.
Например с 15.625 КГц*8. Что во много меньше чем необходимо по DS
Цитата
Fxck=Fosc/4
= 5Мгц

P/S Кстати , ради чистой проверки идеи , когда-то делал на нем генератор меандра, замечательно получается и с изменением частот меандра , правда чисто в асинхроном режиме. Это к тому, что "разрывов" в форме меанра нет


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

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Lisitsin
сообщение Oct 7 2012, 07:05
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 227
Регистрация: 1-10-10
Из: Рязань
Пользователь №: 59 868



Не, USART не пойдёт. Там старт и стоп биты. Ещё хужее будет ... А другой пин-несовместимый процессор ставить - эт значит весь проект перелопатить, а он у меня уже в завершённой стадии. Простро я пытаюсь на этой же платформе сделать эмуляцию уже другой машины ...

Сообщение отредактировал Lisitsin - Oct 7 2012, 07:10


--------------------
с Уважением,
Lisitsin
Vasil.Lisitsin@yandex.ru
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 7 2012, 07:41
Сообщение #22


Гуру
******

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



Цитата(ILYAUL @ Oct 6 2012, 22:37) *
...делал на нем генератор меандра...
ИМХО - странная и бесполезная идея... Я, конечно, понимаю - бывают случаи, когда некоторых ресурсов (например, таймера) не хватает, но при этом есть неиспользованные ресурсы (например, USART) и логично их использовать так сказать - "нетрадиционно"... Но, в Вашем случае - использовать TxD для генерации меандра... Это, уж извините, - извращение и мазохизм. Ведь "рядом" есть вывод XCK от того же USART, на котором меандр и выводится (абсолютно без "разрывов" biggrin.gif ), стоит только настроить USART в Master Synchronous Mode - и всё !
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Oct 7 2012, 09:34
Сообщение #23


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

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



Цитата(Lisitsin @ Oct 7 2012, 11:05) *
Там старт и стоп биты. ...

Какие в синхронном режиме старт и стоп биты? Читаем хотя бы тут или напрягаем Гошу 2.1.3. Взаимодействие устройств в синхронном режиме


Цитата
Это, уж извините, - извращение и мазохизм.
Целиком согласен . И никогда такое использовать не буду. Был чистый эксперимент
Прикрепленные файлы
Прикрепленный файл  sbornikzadachsotwetami.pdf ( 3.66 мегабайт ) Кол-во скачиваний: 49
 


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

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 7 2012, 12:43
Сообщение #24


Гуру
******

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



Цитата(ILYAUL @ Oct 7 2012, 13:34) *
Какие в синхронном режиме старт и стоп биты? Читаем хотя бы тут или напрягаем Гошу 2.1.3. Взаимодействие устройств в синхронном режиме
Не знаком с Гошей, и поэтому не знаю: где у него про это почитать...
В синхронном и асинхронном режимах USART Frame Format ничем не отличаются. Т.е. в обоих режимах будут присутствовать старт и стоп импульсы. В AVR эти режимы отличаются исключительно тем, что в синхронном режиме тактовую частоту USART у Master с Baund Rate Generatоr можно вывести "наружу" на ногу XCK, а у Slave этот сигнал можно использовать вместо сигнала от Baund Rate Generatоr. Полезность использования синхронного режима я вижу только в том, что при нестабильной тактовой частоте МК (например, при тактировании от RC-генератора) не будет проблем в обмене по последовательному интерфейсу из-за "неточностей" скоростей USART разных МК.
Go to the top of the page
 
+Quote Post
Lisitsin
сообщение Oct 7 2012, 14:54
Сообщение #25


Местный
***

Группа: Участник
Сообщений: 227
Регистрация: 1-10-10
Из: Рязань
Пользователь №: 59 868



Цитата(Палыч @ Oct 7 2012, 16:43) *
Не знаком с Гошей, и поэтому не знаю: где у него про это почитать...
В синхронном и асинхронном режимах USART Frame Format ничем не отличаются. Т.е. в обоих режимах будут присутствовать старт и стоп импульсы. В AVR эти режимы отличаются исключительно тем, что в синхронном режиме тактовую частоту USART у Master с Baund Rate Generatоr можно вывести "наружу" на ногу XCK, а у Slave этот сигнал можно использовать вместо сигнала от Baund Rate Generatоr. Полезность использования синхронного режима я вижу только в том, что при нестабильной тактовой частоте МК (например, при тактировании от RC-генератора) не будет проблем в обмене по последовательному интерфейсу из-за "неточностей" скоростей USART разных МК.

Вот вот, а то я уже тоже испугаться уже хотел ...


--------------------
с Уважением,
Lisitsin
Vasil.Lisitsin@yandex.ru
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Oct 7 2012, 16:29
Сообщение #26


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

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



А вот Вы меня по настоящему пугаете. Я уж воспользовался DS микрочип, у них как-то лучшее показаны диаграммы , но если шо, попрошу AVR прислать что нить поподробнее , чем в их даташит.
Ну и ответьте сами себе , на ..на в синхронном режиме , ещё и старт стор биты- чего ещё там нужно подсихронизировать?


P/S Гоша = Google
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 


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

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 7 2012, 16:45
Сообщение #27


Гуру
******

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



Цитата(ILYAUL @ Oct 7 2012, 20:29) *
на ..на в синхронном режиме , ещё и старт стор биты- чего ещё там нужно подсихронизировать?
Ну, стоповый импульс в синхронном режиме - излишен, а, вот, стартовый - для того же, что и в асинхронном - начало передачи информации.

P.S. C ненужностью стопового - погорячился... Для синхронизации тактовых импульсов МК и USART.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Oct 7 2012, 17:09
Сообщение #28


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

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



Да нет там ни старта ни стопа. Ну посмотрите внимательно диаграммы. Всё определяется фронтами и спадами импульсов сихро XCK и схемой сихронизации MC этих импульсов с внутренним передатчиком или приёмником USART. По фронту импульса мастер может принимать или прередавать данные , соответсвенно по спаду того же импульса передать или принять данные. Или наоборот. Зависит от установок.
Вы можете в этом режиме предать сколь угодно байтов без остановочно и без стартов и так же принять. Вся сихронизация определяется именно XCK


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

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Lisitsin
сообщение Oct 7 2012, 17:23
Сообщение #29


Местный
***

Группа: Участник
Сообщений: 227
Регистрация: 1-10-10
Из: Рязань
Пользователь №: 59 868



Народ, я уже готов поверить в отсутствие старт/стоп бит в синхронном режиме, но проштудировав datasheet на ATMega128 ничего подобного не нашёл ... Ну будьте любезны, ткните меня носом ... Если это так, я просто возрадуюсь !!!
ЗЫ - а диаграммы эти вообще не оттуда )))

Сообщение отредактировал Lisitsin - Oct 7 2012, 17:24


--------------------
с Уважением,
Lisitsin
Vasil.Lisitsin@yandex.ru
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 7 2012, 17:39
Сообщение #30


Гуру
******

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



Цитата(ILYAUL @ Oct 7 2012, 21:09) *
Вся сихронизация определяется именно XCK
Импульсы XCK следуют без "перерывов" (иначе Slave не сможет передавать информацию Master'у). Стартовый импульс нужен как сигнал "Далее идут данные"

Цитата(Lisitsin @ Oct 7 2012, 21:23) *
Народ, я уже готов поверить в отсутствие старт/стоп бит в синхронном режиме...
Увы! Разачарую Вас... Я это исследовал в своё время: стартовый и стоповый импульсяы - присутствуют в любом режиме (иначе оно и работать не должно !). Если хотите реализовать формирование сигнала именно на последовательном устройстве AVR, то, имхо, единственный выход USART в режиме SPI.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Oct 7 2012, 18:09
Сообщение #31


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

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



Вот первая из приведённых мной диаграмм - пересылаются 2 байта , где окончание (stop) одного и start другого?

Цитата
ЗЫ - а диаграммы эти вообще не оттуда )))

PIC16F87/88
Эскизы прикрепленных изображений
Прикрепленное изображение
 


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

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 7 2012, 18:16
Сообщение #32


Гуру
******

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



Цитата(ILYAUL @ Oct 7 2012, 22:09) *
PIC16F87/88
Этот подраздел форума называется "AVR", а тема про USART ATmega128. USART AVR не обязан быть идентичен устройству с последовательным обменoм в PIC.

P.S. Поправочка: тема начиналась про SPI AVR, но "скатилась" в USART.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Oct 7 2012, 18:42
Сообщение #33


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

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



Цитата(Палыч @ Oct 7 2012, 22:16) *
Этот подраздел форума называется "AVR", а тема про USART ATmega128. USART AVR не обязан быть идентичен устройству с последовательным обменoм в PIC.

P.S. Поправочка: тема начиналась про SPI AVR, но "скатилась" в USART.

Ну не надо. Не красиво. Я уже попросил в ATMEL такие же диаграмы , а заодно уж и про Stop-start биты спросил.
Да разбирались с SPI - поняли , что не прокатывает. Ищем другой путь. Ну уж , если у PIC и AVR асинхронные режимы как братья близнецы , то почему вдруг синхронные должны различаться. Кстати я пояснял почему взял те диаграммы
С уважением
Илья


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

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Oct 7 2012, 18:51
Сообщение #34


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Примите за данность - синхронный режим в AVR не такой, как в PIC. Он вообще совершенно идиотский. И да, гонит и старт, и стоп, и отключить это нельзя. Проверяется, кстати, элементарно, даже скоп не нужен - стрелочным вольтметром.

Цитата(Палыч @ Oct 7 2012, 21:39) *
Увы! Разачарую Вас... Я это исследовал в своё время: стартовый и стоповый импульсяы - присутствуют в любом режиме (иначе оно и работать не должно !).

В PIC-то работает. Байтовую синхронизацию - да, надо бы какую-то приделать. Но хоть как-то похоже было бы на "нормальный" синхронный режим. А так - совершенно бесполезная вещь, IMHO.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Oct 7 2012, 19:14
Сообщение #35


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

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



Цитата(rx3apf @ Oct 7 2012, 22:51) *
Примите за данность - синхронный режим в AVR не такой, как в PIC. Он вообще совершенно идиотский. И да, гонит и старт, и стоп, и отключить это нельзя. Проверяется, кстати, элементарно, даже скоп не нужен - стрелочным вольтметром.

Пипец , какой-то. Тогда это чёрти что и на... он нужен. Палыч, примите мои искриние извинения.


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

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Oct 8 2012, 12:41
Сообщение #36


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

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



Как это не смешно но у support нет диаграм работы (расширенные) в синхронном режиме. Правда пояснили почему у них есть стартовые импульсы, в синхронном режиме частота ХСК - генерится постоянно , поэтому и нужны старты. Предложили использовать USART в SPI режиме - там нет стартов и стопов. Но 128 такое не поддерживает.



Цитата
Hi Ilya,
Unfortunately, I did not find any one with timing description of the
synchronous mode of USART.


Start bit is required even if you are running synchronous mode, because
otherwise it is not possible to know when the transfer starts. This is
because in the synchronous mode the clock is always running. The start bit
is used to indicate the start of a transfer and it needs to be there to
ensure correct transfer.


If you wish to do transfers where the clock is only running while doing
transfers, you can use the Master SPI mode (MSPIM) as shown in chapter
"23.USART in SPI Mode"(say for example in ATmega2560 datasheet). Here the
transfer is done without start and stop bits.


Atmega2560 datasheet can be download from the following link :
http://www.atmel.com/devices/ATMEGA2560.aspx?tab=documents


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

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 8 2012, 15:29
Сообщение #37


Гуру
******

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



Цитата(Lisitsin @ Oct 7 2012, 11:05) *
... другой пин-несовместимый процессор ставить - эт значит весь проект перелопатить...

Замените ATmega128 на ATmega1281 - они по пинам один-в-один. ATmega1281 имеет "на борту" USART, который может работать в режиме SPI. Ваша проблема будет решена. Про переход с m128 на m1281 можно прочитать в AppNote AVR098 .
Go to the top of the page
 
+Quote Post
Lisitsin
сообщение Oct 11 2012, 15:34
Сообщение #38


Местный
***

Группа: Участник
Сообщений: 227
Регистрация: 1-10-10
Из: Рязань
Пользователь №: 59 868



Цитата(Палыч @ Oct 8 2012, 19:29) *
Замените ATmega128 на ATmega1281 - они по пинам один-в-один. ATmega1281 имеет "на борту" USART, который может работать в режиме SPI. Ваша проблема будет решена. Про переход с m128 на m1281 можно прочитать в AppNote AVR098 .

Спасибо огромное !!!
По-моему, это решение проблемы )))


--------------------
с Уважением,
Lisitsin
Vasil.Lisitsin@yandex.ru
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 09:13
Рейтинг@Mail.ru


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