tv out leonardo

den.minus
Offline
Зарегистрирован: 09.04.2013

Доброго всем времени суток!

Кто нибудь пробовал подключать Leonardo к тв через "тюльпан"?

Скачанные с оффициального сайта библиотеки с Leonardo не работают!

Помогите разобраться с подключением.

medossa
Offline
Зарегистрирован: 10.07.2012

Так либа не работает или подключили не так? :) Тут были? http://code.google.com/p/arduino-tvout/

Всё просто вроде.

den.minus
Offline
Зарегистрирован: 09.04.2013

Подключить действительно просто.

Проблема в другом. ПО Ардуино 1.0.4 библиотека TVout_R5.91.

При выборе платы Леонардо даже примеры из библиотеки не компилируются.

При выборе платы uno компиляция проходит без проблем

 

medossa
Offline
Зарегистрирован: 10.07.2012

http://www.wayneandlayne.com/forum/viewtopic.php?f=5&t=2013#p3426

файл hardware_setup.h в папке библиотеки TVOut

den.minus
Offline
Зарегистрирован: 09.04.2013

 

http://www.wayneandlayne.com/forum/viewtopic.php?f=5&t=2013#p3426

В файл hardware_setup.h в папке библиотеки TVOut добавлял код в разных вариациях.

 

*/

#ifndef HARDWARE_SETUP_H
#define HARDWARE_SETUP_H

// device specific settings.
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__)
#define _VID_PORT PORTB
#define _VID_DDR DDRB
#define _VID_PIN 6
#define _SYNC_PORT PORTB
#define _SYNC_DDR DDRB
#define _SYNC_PIN 5
#define _ANDI_HWS "andi r16,0xBF\n"
#define _BLD_HWS "bld r16,6\n\t"

#elif defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__)
#define _VID_PORT PORTD
#define _VID_DDR DDRD
#define _VID_PIN 4
#define _SYNC_PORT PORTD
#define _SYNC_DDR DDRD
#define _SYNC_PIN 5
#define _ANDI_HWS "andi r16,0xDF\n"
#define _BLD_HWS "bld r16,4\n\t"

#elif defined(__AVR_ATmega32U4__)
//video
#define PORT_VID PORTE
#define DDR_VID DDRE
#define VID_PIN 6
//sync
#define PORT_SYNC PORTB
#define DDR_SYNC DDRB
#define SYNC_PIN 5
//sound
#define PORT_SND PORTB
#define DDR_SND DDRB
#define SND_PIN 7

#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega88__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__)
#define _VID_PORT PORTB
#define _VID_DDR DDRB
#define _VID_PIN 0
#define _SYNC_PORT PORTB
#define _SYNC_DDR DDRB
#define _SYNC_PIN 1
#define _ANDI_HWS "andi r16,0xFD\n"
#define _BLD_HWS "bld r16,0\n\t"

#endif
#endif

и все равно проблема с компиляцией не исчезла:

C:\Documents and Settings\1\Рабочий стол\arduino-1.0.4-windows\arduino-1.0.4\libraries\TVout\TVout.cpp: In member function 'void TVout::render_setup(uint8_t)':
C:\Documents and Settings\1\Рабочий стол\arduino-1.0.4-windows\arduino-1.0.4\libraries\TVout\TVout.cpp:730: error: '_VID_DDR' was not declared in this scope
C:\Documents and Settings\1\Рабочий стол\arduino-1.0.4-windows\arduino-1.0.4\libraries\TVout\TVout.cpp:730: error: '_VID_PIN' was not declared in this scope
C:\Documents and Settings\1\Рабочий стол\arduino-1.0.4-windows\arduino-1.0.4\libraries\TVout\TVout.cpp:731: error: '_SYNC_DDR' was not declared in this scope
C:\Documents and Settings\1\Рабочий стол\arduino-1.0.4-windows\arduino-1.0.4\libraries\TVout\TVout.cpp:731: error: '_SYNC_PIN' was not declared in this scope
C:\Documents and Settings\1\Рабочий стол\arduino-1.0.4-windows\arduino-1.0.4\libraries\TVout\TVout.cpp:732: error: '_VID_PORT' was not declared in this scope
C:\Documents and Settings\1\Рабочий стол\arduino-1.0.4-windows\arduino-1.0.4\libraries\TVout\TVout.cpp:733: error: '_SYNC_PORT' was not declared in this scope

maksim
Offline
Зарегистрирован: 12.02.2012

Еще бы не ругался, вы видите как пишутся имена директив выше и ниже?

#elif defined(__AVR_ATmega32U4__)
//video
#define _VID_PORT PORTE
#define _VID_DDR DDRE
#define _VID_PIN 6
//sync
#define _SYNC_PORT PORTB
#define _SYNC_DDR DDRB
#define _SYNC_PIN 5

а вот какие строки должны быть для леонардо:

#define _ANDI_HWS "andi r16,0xFD\n"
#define _BLD_HWS "bld r16,0\n\t"

попробуйте подобрать методом тыка.

den.minus
Offline
Зарегистрирован: 09.04.2013

В файле hardware_setup.h (в папке библиотеки TVOut) такие строки имеются 

а строки

#elif defined(__AVR_ATmega32U4__)
//video
#define PORT_VID PORTE
#define DDR_VID DDRE
#define VID_PIN 6
//sync
#define PORT_SYNC PORTB
#define DDR_SYNC DDRB
#define SYNC_PIN 5
//sound
#define PORT_SND PORTB
#define DDR_SND DDRB
#define SND_PIN 7

взяты с :http://www.wayneandlayne.com/forum/viewtopic.php?f=5&t=2013#p3426

В методе тыка какие позиции пробовать менять ? Честно говоря я пока мануалов мало скурил .

 

 

maksim
Offline
Зарегистрирован: 12.02.2012

Еще раз ВНИМАТЕЛЬНО перечитайте сообщение #5.
Разницу между PORT_VID и _VID_PORT видите или нет?
А разницу между DDR_VID и _VID_DDR видите? А  между VID_PIN и _VID_PIN ??? и т.д.

den.minus
Offline
Зарегистрирован: 09.04.2013

maksim, Спасибо!

скетч скомпилировался и загрузился!

но показывать ничего не хочет .

Приобрёл Nano 168- также скетч компилируется и грузится а изображения нет.

Провода, соединия, телевизор проверен. В чем может еще дело? 

romster
Offline
Зарегистрирован: 15.04.2013

я вот попробывал сделать так:











#elif defined(__AVR_ATmega32U4__)
//video
#define _VID_PORT PORTE
#define _VID_DDR DDRE
#define _VID_PIN 6
//sync
#define _SYNC_PORT PORTB
#define _SYNC_DDR DDRB
#define _SYNC_PIN 5
//не sound ))
#define _ANDI_HWS "andi r16,0xBF\n"
#define _BLD_HWS "bld r16,6\n\t"

за что вообще отвечают строки ?

#define _ANDI_HWS "andi r16,0xBF\n"
#define _BLD_HWS "bld r16,6\n\t"

maksim
Offline
Зарегистрирован: 12.02.2012

"andi r16,0xBF\n" и "bld r16,6\n\t" - это ассемблер.

den.minus
Offline
Зарегистрирован: 09.04.2013

Спасибо всем за помощь.

Но после этих экспериментов походу Леонардо "успокоился" :

При подключении leonardo к компьютеру чере usb загорается светодиод RX и не гаснет

также не загружаются скетчи даже из примеров.

Жаль конечно что  официальный сайт слишком вяло обновляет библиотеки 

romster
Offline
Зарегистрирован: 15.04.2013

maksim пишет:

"andi r16,0xBF\n" и "bld r16,6\n\t" - это ассемблер.

 

ну я так и подозрвеал  r16 ... снакомые сочетания символов )) просто, что настраивается и как настроить,

кстати я подключел леонардо к тв, картинку колбасит под углом 45° примерно, пробывал стандарты менять (PAL - NTSC) не помогает. может что-то с кабелем, и на сколько можно отклоняться в подборе резисторов ?

romster
Offline
Зарегистрирован: 15.04.2013

den.minus пишет:

... после этих экспериментов походу Леонардо "успокоился" ...

что-то меня пугает эта фраза, может не все так плохо ? на леонардо долго виртуальный компорт инициализируется и если слишком рано выбрал загрузку скетча после включения, IDE будет шить через какой нить физический порт, а не виртуальный леонардовский.

 

Snubist
Offline
Зарегистрирован: 18.02.2013

romster пишет:

 картинку колбасит под углом 45° примерно, пробывал стандарты менять (PAL - NTSC) не помогает. может что-то с кабелем, и на сколько можно отклоняться в подборе резисторов ?

По стандарту, ТВ сигнал передается с уровнем 1В, сопротивление входа телевизора 75 Ом. Насколько я помню уровень синхро должен быть 30%. А судя по схеме на вход подается около 350мВ синхро то есть 35%. Отсюда и могут быть подрывы синхронизации.

Менять сопротивления можно  исходя из этих известных значений. (U=1В, Rвх.тв=75 Ом, I=13мА)

Кстати кабель должен быть коаксиальный 75Ом

P.S. По личному опыту, меньший уровень синхросигнала лучше чем больший. (При 25% телевизор нормально синхронизируется, зато на полезный видеосигнал остается 75%)

romster
Offline
Зарегистрирован: 15.04.2013

вот что выдает леонардно

буквально через доли секунд картинка рассинхронизируется.

и ее колбасит.

Snubist
Offline
Зарегистрирован: 18.02.2013

Сбиты строки.

Попробуй поставить после 1к сопротивления переменник на 470 Ом, и порегулировать.

den.minus
Offline
Зарегистрирован: 09.04.2013

romster пишет: на леонардо долго виртуальный компорт инициализируется и если слишком рано выбрал загрузку скетча после включения, IDE будет шить через какой нить физический порт, а не виртуальный леонардовский.

Cкорее всего так и получилось, но виртуальный определяется тот же и он единственный.

Лечить перепрошивкой через LPT?  

romster
Offline
Зарегистрирован: 15.04.2013

SPI порт распаян на леонардо, видимо к нему программатором.

romster
Offline
Зарегистрирован: 15.04.2013

Я тоже кстати заметил подобное за Леонардо, причем такое бывает после первой загрузки скетча, повторно Лео грузить ничего в себя не хочет. Перезагружаю систему, подтыкаю Лео и все снова работает, странно все это.

romster
Offline
Зарегистрирован: 15.04.2013

Внимание, проблема с синхронизацией решилась.

Нужно запитать ардуино не от USB, а от внешнего питальника типа БП от "денди". Сразу картинка становится четкой :)

romster
Offline
Зарегистрирован: 15.04.2013

Все. теперь мой The Arduino Leonardo is dead. Это произошло при попытке подключить к реальному телевизору, а не компутерному тюнеру, есть конечно подозрение и на БП 15 Вольт но ведь до этого все работало.

Кто живет в Нижнем Новгороде отзовитесь плиззз, там продают процики mega32u4 по 135 рэ всего, об оплате договоримся.

romster
Offline
Зарегистрирован: 15.04.2013

Кстати еще одн поправочка перед закрытием темы.

вот эти строки для последней версии либы TV-out

#elif defined(__AVR_ATmega32U4__)
//video
#define PORT_VID PORTE
#define DDR_VID DDRE
#define VID_PIN 6
//sync
#define PORT_SYNC PORTB
#define DDR_SYNC DDRB
#define SYNC_PIN 5
//sound
#define PORT_SND PORTB
#define DDR_SND DDRB
#define SND_PIN 7

а эти для более ранней:

#elif defined(__AVR_ATmega32U4__)
//video
#define    _VID_PORT    PORTE
#define    _VID_DDR    DDRE
#define    _VID_PIN    6
//sync
#define _SYNC_PORT    PORTB
#define _SYNC_DDR    DDRB
#define _SYNC_PIN    5
//sound
#define _SND_PORT    PORTB
#define _SND_DDR    DDRB
#define    _PIN_SND    7

 

обратите внимание на выделенные участи текста. кстати в новый версиях hardware_setup.h лежит в папке TVOUT\spec а встарых версиях в папке TVOUT.

 

Может модератор соберет всю полезну информацию и прикрепит в шапку, а то как оказалось граблей много лежит.

Snubist
Offline
Зарегистрирован: 18.02.2013

romster пишет:

 Нижнем Новгороде отзовитесь плиззз, там продают процики mega32u4 по 135 рэ всего, об оплате договоримся.

Увы я в 250км от него, и вближайшее время туда не собираюсь. Рядом с НН помоему maksim живет, попробуй свяжись с ним.

romster
Offline
Зарегистрирован: 15.04.2013

Спасибо, за наводку, только как найти maksim. не могу разобраться как написать личное сообщение, форум какой-то очень упрощенный.

den.minus
Offline
Зарегистрирован: 09.04.2013

romster, спаибо за помощь!

оживлю свой Леонардо и попробую

Snubist
Offline
Зарегистрирован: 18.02.2013

romster пишет:

Спасибо, за наводку, только как найти maksim. не могу разобраться как написать личное сообщение, форум какой-то очень упрощенный.

Посмотри тему http://arduino.ru/forum/ishchu-ispolnitelya/nuzhen-spetsialist

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

А chipnn.ru?
Вроде у них есть, только что смотрел.
Upd: извиняюсь, неправильно понял

romster
Offline
Зарегистрирован: 15.04.2013

Ну да, chip-nn.ru но доставка стоит 175 рэ, а контроллер можно в конверте отправить за 15 рэ.

там чип стоит 135 рэ + 175 доставка =3ОО рэ это уже другая сумма ((

777Andrej
Offline
Зарегистрирован: 09.04.2014

Arduino Mega 2560 Rev3

библиотека TVout_R5.91.zip
иде 1.5.5 (на 1.0.5 тоже пробовал. не помогло)

ошибки если заливать именно на мегу2560

\libraries\TVout\TVout.cpp: In member function 'void TVout::render_setup(uint8_t)':
\libraries\TVout\TVout.cpp:730: error: '_VID_DDR' was not declared in this scope
\libraries\TVout\TVout.cpp:730: error: '_VID_PIN' was not declared in this scope
libraries\TVout\TVout.cpp:731: error: '_SYNC_DDR' was not declared in this scope
\libraries\TVout\TVout.cpp:731: error: '_SYNC_PIN' was not declared in this scope
\libraries\TVout\TVout.cpp:732: error: '_VID_PORT' was not declared in this scope
\libraries\TVout\TVout.cpp:733: error: '_SYNC_PORT' was not declared in this scope

после исправление в файле hardware_setup.h

 

#ifndef HARDWARE_SETUP_H
#define HARDWARE_SETUP_H

// device specific settings.
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2560__)
#define _VID_PORT PORTB
#define _VID_DDR DDRB
#define _VID_PIN 6
#define _SYNC_PORT PORTE
#define _SYNC_DDR DDRE
#define _SYNC_PIN 5
#define _ANDI_HWS "andi r16,0xBF\n"
#define _BLD_HWS "bld r16,6\n\t"

ошибки перестали. но и видео сигнала нет!?  или может я не стех пинов ардуины снимаю сигнал? подскажите.