Отговори на тема  [ 44 мнения ]  Отиди на страница Предишна  1, 2, 3
Странен проблем с LCD и PIC18F45K22 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: Странен проблем с LCD и PIC18F45K22
npelov написа:

Никой не каза ще има ли проблем ако меря с АЦП-то 4.2 волта при захранващо напрежение >=4.8 волта и опорен източник 4.096 волта. Дават абсолютните максимуми на крачетата спрямо Vdd, а не спрямо опорния източник и не би трябвало да има проблем, но аз все пак да си питам...

проблем може да няма, но въпросът е за какво ти е напрежението само при разредена батерия....

Има просто решение :
батерия - R - drain - (bss138) - source - R - gnd
гейта го вързваш към ресета или към 5в или го управляваш. Важното е да е с 1.5-2в над сорса. Съпротивлението може да е 1М, но при фърчащ монтаж по-добре 100К. Сложи един кондензатор да не ти бяга меренето (пико до 1nf).
Смятането надявам се няма да те затрудни - делител на 2 ;-)

така решаваш и проблема с диапазона и проблема с откачането (когато не си захранен гейта е нула и транзисторът е запушен)


Вто Окт 23, 2012 10:37 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение Re: Странен проблем с LCD и PIC18F45K22
Не, бе, не аз да смятам. Контролера трябва да смята ако иска да покаже батерията на колко волта е. Досадно си е, при условие че това ще е машинка за всичко и трябва да върши още една камара неща. Математиката наистина не ми е силната страна, но такива прости сметки не ме мързи да правя.

Дата сетъп времето го споменах по-рано - по спецификация трябва да е 60-80нс в зависимост от дисплея. Аз оставям поне 2-3 инструкции време... най-малкото виждаш че clockE ми е функция - всеки call e 2 цикъла ако няма други C-специфични бози (стек и т.н.) 2 цикъла по 62.5 нс напълно удовлетворяват дата-сетъп времето. Първо с времето се борих. Даже изключих PLL веднъж - това увеличи времената 4 пъти. Не помогна. Проблема е в напрежението в изключено съпротивление. Не знам какви паразитни кондензатори зарежда и защо по дяволите влияе след като цели 30 ms изходите са в някакакво положение (0 или 1, т.е. не са висок импеданс) и каквото се е заредило отдавна се е разредило.

Какво ще рече "глич" и какво друго освен разхлабен кабел може да го причини?

Ето дисасемблиран листинг:


Код:
53:                  LCD_DATA_PORT = c;
  0224    0EFE     MOVLW 0xfe
  0226    50DB     MOVF 0xfdb, W, ACCESS
  0228    6E8C     MOVWF 0xf8c, ACCESS
54:                  clockE();
  022A    DFEE     RCALL 0x208


и функцията за клок(дори не съм се усетил че ползвам nop2, което е 2 цикъла):


Код:
33:                void clockE(){
34:                  //Nop();
35:                  Eon;
  0208    8A8B     BSF 0xf8b, 0x5, ACCESS
36:                  Nop2();//
  020A    D000     BRA 0x20c
37:                  Nop2();
  020C    D000     BRA 0x20e
38:                  Nop2();
  020E    D000     BRA 0x210
39:                  Nop2();
  0210    D000     BRA 0x212
40:                  Nop2();// 4x0.62.5ns = 250 ns
  0212    D000     BRA 0x214
41:               
42:                  Eoff;
  0214    9A8B     BCF 0xf8b, 0x5, ACCESS
43:               
44:                }



Обаче като че ли дата сетъп времето наистина може да оплеска нещата ако има нещо слабо по кабелите. Не е много далече от спецификацията. 60нс ->125нс. ще пробвам да увелича времето . тоя коментиания nop изглежда за това е бил там. Само че ще сложа повечко - 4-5

Едит:

има едно време за което не съм помислил. Трябва от вдигането на R/W и R/S до предния фронт на E да има 40нс. Не че това не е времето от едната сет инструкция до другата, но ако кабелите оказват влияние може да искам да го вдигна поне 2-3 пъти... Много по-лесно е капацитет на кабела да прецака 60 нс време отколкото 250...

_________________
PIC SPBRG values calculator


Вто Окт 23, 2012 11:51 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение Re: Странен проблем с LCD и PIC18F45K22
Добре де, нямаш ли умножение в тоя контролер та да стане лесно сметката?

Да кажем, че имаш 8 бита ADC - за да го умалиш N пъти го умножаваш по 256/N и от
така полученото 16 бита произведение взимаш горния байт, колко ще го озориш
процесора с това. Ако е повече от 8 бита операцията я правиш с 16 бита умножение,
и това е нищо. А ако нямаш умножение не е лошо упражнение да понапишеш едно :D :D
(отдаавна не съм го правил, дори деление има може би 10 години откак не съм писал - май
за всеки процесор досега ми се е налагало да го пиша освен за 68k (на power трябваше
да емулирам 64/32 бита делението, което 68k има та дори и там ме огря а ми е
омразно занимание открай време :D :D ).

Кажи ако се окажат setup времената някъде, любопитно ми е какво е станало.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Сря Окт 24, 2012 12:46 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Сеп 15, 2009 10:44 am
Мнения: 1034
Мнение Re: Странен проблем с LCD и PIC18F45K22
npelov написа:
...
Все повече се убеждавам, че вероятно инициализацията ти е крива. Ако тайминга не беше наред, щеше да имаш ядове с всички команди, не само с броя на редовете. Като махнеш напрежението от пиновете и неговата си инициализация сработи, нещата явно се получават.
Пейстни целия код, дето има общо с дисплея, че с хвърляне на боб не става.


Сря Окт 24, 2012 9:34 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение Re: Странен проблем с LCD и PIC18F45K22
В defs. са дефинициите на __delay_xx. В toolboxv2.c е __init (вика се служебно от С-то. Delay дефинициите работят за 64MHz. В ram.asm ще са ми глобалните променливи. В lcd_drv.c ми е кода за дисплея. Малко е изцапан кода, но така е като се опитваш да подкараш нещо, което не върви както трябва


Прикачени файлове:
toolbox-v2.zip [6.7 KiB]
223 пъти

_________________
PIC SPBRG values calculator
Сря Окт 24, 2012 9:56 am
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение Re: Странен проблем с LCD и PIC18F45K22
tgi написа:
Добре де, нямаш ли умножение в тоя контролер та да стане лесно сметката?


Имам. Сравнително лесно е да се умножи 16 бита. Правил съм го, но не си заслужава. Писал съм и собствено умножение. Даже самото С си върши мръсната работа. Но понякога (накрая разбираш) не си е заслужава мъките или се събира прекалено много излишен код/процесорно време. Вече нямам хъс да правя излишни неща. Ако ще правя нещо - деля на 2 с две големи съпротивления и един опамп, слагам още един shift left и спирам да го мисля.

_________________
PIC SPBRG values calculator


Сря Окт 24, 2012 10:05 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Сеп 15, 2009 10:44 am
Мнения: 1034
Мнение Re: Странен проблем с LCD и PIC18F45K22
npelov написа:
В defs. са дефинициите на __delay_xx. В toolboxv2.c е __init (вика се служебно от С-то. Delay дефинициите работят за 64MHz. В ram.asm ще са ми глобалните променливи. В lcd_drv.c ми е кода за дисплея. Малко е изцапан кода, но така е като се опитваш да подкараш нещо, което не върви както трябва

Да си напишеш инициализацията като хората. След закъснението от 4.5 мс две команди и едно закъснение от 100 мкс си ги прескочил. Командите може да са еднакви, ама не значи, че не трябва да ги подаваш.

Отделно, в lcdWriteChar имаш
Код:
  RWoff;
  RSon;

Не знам как очакваш да стане, като двата сигнала си ги сложил на един и същи пин, ама да не разводняваме темата с офтопици, ти за проблем с извеждането не казваш.


Сря Окт 24, 2012 10:56 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение Re: Странен проблем с LCD и PIC18F45K22
Цитат:
Не знам как очакваш да стане, като двата сигнала си ги сложил на един и същи пин,


R/W трябва единствено за busy bit. Не го ползвам. Ина дефиниция която казва че R/W не се ползва, но съм пропуснал да сложа #if на самия RWoff. Busy изисква допълнително краче за R/W.

Относно инициализацията - имаш право. Нея съм я правил за друг дисплей, по друга спецификация. Няма да навреди ако сложа тези няколко допълнителни команди.

_________________
PIC SPBRG values calculator


Сря Окт 24, 2012 12:10 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение Re: Странен проблем с LCD и PIC18F45K22
преправих инит-а на:
Код:
  lcdWriteCmd(0x30); //function set
  __delay_ms_big(4.5);
  lcdWriteCmd(0x3C); //function set
  __delay_ms(0.7);
  lcdWriteCmd(0x3C); //function set
  lcdWriteCmd(0x3C); //function set

  lcdWriteCmd(0x08); // display off
  lcdClear();
  lcdWriteCmd(0x06); // entry mode set


  lcdWriteCmd(0x0C); // display on



Това което ми е в повече е display on ... не знам защо решават, че след инициализацията дисплея трябва да е изключен ...

Ще трябва малко запояване за да го тествам.

_________________
PIC SPBRG values calculator


Сря Окт 24, 2012 12:18 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение Re: Странен проблем с LCD и PIC18F45K22
:( това ще ме научи да гледам по-добре спецификациите. Работи безотказно, без значение от меренето на батерията. Сигурно не успява да сетне 8 бит режим и решава че ще е 4 бит.малко е тъпо function set да трябва да се подава 4 пъти, но щом са го направили така значи има нужда.
мерси за помощта.

П.П. tgi, не са сетъп времената. Явно кабела не е достатъчно дълъг и разтоянието между жиците е достатъчно голямо за да окаже влияние паразитния капацитет в/у времената. Дори ако инструкциите са една след друга пак ще има 62.5нс, а всъщност има един call между тях, което добавя още 125.
Може да сложа още малко закъснение преди предния фронт на Е за всеки случай.

_________________
PIC SPBRG values calculator


Сря Окт 24, 2012 12:24 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Сеп 15, 2009 10:44 am
Мнения: 1034
Мнение Re: Странен проблем с LCD и PIC18F45K22
npelov написа:
Относно инициализацията - имаш право. Нея съм я правил за друг дисплей, по друга спецификация.
Това в твоя дейташийт е стандартната процедура за HD44780, съмнявам се някой да тръгне да се отклонява от правилото.
По-скоро и на другия дисплей не е работела. Напрежението се е вдигало както трябва и чипът се е инициализирал без помощ отвън. А повторната инициализация, понеже не е била довършена докрай, е оставала без ефект.


Сря Окт 24, 2012 2:30 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Пет Яну 22, 2010 5:46 pm
Мнения: 680
Мнение Re: Странен проблем с LCD и PIC18F45K22
Цитат:
Това в твоя дейташийт е стандартната процедура за HD44780, съмнявам се някой да тръгне да се отклонява от правилото.

Може и така да е. Диспеите от комет обаче са с KS0066U (или еквивалент) и се различават по инициализация:
http://store.comet.bg/download-file.php?id=469

Както казах инициализацията на HD44780 с няколко допълнителни function set няма да попречи на KS0066U. Всъщност сега като се замисля май не съм пробвал с кометския дисплей. Само с тези от ebay, които явно са с HD44780-подобен чип.

_________________
PIC SPBRG values calculator


Сря Окт 24, 2012 3:29 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Сеп 15, 2009 10:44 am
Мнения: 1034
Мнение Re: Странен проблем с LCD и PIC18F45K22
Вярно. Щеше да е интересно да пробваш и с него, да разберем дали са пипнали контролера. Може и да са, гледам 4-битовия интерфейс въобще не го споменават.


Сря Окт 24, 2012 3:42 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Сеп 15, 2009 10:44 am
Мнения: 1034
Мнение Re: Странен проблем с LCD и PIC18F45K22
Всъщност, има голяма вероятност да става въпрос за калпава документация. Гледам, че кометския KS0066U е с контролер "SED1278 or equivalent". В дейташийта на SED1278 инициализацията си е същата като на HD44780. Китайска му работа.


Сря Окт 24, 2012 4:01 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 44 мнения ]  Отиди на страница Предишна  1, 2, 3

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни