tv out leonardo
- Войдите на сайт для отправки комментариев
Втр, 09/04/2013 - 18:32
Доброго всем времени суток!
Кто нибудь пробовал подключать Leonardo к тв через "тюльпан"?
Скачанные с оффициального сайта библиотеки с Leonardo не работают!
Помогите разобраться с подключением.
Так либа не работает или подключили не так? :) Тут были? http://code.google.com/p/arduino-tvout/
Всё просто вроде.
Подключить действительно просто.
Проблема в другом. ПО Ардуино 1.0.4 библиотека TVout_R5.91.
При выборе платы Леонардо даже примеры из библиотеки не компилируются.
При выборе платы uno компиляция проходит без проблем
http://www.wayneandlayne.com/forum/viewtopic.php?f=5&t=2013#p3426
файл hardware_setup.h в папке библиотеки TVOut
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
Еще бы не ругался, вы видите как пишутся имена директив выше и ниже?
а вот какие строки должны быть для леонардо:
попробуйте подобрать методом тыка.
В файле 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
В методе тыка какие позиции пробовать менять ? Честно говоря я пока мануалов мало скурил .
Еще раз ВНИМАТЕЛЬНО перечитайте сообщение #5.
Разницу между PORT_VID и _VID_PORT видите или нет?
А разницу между DDR_VID и _VID_DDR видите? А между VID_PIN и _VID_PIN ??? и т.д.
maksim, Спасибо!
скетч скомпилировался и загрузился!
но показывать ничего не хочет .
Приобрёл Nano 168- также скетч компилируется и грузится а изображения нет.
Провода, соединия, телевизор проверен. В чем может еще дело?
я вот попробывал сделать так:
за что вообще отвечают строки ?
#define _ANDI_HWS "andi r16,0xBF\n"
#define _BLD_HWS "bld r16,6\n\t"
"andi r16,0xBF\n" и "bld r16,6\n\t" - это ассемблер.
Спасибо всем за помощь.
Но после этих экспериментов походу Леонардо "успокоился" :
При подключении leonardo к компьютеру чере usb загорается светодиод RX и не гаснет
также не загружаются скетчи даже из примеров.
Жаль конечно что официальный сайт слишком вяло обновляет библиотеки
"andi r16,0xBF\n" и "bld r16,6\n\t" - это ассемблер.
ну я так и подозрвеал r16 ... снакомые сочетания символов )) просто, что настраивается и как настроить,
кстати я подключел леонардо к тв, картинку колбасит под углом 45° примерно, пробывал стандарты менять (PAL - NTSC) не помогает. может что-то с кабелем, и на сколько можно отклоняться в подборе резисторов ?
... после этих экспериментов походу Леонардо "успокоился" ...
что-то меня пугает эта фраза, может не все так плохо ? на леонардо долго виртуальный компорт инициализируется и если слишком рано выбрал загрузку скетча после включения, IDE будет шить через какой нить физический порт, а не виртуальный леонардовский.
картинку колбасит под углом 45° примерно, пробывал стандарты менять (PAL - NTSC) не помогает. может что-то с кабелем, и на сколько можно отклоняться в подборе резисторов ?
По стандарту, ТВ сигнал передается с уровнем 1В, сопротивление входа телевизора 75 Ом. Насколько я помню уровень синхро должен быть 30%. А судя по схеме на вход подается около 350мВ синхро то есть 35%. Отсюда и могут быть подрывы синхронизации.
Менять сопротивления можно исходя из этих известных значений. (U=1В, Rвх.тв=75 Ом, I=13мА)
Кстати кабель должен быть коаксиальный 75Ом
P.S. По личному опыту, меньший уровень синхросигнала лучше чем больший. (При 25% телевизор нормально синхронизируется, зато на полезный видеосигнал остается 75%)
вот что выдает леонардно
буквально через доли секунд картинка рассинхронизируется.
и ее колбасит.
Сбиты строки.
Попробуй поставить после 1к сопротивления переменник на 470 Ом, и порегулировать.
romster пишет: на леонардо долго виртуальный компорт инициализируется и если слишком рано выбрал загрузку скетча после включения, IDE будет шить через какой нить физический порт, а не виртуальный леонардовский.
Cкорее всего так и получилось, но виртуальный определяется тот же и он единственный.
Лечить перепрошивкой через LPT?
SPI порт распаян на леонардо, видимо к нему программатором.
Я тоже кстати заметил подобное за Леонардо, причем такое бывает после первой загрузки скетча, повторно Лео грузить ничего в себя не хочет. Перезагружаю систему, подтыкаю Лео и все снова работает, странно все это.
Внимание, проблема с синхронизацией решилась.
Нужно запитать ардуино не от USB, а от внешнего питальника типа БП от "денди". Сразу картинка становится четкой :)
Все. теперь мой The Arduino Leonardo is dead. Это произошло при попытке подключить к реальному телевизору, а не компутерному тюнеру, есть конечно подозрение и на БП 15 Вольт но ведь до этого все работало.
Кто живет в Нижнем Новгороде отзовитесь плиззз, там продают процики mega32u4 по 135 рэ всего, об оплате договоримся.
Кстати еще одн поправочка перед закрытием темы.
вот эти строки для последней версии либы 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.
Может модератор соберет всю полезну информацию и прикрепит в шапку, а то как оказалось граблей много лежит.
Нижнем Новгороде отзовитесь плиззз, там продают процики mega32u4 по 135 рэ всего, об оплате договоримся.
Увы я в 250км от него, и вближайшее время туда не собираюсь. Рядом с НН помоему maksim живет, попробуй свяжись с ним.
Спасибо, за наводку, только как найти maksim. не могу разобраться как написать личное сообщение, форум какой-то очень упрощенный.
romster, спаибо за помощь!
оживлю свой Леонардо и попробую
Спасибо, за наводку, только как найти maksim. не могу разобраться как написать личное сообщение, форум какой-то очень упрощенный.
Посмотри тему http://arduino.ru/forum/ishchu-ispolnitelya/nuzhen-spetsialist
А chipnn.ru?
Вроде у них есть, только что смотрел.
Upd: извиняюсь, неправильно понял
Ну да, chip-nn.ru но доставка стоит 175 рэ, а контроллер можно в конверте отправить за 15 рэ.
там чип стоит 135 рэ + 175 доставка =3ОО рэ это уже другая сумма ((
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"
ошибки перестали. но и видео сигнала нет!? или может я не стех пинов ардуины снимаю сигнал? подскажите.