-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от
Chip
нет, это команда для MAX7456
Простите за еще один дилетантский вопрос: В даташите перечислены DMM, DMAH, VM0 и т.д. - это байты команд? В таблицах приведены значения в восьмеричной форме, за что отвечает тот или иной бит. А почему они перед кодом декларируются, с нижним подчеркиванием и добавлением слова reg? Для чего это делается?
А вот это команды: VIDEO_MODE_PAL, CLEAR_display ? Откуда они? Или я даташит не внимательно читал (не все перевел, каюсь) или библиотека этих команд где-то в другом месте?
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Цитата:
Сообщение от
onemamba
Вот это больше всего не понятно, прокомментируйте, если не сложно:
Цитата:
Сообщение от
onemamba
linepos = y*30+x; // Присвоение байту "linepos" значения выражения "y*30+x" Где берутся значения для "x" и "y"
Они обьявляются в вызове процедуры
void OSD_write_to_screen(const char s[], byte x, byte y, byte blink, byte invert)
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Простите, я не правильно сформулировал вопрос: я не понял, какие значения им присвоены?
объявлен байт x, но он же не пустой, или он изначально - 00000000?
Прошу прощения, я дико тормозил, здесь используется двоичная система, а я из-за размера байта ее восьмеричной обзываю.:D Главное с умным видом умничать!!! Прошу прощения за офтоп...:D:D
Но вопрос остается: какие значения присваиваются эти x и y?
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
x, y Вы сами прописываете, в зависимости какое положение окна на экране Вам нужно
Соответственно blink это моргающая строка и invert инвертированная
OSD_write_to_screen("http://compcar.ru", 2, 1, 0,1);
OSD_write_to_screen("http://compcar.ru", 2, 2, 0,0);
OSD_write_to_screen("Привет!!!", 11, 6, 1,1);
OSD_write_to_screen("ПРИВЕТ!!!", 11, 7, 1,0);
OSD_write_to_screen("http://compcar.ru", 13, 13, 0,1);
OSD_write_to_screen("http://compcar.ru", 13, 14, 0,0);
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от
Chip
x, y Вы сами прописываете, в зависимости какое положение окна на экране Вам нужно
Соответственно blink это моргающая строка и invert инвертированная
OSD_write_to_screen("http://compcar.ru", 2, 1, 0,1);
OSD_write_to_screen("http://compcar.ru", 2, 2, 0,0);
OSD_write_to_screen("Привет!!!", 11, 6, 1,1);
OSD_write_to_screen("ПРИВЕТ!!!", 11, 7, 1,0);
OSD_write_to_screen("http://compcar.ru", 13, 13, 0,1);
OSD_write_to_screen("http://compcar.ru", 13, 14, 0,0);
Вот как! Огромное спасибо, пошел разбираться дальше! Вы мне очень помогли, постараюсь остальное сам докумекать.
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от
onemamba
Простите за еще один дилетантский вопрос: В даташите перечислены DMM, DMAH, VM0 и т.д. - это байты команд? В таблицах приведены значения в восьмеричной форме, за что отвечает тот или иной бит. А почему они перед кодом декларируются, с нижним подчеркиванием и добавлением слова reg? Для чего это делается?
А вот это команды: VIDEO_MODE_PAL, CLEAR_display ? Откуда они? Или я даташит не внимательно читал (не все перевел, каюсь) или библиотека этих команд где-то в другом месте?
Отвечаю на свой дилетантский вопрос: DMM, DMAH, VM0 и т.д. - названия регистров, куда надо отправить данные для операций с ними, присвоенные им значения в начале кода - адреса в памяти, где они находятся для записи, в даташите есть адреса откуда можно считать их значения. В коде мы объявляем их, чтобы ардуинка знала, куда отправлять данные. Приставка reg в конце каждого показывает, что это регистр.
Если не прав - поправьте меня.
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Вот еще вопрос, который меня удивляет, как новичка: В вашем коде нет подключаемых библиотек, в других кодах тоже часто, но ваш код проходит проверку в компиляторе, а другие - нет, ошибка всегда одна и та же:
'spi_transfer' was not declared in this scope
То есть, не хочет признавать командой компилятор это выражение, в чем соль? Почему так происходит?
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Самое не понятное в этой микросхеме MAX7456 то, как она понимает символы, которые вы указываете. Вы же не даете ей адреса ячеек, откуда брать символы, а просто пишете текст. Для меня это особенно актуально потому, что я собираюсь в прошивке заменить символы буквами.
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Все зависит от библиотеки SPI
Можно посмотреть какой синтаксис вызова команды SPI у встроенной библиотеки, он у них иногда изменяется
-
Вложений: 1
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от
onemamba
Самое не понятное в этой микросхеме MAX7456 то, как она понимает символы, которые вы указываете. Вы же не даете ей адреса ячеек, откуда брать символы, а просто пишете текст. Для меня это особенно актуально потому, что я собираюсь в прошивке заменить символы буквами.
Вся кодировка соответствует таблице ASCII
Вот пример международной кодировки:
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от
Chip
Вся кодировка соответствует таблице ASCII
Вот пример международной кодировки:
То есть вы просто пишете текст и если у вас прошита таблица, соответствующая стандарту ASCII, то символы выводятся правильно, если же прошита другая таблица, то получим случайный набор символов? Соответственно по другому я могу передать символы, которые мне нужно отобразить, используя ручной ввод с заданными координатами, передавая координаты их в памяти MAX через регистры DMAH, DMAL, DMDI?
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
можно вызывать символы по коду например код 48 это цифра 0
или строка 3 столбец 0 датут цифру 30 Hex или в дес. это 48
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от
Chip
Все зависит от библиотеки SPI
Можно посмотреть какой синтаксис вызова команды SPI у встроенной библиотеки, он у них иногда изменяется
Вот ваш код с первой страницы, его первая часть:
#define VSYNC 2 // INT0
#define DATAOUT 11//MOSI
#define DATAIN 12//MISO
#define SPICLOCK 13//sck
#define MAX7456SELECT 10//ss
#define DMM_reg 0x04
#define DMAH_reg 0x05
#define DMAL_reg 0x06
#define DMDI_reg 0x07
#define VM0_reg 0x00
#define VM1_reg 0x01
#define VIDEO_BUFFER_DISABLE 0x01
#define MAX7456_RESET 0x02
#define VERTICAL_SYNC_NEXT_VSYNC 0x04
#define OSD_ENABLE 0x08
#define SYNC_MODE_AUTO 0x00
#define SYNC_MODE_INTERNAL 0x30
#define SYNC_MODE_EXTERNAL 0x20
#define VIDEO_MODE_PAL 0x40
#define VIDEO_MODE_NTSC 0x00
#define BLINK_DUTY_CYCLE_50_50 0x00
#define BLINK_DUTY_CYCLE_33_66 0x01
#define BLINK_DUTY_CYCLE_25_75 0x02
#define BLINK_DUTY_CYCLE_75_25 0x03
#define BLINK_TIME_0 0x00
#define BLINK_TIME_1 0x04
#define BLINK_TIME_2 0x08
#define BLINK_TIME_3 0x0C
#define BACKGROUND_BRIGHTNESS_0 0x00
#define BACKGROUND_BRIGHTNESS_7 0x10
#define BACKGROUND_BRIGHTNESS_14 0x20
#define BACKGROUND_BRIGHTNESS_21 0x30
#define BACKGROUND_BRIGHTNESS_28 0x40
#define BACKGROUND_BRIGHTNESS_35 0x50
#define BACKGROUND_BRIGHTNESS_42 0x60
#define BACKGROUND_BRIGHTNESS_49 0x70
#define BACKGROUND_MODE_GRAY 0x40
#define CLEAR_display 0x04
#define CLEAR_display_vert 0x06
#define END_string 0xff
#define ENABLE_display 0x08
#define ENABLE_display_vert 0x0c
#define MAX7456_reset 0x02
#define DISABLE_display 0x00
#define WHITE_level_80 0x03
#define WHITE_level_90 0x02
#define WHITE_level_100 0x01
#define WHITE_level_120 0x00
#define MAX_screen_size 390
#define MAX_screen_rows 16
byte spi_junk, eeprom_junk;
int x;
//////////////////////////////////////////////////////////////
void setup()
{
Serial.begin(115200);
Serial.flush();
pinMode(MAX7456SELECT,OUTPUT);
digitalWrite(MAX7456SELECT,HIGH);
pinMode(DATAOUT, OUTPUT);
pinMode(DATAIN, INPUT);
pinMode(SPICLOCK,OUTPUT);
pinMode(VSYNC, INPUT);
SPCR = (1<<SPE)|(1<<MSTR);
spi_junk=SPSR;
spi_junk=SPDR;
delay(250);
digitalWrite(MAX7456SELECT,LOW);
spi_transfer(VM0_reg);
spi_transfer(MAX7456_reset);
digitalWrite(MAX7456SELECT,HIGH);
delay(500);
До первого упоминания команды spi_transfer() - я может не понимаю, но тут нет упоминания о библиотеке.
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от
Chip
Все зависит от библиотеки SPI
Можно посмотреть какой синтаксис вызова команды SPI у встроенной библиотеки, он у них иногда изменяется
Или имеется ввиду встроенной библиотеке в компилятор?
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от
Chip
Все верно
Совсем не понятно стало. Ведь я открываю оба кода в одном Arduino IDE.
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от
Chip
Все верно
Я еще раз прошу прощения за дилетантские вопросы, я новичок и отрываю вас на всякую мелочь. Я не могу постичь некоторых вещей:
1. команда spi_transfer() - нет никаких подключаемых библиотек, предположение только одно - она начинает работать потому, что инициализируется работа SPI интерфейса. Вот этой командой:
SPCR = (1<<SPE)|(1<<MSTR); - здесь операция ИЛИ вносит в байт SPCR биты "1" в ячейки SPE (6) - (включение работы SPI) и MSTR (4) - (Ардуино - мастер). Остальные биты 0, что означает: прерывания от SPI запрещены SPIE (7), сначала будет передаваться младший разряд DORD (5), сигнал синхронизации в режиме ожидания - 0 CPOL (3), захват сигнала по заднему фронту CPHA (2) и SPR1 и SPR0 задают скорость в нашем случае "/4" (0 и в регистре SPSR в 0м бите). Я все правильно понял?
Далее идет spi_junk=SPSR; - присвоение ,байту spi_junk содержимого SPSR - по умолчанию все "0", т.к. сбрасываются при обращении. И соответственно следующей строкой spi_junk=SPDR происходит присвоение содержимого байта spi_junk байту SPDR, т.е. там тоже все "0". Я все правильно излагаю?
Суть первого вопроса: мне все равно не понятно, почему в вашем коде компилятор не находит ошибок, а во втором коде, который я скопировал с вашего компилятор выдает ошибку "error: 'spi_transfer' was not declared in this scope"? Да, я скопировал не весь код, а только шапку, но она идентична вашей шапке.
2. Второй вопрос, который мучает меня и на который я не могу найти ответ: в шапке есть указание адресов регистров в MAX 7456 типа:
#define DMM_reg 0x04
#define DMAH_reg 0x05
#define DMAL_reg 0x06
где цифры 0x04 - адреса, где находятся регистры.
А дальше идут:
#define VIDEO_BUFFER_DISABLE 0x01
#define MAX7456_RESET 0x02
#define VERTICAL_SYNC_NEXT_VSYNC 0x04
#define OSD_ENABLE 0x08
Здесь цифры 0x02 и другие что означают? Это тоже адреса? Или это команды? Опять таки, никаких библиотек не подключено, откуда названия этих команд или регистров? Эти цифры записаны в шестнадцатеричной системе?
Заранее спасибо, хочется понять как это работает, а не тупо копипастить.
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от
Chip
Все верно
Попробовал добавить библиотеку :
#include <SPI.h>
все равно ошибка - на задекларирована.
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Вы какой компилятор используете?
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от
Chip
Вы какой компилятор используете?
Arduino IDE 1.6.12
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от
Chip
Вы какой компилятор используете?
Спасибо вам огромное, мне тут умную книжку присоветовали, пойду штудировать, думаю многое пойму: http://people.toiit.sgu.ru/Sinelniko...Kern_Ritch.pdf
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Код:
#include <SPI.h>
// set pin 10 as the slave select for the digital pot:
const int slaveSelectPin = 10;
void setup() {
// set the slaveSelectPin as an output:
pinMode(slaveSelectPin, OUTPUT);
// initialize SPI:
SPI.begin();
}
void loop() {
// go through the six channels of the digital pot:
for (int channel = 0; channel < 6; channel++) {
// change the resistance on this channel from min to max:
for (int level = 0; level < 255; level++) {
digitalPotWrite(channel, level);
delay(10);
}
// wait a second at the top:
delay(100);
// change the resistance on this channel from max to min:
for (int level = 0; level < 255; level++) {
digitalPotWrite(channel, 255 - level);
delay(10);
}
}
}
void digitalPotWrite(int address, int value) {
// take the SS pin low to select the chip:
digitalWrite(slaveSelectPin, LOW);
// send in the address and value via SPI:
SPI.transfer(address);
SPI.transfer(value);
// take the SS pin high to de-select the chip:
digitalWrite(slaveSelectPin, HIGH);
}
Вот пример из Вашего компилятора
Вот так выглядит функция: SPI.transfer(data);
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от
Chip
Код:
#include <SPI.h>
// set pin 10 as the slave select for the digital pot:
const int slaveSelectPin = 10;
void setup() {
// set the slaveSelectPin as an output:
pinMode(slaveSelectPin, OUTPUT);
// initialize SPI:
SPI.begin();
}
void loop() {
// go through the six channels of the digital pot:
for (int channel = 0; channel < 6; channel++) {
// change the resistance on this channel from min to max:
for (int level = 0; level < 255; level++) {
digitalPotWrite(channel, level);
delay(10);
}
// wait a second at the top:
delay(100);
// change the resistance on this channel from max to min:
for (int level = 0; level < 255; level++) {
digitalPotWrite(channel, 255 - level);
delay(10);
}
}
}
void digitalPotWrite(int address, int value) {
// take the SS pin low to select the chip:
digitalWrite(slaveSelectPin, LOW);
// send in the address and value via SPI:
SPI.transfer(address);
SPI.transfer(value);
// take the SS pin high to de-select the chip:
digitalWrite(slaveSelectPin, HIGH);
}
Вот пример из Вашего компилятора
Вот так выглядит функция:
SPI.transfer(data);
Грустно, хотелось бы обойтись без библиотек
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Эта библиотека по умолчанию встроена в ардуино IDE
Можете код из библиотеки, скопировать в свой скетч и будет Вам без библиотеки
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от
Chip
Эта библиотека по умолчанию встроена в ардуино IDE
Можете код из библиотеки, скопировать в свой скетч и будет Вам без библиотеки
То есть, вы хотите сказать, что ваш и много других кодов в нете для ардуины, где нет вызова библиотеки - не рабочие?
Вот вопрос, который меня не оставляет в покое: Я ваш код с первой страницы скопировал в IDE, он его проверил и сказал, что все скомпилировано без ошибок. Когда я попытался часть вашего кода скопировать отдельно, и IDE начал ругаться на spi.transfer. Вот тут и не понятно, почему в вашем коде не ругается, и библиотека не упоминается. А в моей копии ругается?
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
То есть, вы хотите сказать, что ваш и много других кодов в нете для ардуины, где нет вызова библиотеки - не рабочие?
Да.
Цитата:
Вот тут и не понятно, почему в вашем коде не ругается, и библиотека не упоминается. А в моей копии ругается?
Возможно Вы забыли про #include <SPI.h>
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от
Chip
Возможно Вы забыли про #include <SPI.h>
Ну тогда совсем не понятно. Код на первой странице, в самом начале обсуждения, я сколько не смотрел, я не увидел там этой команды вызова библиотеки.
Я его в таком виде, как он там и скопировал в IDE и при компиляции в нем нет ошибок.
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Извиняюсь
В скетче из первой страницы SPI функции прописаны в самом коде
Странно что Вы этого не заметили
PHP код:
#define VSYNC 2 // INT0
#define DATAOUT 11//MOSI
#define DATAIN 12//MISO
#define SPICLOCK 13//sck
#define MAX7456SELECT 10//ss
pinMode(MAX7456SELECT,OUTPUT);
digitalWrite(MAX7456SELECT,HIGH);
pinMode(DATAOUT, OUTPUT);
pinMode(DATAIN, INPUT);
pinMode(SPICLOCK,OUTPUT);
pinMode(VSYNC, INPUT);
SPCR = (1<<SPE)|(1<<MSTR);
spi_junk=SPSR;
spi_junk=SPDR;
byte spi_transfer(volatile byte data)
{
SPDR = data;
while (!(SPSR & (1<<SPIF)))
{
};
return SPDR;
}
-
Re: Видеокарта для Arduino(CarduinoVideioCard).
Цитата:
Сообщение от
Chip
Извиняюсь
В скетче из первой страницы SPI функции прописаны в самом коде
Странно что Вы этого не заметили
PHP код:
#define VSYNC 2 // INT0
#define DATAOUT 11//MOSI
#define DATAIN 12//MISO
#define SPICLOCK 13//sck
#define MAX7456SELECT 10//ss
pinMode(MAX7456SELECT,OUTPUT);
digitalWrite(MAX7456SELECT,HIGH);
pinMode(DATAOUT, OUTPUT);
pinMode(DATAIN, INPUT);
pinMode(SPICLOCK,OUTPUT);
pinMode(VSYNC, INPUT);
SPCR = (1<<SPE)|(1<<MSTR);
spi_junk=SPSR;
spi_junk=SPDR;
byte spi_transfer(volatile byte data)
{
SPDR = data;
while (!(SPSR & (1<<SPIF)))
{
};
return SPDR;
}
Да, я это видел. Но объявлено позже, чем использовано в коде. Как сказали на других форумах: это неправильное написание кода, иногда прокатывает, иногда - нет. У меня выдало ошибку. Спасибо за пояснение.
-
Re: Видеокарта для Arduino (arduinoVideioCard).
Подскажите пожалуйста, куда можно обратиться за помощью на коммерческой основе? Требуется наложить на изображение (текст) на камеру переднего и заднего вида. Понял что возможно сделать с помощью OSD меню, поиск привел сюда. Принцип более менее стал понятен, но нужно комплексное (законченное) решение, на которое не хватит терпения, сил и знаний.
-
Re: Видеокарта для Arduino (arduinoVideioCard).
Я могу только микросхему MAX7456 предложить купить. Распаянную на переходник с удобным для отладки шагом 1,25
-
Re: Видеокарта для Arduino (arduinoVideioCard).
Цитата:
Сообщение от
Chip
Я могу только микросхему MAX7456 предложить купить. Распаянную на переходник с удобным для отладки шагом 1,25
А можно как для совсем бум-бум в этих делах чайника?.. Переходник на что? и шаг... ((
-
Вложений: 1
Re: Видеокарта для Arduino (arduinoVideioCard).
Выделил фиолетовым цветом. Кстати микросхема уже прошитая.
Вложение 19420
-
Re: Видеокарта для Arduino (arduinoVideioCard).
Привет! Интересует распаянная микруха, как купить ее у вас?
-
Re: Видеокарта для Arduino (arduinoVideioCard).
-
Re: Видеокарта для Arduino (arduinoVideioCard).
bluestorm, почисти личку, а то не могу скинуть важную информацию по видеосигналу.
Chip, извини, что вмешался в Ваш диалог.
-
Re: Видеокарта для Arduino (arduinoVideioCard).
Доброго здравия !!! Вопрос к знатокам, как программно или еще как можно увеличить символ при выводе на экран.
-
Re: Видеокарта для Arduino (arduinoVideioCard).
Только перерисовать на несколько знакомест.
Например так же как значки яркость или контрастность http://compcar.ru/forum/showthread.p...ll=1#post60190
-
Re: Видеокарта для Arduino (arduinoVideioCard).
Цитата:
Сообщение от
Chip
Приветствую Вас !!! Благодарю за отклик!!! Я не силен в программировании ардуино, мне программу написал другой человек и в ней указано выводить на монитор 3х2 знакоместа это один символ, а сей час значит надо рисовать знак примерно 6х4, а вот как изменить программу я не в силах, по этому обращаюсь к Вам с просьбой пожалуйста помогите !!! С Уважением !!
-
Re: Видеокарта для Arduino (arduinoVideioCard).
Приветствуя вас !!! Перерисовать то не проблема, я и так уже 3х2 сделал, т.е один знак занимает 6 клеток и этого мало, теперь надо делать наверно 10х8 чтоли, но и программу нужно менять.