Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » ТВ выход на bascom avr


ТВ выход на bascom avr

Сообщений 211 страница 240 из 421

211

Ну всё, задержался на работе, жена дома ждёт!!!
Мой первый пиксель, выведенный куда надо в любое место экрана, УРА ТОВАРИЩИ!!! Месяц работы  :rolleyes:  и какие достижения!!!  :rofl:
http://sg.uploads.ru/t/X9KRA.jpg

0

212

Это не пиксель, а целая букашка!  :cool:

А на счет кода, что-то я не понял, почему у тебя везде стоит "Nosave", когда в реальности, в прерывании ты никакие регистры не сохраняешь? Это же верная дорога к глюкам.  :insane:
И зачем конфиг ТВ?

0

213

RDW написал(а):

Это не пиксель, а целая букашка!  

А на счет кода, что-то я не понял, почему у тебя везде стоит "Nosave", когда в реальности, в прерывании ты никакие регистры не сохраняешь? Это же верная дорога к глюкам.  
И зачем конфиг ТВ?


Там сохранять нечего, все значения и адреса в таймерах и портах  :glasses:
А что за конфиг ТВ?

0

214

А, всё, на вечер глючит меня, попутал конфиг баскома с обычным объявлением пина.  :hobo:

Пока сохранять нечего. ;)

0

215

Вот незадача. Под это дело нужны узкие шрифты. Примерно 8х16 или 16х32. Есть у кого в запасах?
........
........
........
........
........
........
........
........

В длину 8, в низ 16.

Отредактировано Ev3658 (2016-12-21 11:13:48)

0

216

Как думаете, прокатит? Рассчитываю через SPI. Так-то заманчиво в три байта ставить 2х цветную точку с наложением или без наложения. А ещё хотелось бы текст генерировать было бы супер!
http://s0.uploads.ru/t/y42ew.jpg
Двухцветность в теории, производительности хватит запустить два Usart, а положение точки при синхронизации можно думаю высчитать.

0

217

А вот это уже загвоздка. 1 строка выводится по байтам. Все шрифты рисуются от верха к низу, а тут нужно с лева на право.
Вот так вот.

0

218

Я тут случайно налетел на такую штуку далекого прошлого: http://rs.gr8bit.ru/Documentation/V9938 … -guide.pdf
Вроде можно купить по сей день (видел наборы).

На счет шрифтов, я в своё время писал такую штуку: OLED 128x64 (UG-2864HSWEG01) на SSD1306
Я правда не помню, может ли она делать большие шрифты, но может пригодится, т.к. генерит голый бинарник/байт.

+1

219

Я не хотел, но так получилось, мне пришлось, я не виноват.... ну оно лежало и я взял шрифт из хорошего проекта - http://www.vga-avr.narod.ru/main_rus.html
В блокноте через замену адаптировал до такого вида:

Код:
Fonts:
Data &B11111111                                             '
Data &B11111111                                             '
Data &B11111111                                             '
Data &B11111111                                             '
Data &B11111111                                             '
Data &B11111111                                             '
Data &B11111111                                             '
Data &B11111111

И вуаля! С наложением и без наложения  :rolleyes: Вот бы теперь хватило это выполнить между прерываниями:

Код:
For Y = 1 To 38
L = Asc( " ")
Nalozhenie = 0
   L = L + Y
   S1 = L - 32
   'If S1 > 159 Then S1 = S1 - 64
   S1 = S1 * 12
   S2 = S1 + 12

   Lowadres = X
   Hiadres = Y * 13

   If Y < 20 Then
      Twoadres = 1
      Else
      Twoadres = 0
   End If
   Config Dataout = Input
   For M1 = S1 To S2
      Lin = Lookup(m1 , Fonts)
      B = Not Datain
      Wr = 0
      Config Dataout = Output
      If Nalozhenie = 1 Then
         Lin = Not Lin
         B = B Or Lin
         Dataout = Not B
         Else
            Dataout = Lin
      End If
      Wr = 1
      Config Dataout = Input
      If Hiadres = 255 Then Twoadres = Not Twoadres
      Incr Hiadres

   Next M1
   Dataout = 0
Next Y
Return

http://s8.uploads.ru/t/cFE7V.jpg

0

220

:huh:  Оказалось вот так вот:

Код:
Config Tcf0 = Pwm , Prescale = E0 , Event_source = E0       ', Compared = Enabled       'на подсчёт таймера
Tcf0_per = 525                                              ' стро к видимом и не видимом кадре
Tcf0_ccd = 480                                              'граница конца рисования
Tcf0_cca = 1                                                'граница начала рисования

и вот так вот:

Код:
Config Tcf0 = Pwm , Prescale = E0 , Event_source = E0       ', Compared = Enabled       'на подсчёт таймера
Tcf0_cca = 1                                                'граница начала рисования
Tcf0_ccd = 480                                              'граница конца рисования
Tcf0_per = 525                                              ' стро к видимом и не видимом кадре

Два разных куска кода!!!! Я в шоке!!! Очередная хитрость, о которой я не знал.

0

221

Bascom 2.0.7.8 ведёт себя не предсказуемо. Компилирует неадекватно, а в 2.0.7.1 не знаю как заставить работать от кварца, да и Pullmul нет.  :(
В 2.0.7.8 вообще неадекватный. Если объявить пустую переменную, а после ей  присвоить значение к примеру 1, после скопилирвоать и на экране кадр будет не ровным, но если значение дать 232, кадр выравнивается. Чего там в 2.0.7.8 напутили, не знаю, нестабильность полная, в 2.0.7.1 такого не замечал.
Кварц в VGA нужен, строки точнее и ровней, от внутреннего осциллятора немного плавают.
Вышло примерно 70 букв на 40 строк от кварца 5мГц, умноженного на 9.
http://se.uploads.ru/t/Frv2Z.jpg

0

222

Глюков с баскомом пока не замечал (особенно с переменными), как раз такие проблемы могут быть, если где-то не учитывать запоминание регистров или всякие там его стандартные настройки (SW...)
Всё это выглядит очень красиво, но где графика? Или ты всё будешь рисовать знакогенератором? Если так, то возможно было оправдано использовать готовые видео чипы (правда аналоговые), нацепить несколько последовательно, защить в каждый свой набор спец шрифтов и рисовать ими всё.

0

223

RDW написал(а):

....Всё это выглядит очень красиво, но где графика? Или ты всё будешь рисовать знакогенератором? ......

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

0

224

Смотрится конечно круто, только я не понял, если выводится 70x39 знакомест, при шрифте 8х16 получается разрешение 560x624 - какое-то странное?
Я тут когда игрался выводом, понял одну вещь, что можно и большее разрешение впихнуть в VGA, современные LCD мониторы/экраны отлично это скушают (т.к. автоматически делают подстройку данных под пустые поля), но в реальности, если брать ЭЛТ монитор, думаю тут вот могут возникнуть проблемы (они были весьма жестки к хар-ам).

На счет графики: 60 знаков в секунду - ну не знаю, для вывода текста может и нормально, хотя, если ты будешь заполнять экран, то время будет весьма плачевным: 45.5 сек заполнение всего экрана. Это очень мало. Долго придется сидеть ждать.
Графика: я вообще не понимаю, зачем станку вектора (аля 3D), всякие там линии/точки/окружности - нафиг нужны. Наверняка будет картинка блока станка (схемотичная) и вокруг обычные цифры/текст. Текст уже есть, а вот рисунок станка можно и знакогенератором рисовать (отдельной областью/страницей). Тебе же не игрушки рисовать, где нужны спрайты...

0

225

RDW написал(а):

....
На счет графики: 60 знаков в секунду - ну не знаю, для вывода текста может и нормально, хотя, если ты будешь заполнять экран, то время будет весьма плачевным: 45.5 сек заполнение всего экрана. Это очень мало. Долго придется сидеть ждать.
Графика: я вообще не понимаю, зачем станку вектора (аля 3D), всякие там линии/точки/окружности - нафиг нужны. Наверняка будет картинка блока станка (схемотичная) и вокруг обычные цифры/текст. Текст уже есть, а вот рисунок станка можно и знакогенератором рисовать (отдельной областью/страницей). Тебе же не игрушки рисовать, где нужны спрайты...

Нужна. Хотелось бы сделать эмуляцию и отрисовку прохода. Станок токарный, графика простая.

Я тут тупанул, всё на прерываниях сделал ))) Знак генерировался в пустом пространстве после 480 строк. Попробовал генерировать в программе и понял, что я сделал большое зло когда использовал "INCR порт адреса памяти". Память то одна, прерывание и программа используют один и тот-же порт. Скорость вывода шрифта получается улётная в программе.
В принципе можно и о цвете подумать, в строке остаётся куча неиспользованных байт, но это лишнее.
Завтра переделаю программу и на следующей неделе буду дружить с SPI.
Монитор CRT работает, как и любой другой. Делал максимально стандартным, чтоб не париться потом. Единственное, что не стандартное, это длина скважности кадрового импульса, слишком длинный, но мониторам оказалось на него чихать, лишь бы был. 45мгц (5х9) дало лучшие результаты. Думаю, кварц 8мГц (8х5) даст более стабильные результаты.

0

226

Лучший результат даст (теоретически) частота максимально приближенная к стандарту, но по существу - это не важно, там довольно сильные допуски имеются. Главное стремиться к 60Гц.
На счет синхроипульсов, я вот например делал всё по феншую, тут где-то в теме проскакивала ссылка на замечательную статью с картинкой, человек подробно описал в пикселях все области (теневые/третье состояние), по началу я этому не придал значение, но потом, когда понадобилось вносить дотошность в логику синхронизации/данных, эта штука очень помогла (сделал как там нарисовано). Да можно было и забить на всё, типа и так всё работает, но хотелось определенности. Если мне память не изменят, там получается, что импульс на кадровую около 10 мс, а для строчной 1 мкс.

0

227

ну как-то так:

Только активность программы сбивает чуток вертикальную развёртку.
Вот если бы DMA имела свою шину данных, было бы вообще улёт, всё без DMA.
Строчный импульс можно через конденсатор нормализовать.
Попробую приём данных через DMA организовать.

0

228

Лол, матрица фильм! )))) Это ты не видеокарту сделал, а скринсейвер! :D

0

229

Надо же было как-то проверить красиво  :D
Столкнулся опять с проблемой. Xmega не запускается с SPI

Код:
Config Spie = Hard , Master = Yes , Mode = 0 , Clockdiv = Clk32 , Data_order = Msb , Ss = Auto
Open "SPIE" For Binary As #12

Компилятор из-за строки "Open "SPIE" For Binary As #12" ругается:
"Error : 222   Line :   54    Illegal character [expected (, got ')' [LBYTE(_SPI_BASE)]]  , in File : C:\PROGRAM FILES (X86)\MCS ELECTRONICS\BASCOM-AVR\LIB\XMEGA.LIB"
Без разницы какой порт.
Ошибка ссылается на кусок библиотеки:

Код:
;_init_xmega_uart:
;  Rcall _UART2BASE       ; get the base register
;#IF _CHIP= 222 or _CHIP=224 or _CHIP=225
;  adiw R26,3             ; point to CTRLB in E series
;#ELSE
;  adiw R26,4             ; point to CTRLB
;#ENDIF
;  ldi r24, 24            ; enable tx and rx
;  st x+,r24              ; store in CTRLB
;  Ld r24,y+              ; get configuration
;  st x+,r24              ; store CTRLC
;#IF _CHIP= 222 or _CHIP=224 or _CHIP=225
;  adiw r26,1             ; skip CTRLD register in E series
;#ENDIF
;  Ld r24,y+              ; get BAUD LSB
;  st x+,r24              ; store BAUDA
;  Ld r24,y+              ; get BSEL BAUD
;  st x+,r24              ; store BAUDB

Bascom 2.0.7.8. Не могу разобраться, всё встало  %-)

0

230

Во-первых: с SPI там была тонкость, чтобы он работал, надо что-то сделать с SS. Я точно не помню, надо подглядеть в старых проектах.
Во-вторых: у тебя лицензия? Если нет, то дай мне исходник, попробую собрать твой проект у себя. Может опять проделки криволоманий. Или проблема с сборкой только конкретного примера/строки, что ты выше описал?

Отредактировано RDW (2016-12-23 17:00:14)

0

231

RDW написал(а):

... Если нет, то дай мне исходник, попробую собрать твой проект у себя.....

Исходник не большой.

Код:
$regfile = "xm256a3def.dat"
$crystal = 32000000

$hwstack = 64
$swstack = 64
$framesize = 64
'include the following lib and code, the routines will be replaced since they are a workaround
$lib "xmega.lib"
$external _xmegafix_clear
$external _xmegafix_rol_r1014

Config Osc = Enabled , 32mhzosc = Enabled
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1

'îòëàäî÷íàÿ èíäèêàöèÿ
Led Alias Portd.7
Config Led = Output

Config Porte.6 = Output
Config Porte.7 = Output                                    
Config Porte.5 = Input                                     
Cs Alias Porte.6
Config Spie = Hard , Master = Yes , Mode = 0 , Clockdiv = Clk32 , Data_order = Msb , Ss = Auto
Open "SPIE" For Binary As #12



Dim A(3) As Byte
Dim X As Byte
Dim Y As Byte

Do
Y = Rnd(30)
X = Rnd(60)
Y = Y + 1
X = X + 1

Led = Not Led
A(1).0 = 1
A(1).2 = Y.0
A(1).3 = Y.1
A(1).4 = Y.2
A(1).5 = Y.3
A(2) = X
A(3) = Asc( "Æ")
Cs = 1
Spiout A(3) , 3
Cs = 0
Waitms 500


Loop

0

232

С работы приду - попробую.
На счет SS, его ногу вроде обязательно надо настраивать как output (иначе работать не будет).

0

233

Ev3658 написал(а):

Bascom 2.0.7.8.

Компилирует без ошибок. http://rgho.st/6Zf2vBmM8

0

234

Пётр написал(а):

Компилирует без ошибок. http://rgho.st/6Zf2vBmM8

Не, не хочет. Эх... лицензию куплю только весной, сложно доказать на работе актуальность затрат.
http://sf.uploads.ru/t/G05vL.png

Может чего в библиотеке, она кажись старее Bascom, двойной клик по ошибке открывает её:
http://s0.uploads.ru/t/6ahoD.png

0

235

Попробовал два Usart для цветности, получается анаглиф ))). Можно вывести 3х цветные точки, но на пределе производительности, да и сдвигать память придётся для второго Usart, а это не мало тактов.
Как вариант, можно для вывода текста сделать 15 цветов, используя на выходе элементы "И", но графика будет одноцветной.
Интерфейс SPI видимо придётся через регистры настраивать.

0

236

Да, компилится: http://rdvv.ru/upload/ttt.zip
В архиве сборка и за одно xm256a3def.dat от 9 версии.

+1

237

RDW написал(а):

....В архиве сборка и за одно xm256a3def.dat от 9 версии.

Спасибо!!! Компилится!!!

0

238

Какие перспективы даёт эта штука!!!!
Обязательно сделаю автономный ЭКГ прибор с гальванической развязкой и подклчюением к монитору или телевизору + возможность использования RS232 чекового принтера и записи на SD карту.
А после попробую создать собственный анализатор закопанного металла!
А ещё в коридор экономайзер, подключённый к датчикам газа, х/г воды и к счётчику по RS485, будет показывать расходы и в рублях каждый прожитый день  :hobo:
Ну и если моё ведро на колёсах не расыпиться, будет там хорошая панель.

0

239

Мысли шире, выводи все на мини проектор. ;)

0

240

Не могу SPI освоить...ох... всегда стороной от таймеров и SPI держался, таймеры переварил, осталось SPI.
Как-то не хочется обращаться к регистрам на прямую, совсем код не Bascom будет  ;)
Кто сталкивался с SPI в Xmega?
Передача идёт. приём как-то не очень, не могу три байта отправить и принять:

Код:
Config Spie = Hard , Master = Yes , Mode = 0 , Clockdiv = Clk2 , Data_order = Msb , Ss = Auto
Open "SPIE" For Binary As #2
.....
.....
P = 3
Print #2 , A(3) , P
.....
.....

приём:

Код:
Config Spie = Hard , Master = No , Mode = 0 , Clockdiv = Clk4 , Data_order = Msb , Ss = Auto
Open "SPIE" For Binary As #2
.....
.....
P = 3
Input #2 , Spi(1),P
.....
.....

Сигналы все в норме, отправка по осциллографу идёт в три пакета, CS в автоматическом режиме играет, всё как-бы есть, но принимается не то всё.

Может есть какой другой метод, а то в примерах как-то всё стандартно.

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » ТВ выход на bascom avr