|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 4:14 pm
| Автор |
Съобщение |
|
mkrumov
Ранг: Минаващ
Регистриран на: Пон Мар 01, 2010 7:12 pm Мнения: 65
|
 Динамична индикация
Здравейте,
правя едно диодно табло 20 символа на ред (7х5), трябват ми 10 реда.
Направил сам единият ред и проблема е следния - ако се показват до 6 символа, всичко е ок.
Ако са повече, започва да се вижда опреснняването на диодите.
Представям си какво ще се получи при 10 реда ...
Експерименталната схема за този ред е следната - един pic18f1320, единият порт го ползвам за опреснване на колоните, а от другия ползвам 3 изхода за управление на HC595, като подавам редовете през наколко навързани HC595.
Установих че проблема е в pic-a - не е достатъчно бърз.
Та въпроса е следният - да продължавам ли да се опитвам с динамична индикация (друг pic или друга марка контролери ) или да се орентирам към нещо с повече изходи и да направя статична?
Ако има други предложения за динамична индикация - моля споделете.
Гледах port expander, които се управлява пак серийно и не знам дали нямам да имам същия проблем.
Изобщо споделете вашият опит с подобни задачи.
|
| Сря Юли 07, 2010 5:26 pm |
|
 |
|
sthx
Ранг: Форумен бог
Регистриран на: Съб Юни 24, 2006 8:25 pm Мнения: 2292
|
Едно от решенията според мене е следното.
Динамични индикации, като всяка една от тях се "грижи" за 8 символа. Честота на опресняване трябва да ти е поне 100Hz, сиреч добре е на всяка примерно 1 mS процесорът да сменя светещия разряд.
Възможно е и рзделяне по редове и колони в смисъл данните да не са 8 битови, а примерно 32. Това е въпрос на конкретна преценка.
Статичната индикация в случая може да се квалифицира като безумие от гледна точка на реализацията, а освен това режимът на работа светодиодите е по-неблагоприятен - по-малко ще излъчват при една и съща средна консумация.
_________________ Две плюс две е приблизително равно на четири. Факт!
|
| Сря Юли 07, 2010 6:48 pm |
|
 |
|
Cino
Ранг: Новодошъл
Регистриран на: Чет Окт 02, 2008 10:24 pm Мнения: 105
|
този 18f1320 не е много подходящ за такива цели. 4к думи flash,256ram.
Пробвай да го пуснеш на вътрешния кварц с PLL, ще стане 40MHz, което са 10 инструкции за микросекунда.
На "megaAVR" за изпращане на един бит трябват около 10 инструкции, за същата постановка - hc595.
ако и на пик-а са толкова.за милисекунда ще можеш да пратиш 100-120 байта.
което за шрифт 7х5+1 са 130-160 символа. или 6-8 реда по 20 символа на ред.
Това е при честота 100Hz, ако намалиш малко честотата, е възможно да обработиш 10 реда.
Но трябва да се направи компромис с изгледа , дали ще мига, и ще е неприятно за окото.
Трябва и текста който ще пишеш да е готов и да не правиш никакви обработки по него,иначе няма да стигне времето.
|
| Сря Юли 07, 2010 7:42 pm |
|
 |
|
head_up
Ранг: Форумен бог
Регистриран на: Нед Юни 01, 2008 9:54 pm Мнения: 1503 Местоположение: Пловдив
|
абе що просто не се оттървеш от тоя ПИК и не сложиш нещо дето му стигат силите да управлява повече от шепа светодиоди, ами се занимаваш с тая загубена кауза
П.П. айде пак се подпали чергата... 
|
| Сря Юли 07, 2010 8:06 pm |
|
 |
|
sv_shady
Ранг: Популярен
Регистриран на: Сря Окт 11, 2006 8:19 pm Мнения: 373 Местоположение: София/Edinburgh, UK
|
Защо не пробваш с по един контролер да речем за ред, а един главен да им раздава текста за визуализация.
|
| Сря Юли 07, 2010 11:44 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
За изпращане на един БАЙТ ще според мен ще отидат не повече от 15 инструкции, ако се ползва хардуерният SPI и ако нещата се направят разумно. Като се има предвид, че за цялата индикация ще трябват грубо 200 байта, то за 3000 цикъла ( 0.3 ms за PIC18 / 40MHz ), излиза, че времето ще стигне няколко пъти.
Друг въпрос е, че контролер с 256 байта RAM не е най-доброто за това приложение. А иначе задачката си е проста, дори и без контролер става, един ПИК ще свърши работа!
|
| Чет Юли 08, 2010 9:21 am |
|
 |
|
mkrumov
Ранг: Минаващ
Регистриран на: Пон Мар 01, 2010 7:12 pm Мнения: 65
|
 re
Снощи не можах да пробвам, но днес ще опитам следното:
1. Ще видя какво ще стане ако пусна контролера на вътрешния кварц с PLL
2. Ако не стане, ще взема някои с повече ram.
Като се позамислих, май статична индикация ше бъде голямо безумие
Ще пиша до къде сам го докарал
|
| Чет Юли 08, 2010 10:44 am |
|
 |
|
woody
Ранг: Форумен бог
Регистриран на: Вто Юли 31, 2007 2:55 pm Мнения: 1792 Местоположение: София
|
|
| Чет Юли 08, 2010 1:17 pm |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
Знам че звучи тъпо, но мислил ли си да го направиш статично? т.е. за всеки диод да има извод от HC595. 74HC595 са ти 20 лв на 100 бр. (смд) в комет. на теб ти трябат около 90 за 20 символен ред. Навръзваш ги сериино, пускаш им данните сериино, щракваш latch-a или както е означен ST_CP и целия ред се опреснява от веднъж. Няма мигане, няма забавяне. И даже можеш да сложиш по-малък пик - някоя 18-ка с 18 или 28 крачета. 10 MHz с PLL не е лошо предложение. А ако искаш малко отгоре серията с USB 4550 и подобни могат да правят 48 МХз от какъв да е кристал (в известни граници). Примерно може да сложиш 4 МХз и да имаш 12 MIPS.
Единствено платката ще ти е доста кофти и ще трябва да налепиш по 90 ИС на ред  - ще е добре да ти ги набодат на машина.
|
| Чет Юли 08, 2010 7:24 pm |
|
 |
|
optron
Ранг: Ориентиран
Регистриран на: Чет Ное 20, 2008 1:49 pm Мнения: 276 Местоположение: Бургас
|
Този 595 поема до към 29 мегахерца, тоест, можеш да му предаваш със 29 мегабита в секунда. Цялото ти табло, според описанието ти възлиза на 7000 пиксела (това ако е със символи 5х7, с 5х8 стават 8000). Ако приемем, че цялото е направено с 595-ци, то ще можеш да опресняваш съдържанието малко над 4000 пъти в секунда. Тоест, напълно достатъчно.
Пиковете имат една много полезна инструкция - NOP. Какви чудеса прави тя, ще се шашнете. Искам да кажа, че те могат да реализират изключително малки закъснения и по този начин да реализират големи скорости на трансфер на данни - сравними с до половината от цикловата честота. Това обаче става само при софтуерна имплементация на комуникацията.
На мен ми идват на ума два варианта:
Единият е ако ще пишеш само текст по таблото със фиксирана символна таблица. Тогава може на всеки символ или група символи да сложиш нескъп контролер (примерно ПИК 12-та серия), който да се грижи локално за опресняването на индикацията. Централният контролер (твоят 1320) само му праща кодовете на символите, а локалните контролери знаят кодовата таблица и я изобразяват всеки в своя си блок.
Другият е, ако ще изобразяваш графика. Той има два подварианта:
Единият е преработка на варианта с текстовото табло, но вместо кодовете на символите централният контролер да праща графичните фрагменти, за които всеки локален контролер отговаря. Тук обаче ще ти трябва доста рам и за твоето табло тази на 1320 няма да стигне. Трябва ти някой с повече рам или да си сложиш външна рам.
Другият е централният контролер да прави цялото опресняване. Аз ти предлагам следната реализация на този вариант:
Най-бързо опресняване става с паралелна комуникация - големите видеоекрани със светодиодни панели са направени с модули и между тях комуникацията е именно паралелна. Значи запазваш си 595-те, като тях ги ползваш за обхождане на редовете. Колоните ги зареждаш в синхронни паралелни регистри, като зареждането става по паралелна 8-битова шина, командвана от единия порт на процесора. Един по един обхождаш тактовите пинове на паралелните регисти (може отново с масив от серийни, т.е. 595-ци или по друг начин) и те поемат данните от паралелната шина. Не е нужно серийните регистри всеки път да ги пълниш от край до край - просто зареждаш една 1-ца в началото и при всеки такт тя се мести на следващия бит. По същия начин ще обхождаш редовете с другия масив от 595-ци - вертикалния. По този начин са направени старите ЛСД-панели за лаптопите, а нищо чудно и съвременните да са така (за тях не знам, не съм разглобявал). Само че при тях се ползват чипове със серийни регистри с по 80-100 крака.
И тъй - пълниш паралелните регистри, зареждаш 1-ца в началото на вертикалния масив (този за вертикалната развивка) и първият ред ти лъсва. Опресняването на всеки ред ще ти коства около 8 пъти по-малко цикли време, защото зареждаш наведнъж по 8 бита с една инструкция (по-точно две). За следващия ред само буташ един такт на вертикалния масив, 1-цата се премества на следващия ред и наново пълниш паралелните регистри. Лъсва ти втория ред. И така нататък.
Ще трябва да внимаваш да не заредиш повече от една 1-ца във вертикалния масив, защото ще ти се провали вертикалната развивка, а и може да се претовари хоризонталния масив, тъй като на едно краче от него ще се паднат вече по няколко светодиода.
Въпреки всичко, бих те посъветвал да реализираш някой от първите два варианта - с локалните контролери. Така ще получиш модулна конструкция и бързо и лесно ще можеш после да строиш табла с различни размери, а освен това в рамките на всеки модул ще имаш достатъчно бързо опресняване и то със сравнително голям коефициент на запълване на пикселите. Последното от своя страна ще прави изображението на таблото по-ярко.
Успех!
_________________ Digitally yours: Optron
|
| Нед Юли 11, 2010 11:39 am |
|
 |
|
optron
Ранг: Ориентиран
Регистриран на: Чет Ное 20, 2008 1:49 pm Мнения: 276 Местоположение: Бургас
|
Ето ти вариант за готов локален контролер - MAX6952 или MAX6953. Двете схеми реализират до четири символа 5х7 (по спецификация могат и до два символа, с двуцветни панели), като имат вградена символна таблица със 104 символа и освен това можеш да програмираш и свои си 24 символа. Последното дава възможност и за изобразяване на графика, като просто наливаш графичните фрагменти като потребителски символи.
И двете схеми имат вградени драйвери за светодиодните панели, като имат възможност за регулиране на яркостта или гасене на панела. Могат и да се тестват панелите - по команда светват всички светодиоди.
Двете схеми са напълно еднакви функционално, разликата е в протокола за комуникация с тях - едната е по I2C, другата е по SPI.
Прочети за тези схеми, мисля че ще ти свършат добра работа.
А я ми кажи, това табло от компютър ли ще се управлява или от специализирано устройство?
_________________ Digitally yours: Optron
|
| Нед Юли 11, 2010 12:02 pm |
|
 |
|
mkrumov
Ранг: Минаващ
Регистриран на: Пон Мар 01, 2010 7:12 pm Мнения: 65
|
 re
Здравейте всички,
ето до къде докарах - с вътрешния кварц с PLL - пълна буза, pic-a се държи неконтролируемо, може аз да сам в грешка някъде, но не става
За pic с повече рам ще изчакам малко, в момента правя друг вариант, подобно натова което е описал optron
Взех няколко 4017 и ги ползвам вместо 595, на всеки такт с тях управлявам по 1 колона, редовете от тази колона управлявам паралелно, през portb ( това за тестове )
Така скоростта се вдинга доста, нямам проблем с показване на 15 символа, няма изобщо мигане от опресняване, при това с 4MHz кварц, днес ще сложа един 8MHz и ще тествам с 20 символа
optron, гледах ги и аз тези готови контролери, но идеята ми е да не показвам само текст, а и графика за в бъдеще (версия 2)
optron, таблото ще се управлява през сериен порт, имам в предвид че ще напиша някаква програмка с която да се подава текста за съответния ред и таблото да го показва
Предполагам че тогава ще имам проблеми с скоростта, но мисля когато се обслужва RS-a, таблото да е загасено, да не се показват глубости
За сега толкова
|
| Пон Юли 12, 2010 6:08 pm |
|
 |
|
kasparov
Ранг: Почетен член
Регистриран на: Сря Апр 05, 2006 9:52 pm Мнения: 877 Местоположение: Разград
|
 Re: re
Вътрешен кварц няма  има вътрешен генератор който можеш да си пуснеш до 8 мХц (само) .
PLL има само само с външен кварц в HSPLL мод.
|
| Пон Юли 12, 2010 8:31 pm |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
Ако не си включил PLL-а, пробвай да го включиш - HSPLL режим както спомена kasparov. Можеш да опиташ направо с 10 MHz (макс. без клокване) + PLL = 40MHz или 10 мил. инструкции в сек. това е 10 пъти повече от 4 МХз. Ама нямаш шанс да докараш 10 реда с 1 пик щом казваш че 1 става с мъка (освен ако наистина си пропуснал да включиш PLL).
|
| Пон Юли 12, 2010 9:04 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
А бе младеж, я постни какво си сътворил! Изобщо не ми изглежда сериозно да не можеш да клатиш 1 ред без да мига, та дори и на 4 MHz да работиш.
Ама дай и малко словесно описание как си си огранизирал нещата, нямам намерение да ти правя ревърс инженеринг, та да позная какво си мислил да направиш.
|
| Пон Юли 12, 2010 10:06 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 9 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|