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

 
 
> 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
 
Start new topic
Ответов
Maik-vs
сообщение Oct 4 2012, 09:24
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 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
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 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

Сообщений в этой теме
- Lisitsin   ATMega128 - проблема с SPI Master   Oct 3 2012, 15:35
- - chernenko   я бы проверил осциллографом что там физически выхо...   Oct 3 2012, 15:37
|- - Lisitsin   Цитата(chernenko @ Oct 3 2012, 19:37) я б...   Oct 3 2012, 15:55
- - Палыч   Цитата(Lisitsin @ Oct 3 2012, 19:35) Форм...   Oct 3 2012, 16:07
|- - Lisitsin   Цитата(Палыч @ Oct 3 2012, 20:07) ИМХО, э...   Oct 3 2012, 16:12
|- - Палыч   Цитата(Lisitsin @ Oct 3 2012, 20:12) Так ...   Oct 3 2012, 16:18
|- - Lisitsin   Цитата(Палыч @ Oct 3 2012, 20:18) Нет, ше...   Oct 3 2012, 16:21
|- - Палыч   Цитата(Lisitsin @ Oct 3 2012, 20:21) Я их...   Oct 3 2012, 16:31
||- - Lisitsin   Цитата(Палыч @ Oct 3 2012, 20:31) В том, ...   Oct 3 2012, 16:41
|- - Палыч   Цитата(Lisitsin @ Oct 3 2012, 20:21) Я их...   Oct 4 2012, 02:02
|- - zombi   Цитата(Палыч @ Oct 4 2012, 05:02) В этом ...   Oct 4 2012, 04:47
- - ILYAUL   ЦитатаИз 48 байт ... КодCPI XL,0X40 = 64 или первы...   Oct 3 2012, 17:56
- - ILYAUL   А какая частота строчной развёртки?   Oct 5 2012, 08:10
|- - Lisitsin   Цитата(ILYAUL @ Oct 5 2012, 12:10) А кака...   Oct 6 2012, 06:08
|- - Палыч   Цитата(Lisitsin @ Oct 6 2012, 10:08) Имее...   Oct 6 2012, 07:18
- - rx3apf   В новых мегах можно настроить USART как SPI Master...   Oct 5 2012, 20:24
- - rx3apf   Да, и в младших (48/88/168). Если нужно что-то мно...   Oct 6 2012, 08:24
- - ILYAUL   Ну, вот полмысли Вам уже высказали- UART - и это ...   Oct 6 2012, 18:37
|- - Lisitsin   Не, USART не пойдёт. Там старт и стоп биты. Ещё ху...   Oct 7 2012, 07:05
||- - ILYAUL   Цитата(Lisitsin @ Oct 7 2012, 11:05) Там ...   Oct 7 2012, 09:34
|||- - Палыч   Цитата(ILYAUL @ Oct 7 2012, 13:34) Какие ...   Oct 7 2012, 12:43
|||- - Lisitsin   Цитата(Палыч @ Oct 7 2012, 16:43) Не знак...   Oct 7 2012, 14:54
||- - Палыч   Цитата(Lisitsin @ Oct 7 2012, 11:05) ... ...   Oct 8 2012, 15:29
||- - Lisitsin   Цитата(Палыч @ Oct 8 2012, 19:29) Заменит...   Oct 11 2012, 15:34
|- - Палыч   Цитата(ILYAUL @ Oct 6 2012, 22:37) ...дел...   Oct 7 2012, 07:41
- - ILYAUL   А вот Вы меня по настоящему пугаете. Я уж воспольз...   Oct 7 2012, 16:29
|- - Палыч   Цитата(ILYAUL @ Oct 7 2012, 20:29) на ..н...   Oct 7 2012, 16:45
- - ILYAUL   Да нет там ни старта ни стопа. Ну посмотрите внима...   Oct 7 2012, 17:09
|- - Lisitsin   Народ, я уже готов поверить в отсутствие старт/сто...   Oct 7 2012, 17:23
- - Палыч   Цитата(ILYAUL @ Oct 7 2012, 21:09) Вся си...   Oct 7 2012, 17:39
- - ILYAUL   Вот первая из приведённых мной диаграмм - пересыла...   Oct 7 2012, 18:09
|- - Палыч   Цитата(ILYAUL @ Oct 7 2012, 22:09) PIC16F...   Oct 7 2012, 18:16
|- - ILYAUL   Цитата(Палыч @ Oct 7 2012, 22:16) Этот по...   Oct 7 2012, 18:42
- - rx3apf   Примите за данность - синхронный режим в AVR не та...   Oct 7 2012, 18:51
|- - ILYAUL   Цитата(rx3apf @ Oct 7 2012, 22:51) Примит...   Oct 7 2012, 19:14
- - ILYAUL   Как это не смешно но у support нет диаграм работы ...   Oct 8 2012, 12:41


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

 


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


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