реклама на сайте
подробности

 
 
> SED1335,PIC18F4550 и LCD320x240, разбираем по косточкам модуль SED1335.c
andreichk
сообщение Jan 25 2008, 21:00
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Привет народ.Вот решил я слепить себе нечто из указанных в теме компонентов.Нарисовал и изготовил макетку, красиво всё распаял и написал из надёрганных в сети кусков маленькую програмку для управления ЖКИ. Вначале, после нудного изучения даташитов никак не мог инициализировать ЖКИ, но потом разобрался что к чему и наконец он начал подавать признаки жизни и засветился.
Компилятор, который я пользую - CCS, имеет в своём составе файл SED1335.C , но как я не пытался приспособить его, так и не смог.Порывшись в сети,я нашёл другой файл с таким же названием, но вроде бы не для ПИКов, а для чего-то другого.Однако , слегка подшаманив его, я смог встроить его в прогу и он заставил таки выдавать на экран символы в текстовом режиме(даже с возможностью размещения в заданое место) и переключаться в графический режим.
И на этом всё и закончилось.
Все попытки нарисовать линию или круг или просто точку,несмотря на множество примеров, я так и не смог. Позаимствовав из старого файла процедуру

void glcd_pixel(int16 x, int16 y, int1 color)
{
int8 data;
int16 addr;
// Calculate the byte address containing the pixel
addr = GLCD_GRAPHICS_ADDR + (GLCD_WIDTH/8 * y + x/8);
// Read the byte of data at the address
data = getData(addr);
// Turn the pixel on or off
if(color == ON)
bit_set(data, 7 - x%8);
else
bit_clear(data, 7 - x%8);
// Write the new data byte to display memory
setData(addr, data);
}


я попробовал нарисовать на экране пиксель, но он вроде как нарисовался но разместился не в тех координатах, которые я указывал.Как я понимаю, за размещение отвечает строка
//GLCD_GRAPHICS_ADDR- нач. адрес- 1200, GLCD_WIDTH- кол во символов в строке- 320
addr = GLCD_GRAPHICS_ADDR + (GLCD_WIDTH/8 * y + x/8);
Может кто из вас раскомментирует эту странную формулу и подправит её, если она неправильная.

Сообщение отредактировал andreichk - Jan 25 2008, 21:03


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
andreichk
сообщение Mar 27 2008, 17:34
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



на АЦП подаётся фиксированная частота оцифровки 80 МГц. С него 8бит идут на ФИФО, кот. в свою очередь тактируется частотой от 80 МГц до 625 кГц,посредством запрограммированной ПЛИСки, то есть это и есть переключатель развёртки и соответственно показания от 0.4 мкс до 51.2 мкс(за что мы с вами не так давно бились) оба канала имеют независимый переключатель, то есть одновременно можно наблюдать и 20 кГц и 2 МГц. На последнем фото импульсы подаются на нижний канал(0.4 мкс) .Но нормальный их вид как вы правильно заметили , это 1 период на весь экран.А тут вдруг такая мелкота и не пойму -откуда она берётся и почему потом пропадает? Причём частота оцифровки никоим образом не менялась(ну разве только какая-нить гармоника пролазит) такое вообще возможно?
На всякий случай вот тут схема.Кстати, что теперь будем делать с EEPROM? С картинками , как я понимаю, вопрос закрыт wink.gif


--------------------
Go to the top of the page
 
+Quote Post
Ilya_A
сообщение Mar 29 2008, 05:45
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 1-12-05
Из: Иркутск
Пользователь №: 11 630



Цитата(andreichk @ Mar 28 2008, 01:34) *
А тут вдруг такая мелкота и не пойму -откуда она берётся и почему потом пропадает?

А раньше (до изменения программы) такое случалось?

Просто я сомтрю у вас FIFO буферы то всего по 512 байт. (я думал несколько Кб). Следовательно скорость считывания при отрисовке должна быть не меньше чем 1/2 от скорости заполнения данными АЦП.
Если она будет меньше, то на высоких частотах оцифровки возможна отрисовка неправильной картины (из-за перезаписи правильных значений новыми данными)

Чтобы этого избежать придется переписать процедуру curve_A() следующим образом:
Код
unsigned int8 Buf[256];
//--------------- собственно кривая ---------------------------
void curve_A(unsigned int8 y_pos_A){
   unsigned int8 x, y , yy;
   for(x=0;x<254;x++){
      Output_bit(READ_FIFO_A ,0); //PIN_C2. разрешить
      Buf[x]=input_b(); //чтение порта В
      Output_bit(READ_FIFO_A ,1); //PIN_C2.запретить
   }
   for(x=1;x<255;x++){
      yy = y;
      adcA = (Buf(x-1) > 200) ? 200 : Buf(x-1); //ограничитель до выбранной величины
      y = (255 - adcA) + y_pos_A; // разворот на 180° по вертикали и сдвиг
      if (yy>y) front(x,yy,y); // Рисуем фронт A
      if (yy<y) spad(x,yy,y); // Рисуем спад A
      pixel(x,y,1); // Рисуем вершину A
   }
}

Может быть это поможет....

Цитата(andreichk @ Mar 28 2008, 01:34) *
Кстати, что теперь будем делать с EEPROM? С картинками , как я понимаю, вопрос закрыт wink.gif

Кстати на счет EEPROM: не вижу подтягивающих резисторов на линиях SCL, SDA
Go to the top of the page
 
+Quote Post
andreichk
сообщение Mar 29 2008, 09:27
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Цитата
А раньше (до изменения программы) такое случалось?

я думаю,что да, просто я не обращал внимания


adcA = (Buf(x-1) > 200) ? 200 : Buf(x-1); //ограничитель до выбранной величины
тут очепятка ? должно быть так-Buf[х-1]
Цитата
Может быть это поможет....

пока не понятно, но мне кажется , что ничего не изменилось

Цитата
Кстати на счет EEPROM: не вижу подтягивающих резисторов на линиях SCL, SDA

Упс, забыл нарисовать, на самом деле они есть и даже припаяны

Цитата
Просто я сомтрю у вас FIFO буферы то всего по 512 байт. (я думал несколько Кб). Следовательно скорость считывания при отрисовке должна быть не меньше чем 1/2 от скорости заполнения данными АЦП.
Если она будет меньше, то на высоких частотах оцифровки возможна отрисовка неправильной картины (из-за перезаписи правильных значений новыми данными)

тут мне не понятно- скорость считывания ФИФО устанавливает ПИК и она постоянная и всегда меньше
частоты АЦП, как быть?

кстати насчёт ФИФО, имеет ли смысл применить более ёмкую, напр.IDT7204 или даже IDT7205?

а может у меня вот это имеет место быть?

Сообщение отредактировал andreichk - Mar 29 2008, 08:30


--------------------
Go to the top of the page
 
+Quote Post
Ilya_A
сообщение Mar 29 2008, 12:10
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 1-12-05
Из: Иркутск
Пользователь №: 11 630



Цитата(andreichk @ Mar 29 2008, 17:27) *
adcA = (Buf(x-1) > 200) ? 200 : Buf(x-1); //ограничитель до выбранной величины
тут очепятка ? должно быть так-Buf[х-1]

Естественно!

Цитата(andreichk @ Mar 29 2008, 17:27) *
тут мне не понятно- скорость считывания ФИФО устанавливает ПИК и она постоянная и всегда меньше
частоты АЦП, как быть?
кстати насчёт ФИФО, имеет ли смысл применить более ёмкую, напр.IDT7204 или даже IDT7205?

Тут, помоему чем больше тем лучше. Ведь даже на 10 MIPS вы сможете обеспечить максимальную скорость считывания порядка единиц Мгц. А записывать данные вы можете до 80 Мгц!!!!

Цитата(andreichk @ Mar 29 2008, 17:27) *
а может у меня вот это имеет место быть?

Чтобы это проверить, нужно замерить реальную скорость выгребания данных из FIFO буфера (можно по по количеству ассемблерных инструкций после компиляции программы) И сравнить со скоростью записи в буфер
Go to the top of the page
 
+Quote Post
andreichk
сообщение Mar 30 2008, 09:34
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Цитата(Илья @ Mar 29 2008, 13:10) *
Чтобы это проверить, нужно замерить реальную скорость выгребания данных из FIFO буфера (можно по по количеству ассемблерных инструкций после компиляции программы) И сравнить со скоростью записи в буфер

Ок, а с какого места нужно начинать считать эти инструкции?


--------------------
Go to the top of the page
 
+Quote Post
Ilya_A
сообщение Mar 30 2008, 10:06
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 1-12-05
Из: Иркутск
Пользователь №: 11 630



Цитата(andreichk @ Mar 30 2008, 17:34) *
Ок, а с какого места нужно начинать считать эти инструкции?

Незнаю, как в CCS, но в MPLABe это делается очень просто, открываем Dissasebly listing, находим строчку начала цикла:
Код
   for(x=0;x<254;x++){
      Output_bit(READ_FIFO_A ,0); //PIN_C2. разрешить
      Buf[x]=input_b(); //чтение порта В
      Output_bit(READ_FIFO_A ,1); //PIN_C2.запретить
   }

И считаем сколько команд ушло на этот цикл wink.gif

Если в CCS такого нет, то может он хотябы отобразить текст откомпилированной программы? И если в нем возможна симуляция, то поставить BreakPoint на начало цикла, а затем посмотреть на какой строчке программа остановиться в асме. далее выполнять программу по шагам ассемблерных инструкций, пока не вернетесь снова на точку останова. Таким образом можно подсчитать количестов асм. инструкций.

Ну или в крайнем случае можно померять клоки осциллографом.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- andreichk   SED1335,PIC18F4550 и LCD320x240   Jan 25 2008, 21:00
- - andreichk   Ура !!! Заработало !!! Под...   Jan 27 2008, 04:06
|- - arizona   Цитата(andreichk @ Jan 27 2008, 07:06) Те...   Jan 28 2008, 07:38
|- - andreichk   Цитата(arizona @ Jan 28 2008, 08:38) посм...   Jan 28 2008, 18:26
- - andreichk   Сегодня закончил оформление внешнего вида. Нарисов...   Jan 29 2008, 22:32
|- - DL36   Цитата(andreichk @ Jan 30 2008, 02:32) Се...   Feb 1 2008, 10:15
- - andreichk   Хочу попробовать перенести все картинки в последов...   Jan 31 2008, 19:18
- - andreichk   Слепил сегодня процедурку рисования кривых.Теперь ...   Feb 4 2008, 23:07
|- - FDA   Вот готовый видеоконтроллер для управления ЖКИ на ...   Feb 7 2008, 13:29
- - andreichk   вы мне его уже предлагали, только за деньги я и са...   Feb 7 2008, 16:40
- - Itch   А почему у вас экран малинового цвета, это пленка ...   Feb 7 2008, 21:40
- - andreichk   да цвет любой можно сотворить- плёночку цветную по...   Feb 8 2008, 09:31
- - Itch   китайские сайты нормально читаются через http://ba...   Feb 8 2008, 18:29
- - andreichk   Выяснил причину по которой HEX-файл неполностью за...   Feb 10 2008, 17:41
- - andreichk   частота 88 Гц, амплитуда 2.15 вольт   Feb 11 2008, 22:39
- - andreichk   Попытки записи массива типа const byte mS_uS[] ...   Feb 17 2008, 22:31
- - andreichk   да, не густо тут помошников.....   Feb 20 2008, 17:50
- - andreichk   ещё одно фото для истории. двухканальный вариант,п...   Feb 20 2008, 23:20
- - andreichk   проблема рисования синусоиды половинками решена до...   Feb 23 2008, 15:32
- - andreichk   Ура !!! Удалось засинхронизироать кар...   Feb 25 2008, 22:22
|- - Илья   Поздравляю, картинка, конечно красивая, но меня во...   Feb 26 2008, 07:52
|- - andreichk   Цитата(Илья @ Feb 26 2008, 08:52) Поздрав...   Feb 26 2008, 17:54
- - andreichk   У меня сегодня день рождения. Спасибо всем за позд...   Feb 27 2008, 14:29
- - andreichk   сегодня попробовал подать на вход меандр от кварце...   Feb 27 2008, 20:02
- - andreichk   Прошу помощи по теме Дело такое, надо мне от шифра...   Mar 2 2008, 13:44
|- - Илья   Насколько я понимаю нужно дождаться перехода из ни...   Mar 3 2008, 03:27
- - andreichk   Спасибо, я попробую как вы советуете и отпишусь   Mar 3 2008, 14:34
- - andreichk   попробовал предложенный код.Он работает,только не ...   Mar 3 2008, 15:57
- - andreichk   код работает с небольшой доделкой и понижением час...   Mar 3 2008, 21:44
- - andreichk   вот такое у меня ещё пожелание(чувствую, что без п...   Mar 4 2008, 18:56
|- - Илья   Извиняюсь за задержку с ответом - праздники, даже ...   Mar 11 2008, 02:50
|- - Transon   Это самая лучшая разработка одного человека какую ...   Mar 12 2008, 13:18
- - andreichk   Спасибо всем ответившим и помогающим.Не надо извин...   Mar 13 2008, 19:02
- - andreichk   Кодunsigned char XX; // переменная которая будет и...   Mar 13 2008, 20:26
|- - Илья   Цитата(andreichk @ Mar 14 2008, 04:26) Ко...   Mar 14 2008, 10:41
- - andreichk   дело в том , что момент отжатия невозможно установ...   Mar 15 2008, 10:12
|- - Илья   Цитата(andreichk @ Mar 15 2008, 18:12) де...   Mar 15 2008, 12:14
- - andreichk   перекидывать ножки на порт РВ как-то не очень хоче...   Mar 15 2008, 12:50
|- - Илья   Так... насколько я понял компилятор у вас CCS - ...   Mar 15 2008, 17:18
- - andreichk   частота 40 МГц. ни один из трёх таймеров не задейс...   Mar 15 2008, 18:53
|- - Илья   Хорошо. Теперь приступим: Возьмем за базу TMR0, у ...   Mar 16 2008, 07:27
- - andreichk   компилятор не хочет это признавать TMR0IF=0;// Очи...   Mar 16 2008, 11:15
|- - Илья   Цитата(andreichk @ Mar 16 2008, 19:15) ко...   Mar 16 2008, 12:55
- - andreichk   пробую так его прописать set_timer0(0); // TMR0IF=...   Mar 16 2008, 14:49
- - Илья   Ну ладно, удачи, все способы полезны - главное, чт...   Mar 16 2008, 16:00
- - andreichk   вот такой вид приняла означенная процедура опроса...   Mar 16 2008, 20:14
- - andreichk   Чего-то ни одной умной мысли не лезет в голову, на...   Mar 19 2008, 20:46
|- - Илья   Цитата(andreichk @ Mar 20 2008, 04:46) Че...   Mar 20 2008, 03:56
- - andreichk   if( xx >= 255 ) xx = xx - 255; //приводим к int...   Mar 20 2008, 18:36
- - andreichk   кстати вопрос имею- чем два раза IF лучше одного S...   Mar 20 2008, 19:53
|- - Илья   Цитатаif( xx >= 255 ) xx = xx - 255; //приводим...   Mar 21 2008, 03:07
- - andreichk   вначале буфер был размером в 512 кб и всё как раз ...   Mar 21 2008, 11:25
|- - Илья   Цитата(andreichk @ Mar 21 2008, 19:25) ОК...   Mar 21 2008, 12:23
- - andreichk   не вопрос- научусь в Гугль видео выкладывать- обяз...   Mar 21 2008, 13:55
|- - Илья   Цитата(andreichk @ Mar 21 2008, 21:55) Ту...   Mar 21 2008, 15:50
- - andreichk   я про такое даже не слышал, поэтому просто нарисов...   Mar 22 2008, 00:59
|- - Илья   Цитата(andreichk @ Mar 22 2008, 08:59) я ...   Mar 22 2008, 01:58
- - andreichk   линии, прямоугольники и кружки рисовать умеем, а ш...   Mar 22 2008, 08:27
|- - Илья   Цитаталинии, прямоугольники и кружки рисовать умее...   Mar 22 2008, 13:53
|- - andreichk   Цитата(Илья @ Mar 22 2008, 14:53) Я сам л...   Mar 22 2008, 14:31
|- - Илья   Вот, собственно, у меня получилась такая процедурк...   Mar 23 2008, 04:32
- - andreichk   прямоугольник и видеосигнал   Mar 22 2008, 10:32
- - Шпиндель   Посмотрел с интересом, спасибо! Через время.. ...   Mar 22 2008, 18:27
|- - andreichk   Цитата(Шпиндель @ Mar 22 2008, 19:27) Пос...   Mar 23 2008, 13:41
|- - Илья   Цитата(andreichk @ Mar 23 2008, 21:41) Ок...   Mar 23 2008, 14:59
- - alexsl   to andreichk. Добрый день. Уменя вопрос по схемоте...   Mar 22 2008, 20:23
- - andreichk   X-256, Y-239   Mar 23 2008, 15:13
|- - Илья   Цитата(andreichk @ Mar 23 2008, 23:13) X-...   Mar 24 2008, 05:52
|- - andreichk   c небольшой доработкой,приданием ей ещё бОльшей ун...   Mar 24 2008, 12:24
|- - Илья   Цитата(andreichk @ Mar 24 2008, 20:24) c ...   Mar 24 2008, 14:33
- - andreichk   а скажите мне, преобразование Фурье к осциллографу...   Mar 24 2008, 17:05
|- - Илья   Цитата(andreichk @ Mar 25 2008, 01:05) а ...   Mar 25 2008, 05:58
- - andreichk   искал что-нибудь по теме почитать- наткнулся на эт...   Mar 24 2008, 19:19
- - andreichk   Ок , оставим пока товарища Фурье в сторонке покури...   Mar 25 2008, 17:09
|- - Илья   Цитата(andreichk @ Mar 26 2008, 01:09) Чт...   Mar 26 2008, 02:34
|- - andreichk   есть такое дело Цитата.................... //----...   Mar 30 2008, 10:10
|- - Илья   Цитата(andreichk @ Mar 30 2008, 18:10) ес...   Mar 30 2008, 11:00
|- - andreichk   Цитата(Илья @ Mar 30 2008, 12:00) Да, это...   Mar 30 2008, 11:05
|- - Илья   Цитата(andreichk @ Mar 30 2008, 19:05) за...   Mar 30 2008, 11:26
- - andreichk   ну это понятно, что перепишется.А как это связано ...   Mar 30 2008, 11:39
|- - Илья   Цитата(andreichk @ Mar 30 2008, 19:39) ну...   Mar 30 2008, 11:58
|- - andreichk   ЦитатаА при какой частоте тактирования FIFO они во...   Mar 30 2008, 13:03
|- - Илья   Цитата(andreichk @ Mar 30 2008, 21:03) LA...   Mar 30 2008, 13:16
- - andreichk   можно написать так #asm BSF F8B.2 //L...   Mar 30 2008, 13:38
|- - Илья   Цитата(andreichk @ Mar 30 2008, 21:38) мо...   Mar 30 2008, 15:02
- - andreichk   написал так, ошибок нет,но экран тухнет через пару...   Mar 30 2008, 15:19
|- - Илья   Цитата(andreichk @ Mar 30 2008, 23:19) на...   Mar 30 2008, 15:31
- - andreichk   в самом прямом смысле тухнет.Пропадает не только л...   Mar 30 2008, 15:33
|- - Илья   Цитата(andreichk @ Mar 30 2008, 23:33) в ...   Mar 30 2008, 15:50
- - andreichk   вот этой *ptr++=input_b(); //чтение порта В ну тог...   Mar 30 2008, 15:59
|- - Илья   Цитата(andreichk @ Mar 30 2008, 23:59) во...   Mar 30 2008, 16:04
- - andreichk   Цитата.................... //#####################...   Mar 30 2008, 16:27
|- - Илья   Цитата(andreichk @ Mar 31 2008, 00:27) вс...   Apr 1 2008, 11:07
- - andreichk   Илья, я уже запутался, что куда вписывать, сделайт...   Apr 1 2008, 11:44
5 страниц V   1 2 3 > » 


Closed TopicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 01:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01539 секунд с 7
ELECTRONIX ©2004-2016