Рейтинг
7.54
голосов: 11
avatar

PIC

О блоге

Описание ядра, периферии и фич контроллеров семейства PIC от Microchip.

Администраторы (1)

Модераторы (0)

Модераторов здесь не замечено

Читатели (62)

XANDER WildCat kest Vga Alprad mzw Reverb kvm ZiB labor XuMuK neiver Leopoldius LuckyLex akaChewy bdpcvit Lifelover fehtr Flash Electron

Все читатели блога

Подключение экрана ILI9341 к pic24

PIC
Недавно приехал ко мне этот девайс, подключил к pic24fj64gb004, нарисовал линии, круги, как то все уныло, захотел выводить изображение, зря что ли покупал, тем более что контроллер позволяет работать с USB флешкой, выкопал микрочиповское демо, поправил под свой контроллер, дописал прошивку, подпаял экран, воткнул флешку и все заработало, описание экрана можно без проблем найти в сети так что вдаваться в дебри что там и как вдаваться не буду, шина работает на частоте 16 мгц, все это конечно скоростями не поражает, все таки 16мгц и отсутствие DMA скорости не прибавляют :-).
видео процесса вывода
youtu.be/ezIEmxJ4txk
вследствии недостаточного размера памяти и быстродействия контроллера, картинки переконвертированы в формат RGB565 и записаны на флешку, программа читает содержимое файлов и выводит на экран,
в main

 while(1)
    {
      USBTasks();

        if(USBHostMSDSCSIMediaDetect())
          {
           deviceAttached = TRUE;
           LED0_IO=1;
           
          if(FSInit())
            {
             if(TickGet() - t >= TICK_SECOND*2)
                {
                  t = TickGet();
                  i++;
                }
             switch(i){
                case 1:TFT_FillScreen(BRIGHTGREEN);
                     break;
                case 2:TFT_FillScreen(BRIGHTBLUE);
                     break;
                case 3:TFT_FillScreen(BRIGHTCYAN);
                     break;
                case 4: TFT_FillScreen(MAGENTA);;
                     break;
                case 5: TFT_FillScreen(YELLOW);
                     break;
                case 6:  TFT_FillScreen(BLACK);;
                     break;
                case 7:TFT_FillScreen(CYAN);;
                     break;
                case 8:TFT_FillScreen(DARKGRAY);;
                     break;
                case 9:TFT_FillScreen(BRIGHTRED);
                     break;
                case 10:
                    
                    myFile = FSfopen("1.raw","r");
                    do{
                      charsRead = FSfread((WORD *)myData,2,1024,myFile);
                      WriteDisplayPicture(myData,charsRead);
                       }
                       while(charsRead==1024);
                      FSfclose(myFile);
                      

                   break;
                  case 11:


                      myFile = FSfopen("2.raw","r");
                    do{
                      charsRead = FSfread((WORD *)myData,2,1024,myFile);
                      WriteDisplayPicture(myData,charsRead);
                       }
                       while(charsRead==1024);
                      FSfclose(myFile);

                   break;
                   case 12:
                    
                        myFile = FSfopen("3.raw","r");
                    do{
                      charsRead = FSfread((WORD *)myData,2,1024,myFile);
                      WriteDisplayPicture(myData,charsRead);
                       }
                       while(charsRead==1024);
                      FSfclose(myFile);

                   break;
                   case 13:
                     
                        myFile = FSfopen("4.raw","r");
                    do{
                      charsRead = FSfread((WORD *)myData,2,1024,myFile);
                      WriteDisplayPicture(myData,charsRead);
                       }
                       while(charsRead==1024);
                      FSfclose(myFile);

                   break;
                   case 14:
                     
                        myFile = FSfopen("5.raw","r");
                    do{
                      charsRead = FSfread((WORD *)myData,2,1024,myFile);
                      WriteDisplayPicture(myData,charsRead);
                       }
                       while(charsRead==1024);
                      FSfclose(myFile);

                   break;
                   case 15:
                    
                   myFile = FSfopen("6.raw","r");
                    do{
                      charsRead = FSfread((WORD *)myData,2,1024,myFile);
                      WriteDisplayPicture(myData,charsRead);
                       }
                       while(charsRead==1024);
                      FSfclose(myFile);

                   break;
                  case 16:
                    
                      myFile = FSfopen("7.raw","r");
                    do{
                      charsRead = FSfread((WORD *)myData,2,1024,myFile);
                      WriteDisplayPicture(myData,charsRead);
                       }
                       while(charsRead==1024);
                      FSfclose(myFile);

                   break;
                   case 17:
                   
                        myFile = FSfopen("8.raw","r");
                    do{
                      charsRead = FSfread((WORD *)myData,2,1024,myFile);
                      WriteDisplayPicture(myData,charsRead);
                       }
                       while(charsRead==1024);
                      FSfclose(myFile);

                   break;
                   case 18:
                  
                        myFile = FSfopen("9.raw","r");
                    do{
                      charsRead = FSfread((WORD *)myData,2,1024,myFile);
                      WriteDisplayPicture(myData,charsRead);
                       }
                       while(charsRead==1024);
                      FSfclose(myFile);

                   break;
                   case 19:
                  
                        myFile = FSfopen("10.raw","r");
                    do{
                      charsRead = FSfread((WORD *)myData,2,1024,myFile);
                      WriteDisplayPicture(myData,charsRead);
                       }
                       while(charsRead==1024);
                      FSfclose(myFile);

                   break;
                   case 20:
                    
                        myFile = FSfopen("11.raw","r");
                    do{
                      charsRead = FSfread((WORD *)myData,2,1024,myFile);
                      WriteDisplayPicture(myData,charsRead);
                       }
                       while(charsRead==1024);
                      FSfclose(myFile);
                   break;
                   case 21:
                   
                        myFile = FSfopen("1.raw","r");
                    do{
                      charsRead = FSfread((WORD *)myData,2,1024,myFile);
                      WriteDisplayPicture(myData,charsRead);
                       }
                       while(charsRead==1024);
                      FSfclose(myFile);
                      i=1;
                   break;
                 }

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

Лабораторные работы на МК PIC или версия "БЫСТРОГО СТАРТА"

PIC
Когда то, давным давно… В далекой галактике....


Читать дальше
  • +8
  • 29 сентября 2014, 15:01
  • ppram5
  • 1

Arriba. Ещё одна IDE.

PIC


На сайте микрочипа появилась IDE Arriba, основанная на Eclipse. Для любителей оригинального Eclipse есть возможность установить Arriba-plugin + Arriba Connect отдельно (некий софт, связывающий GDB и микрочиповские программаторы-отладчики).



Всё бы хорошо, но…
Бесплатная версия поддерживает только PicKit 3 + Simulator. Для обладателей шайб (ICD2, 3) требуется Enterprise Edition по прекрасной цене 495$.

Что можно сказать? Сначала микрочип взяли опен-сурсный gcc и перепилили его в свою серию компиляторов XC и теперь продают за денежку, но и этого оказалось недостаточно. Теперь можно к опен-сурс IDE продавать ПО для работы с их контроллерами. Браво чтоль…

Из плюсов: возможно в скором это ограничится не только прикручиванием к Eclipse, но и к другим IDE, например QtCreator, C::B и т.д.
  • +2
  • 02 сентября 2014, 10:59
  • becopt

PIC32MX конвейер

PIC
В прошлой статье осталась некоторая недосказанность по поводу инструкции «nop» сразу после вызова функции.
Такое поведение связано с особенностью архитектуры MIPS32 — «branch delay slot». Как всё это работает?



Читать дальше

Код запуска (startup) на PIC32

PIC
Продолжаем углубляться в процесс загрузки контроллеров PIC32MX. В этой части будет станет понятно как запускается функция main.


Читать дальше

Линковка и стартовый код в PIC32.

PIC
Транслятор с ассемблера в машинные коды, а значит и наши знания assembler MIPS32, были бы безполезны, без способности превратить код в прошивку микроконтроллера. Эта статья описывает скрипт линковки для 32MX320F128L. Ассемблера не очень много, в основном описываются сами процессы и структура файлов.


Читать дальше

Изучение ассемблера на PIC32: COM, буферизованная запись

PIC
Учимся работать со структурами данных, вложенными функциями. Использование препроцессора языка C совместно с ассемблером. На этот раз микроконтроллер PIC будет выводить «Hello World» через COM порт.


Читать дальше

Изучение ассемблера на PIC32: последовательный порт (COM)

PIC
Передаем один байт с платы Chipkit Uno32 на компьютер через UART. Углубляемся в архитектуру процессоров MIPS32.


Читать дальше

Изучение ассемблера на PIC32: моргаем светодиодом

PIC
Постижение программирования под микроконтроллеры требует, если не навыка работы с ассемблером, то хотя бы понимания ассемблера. Я буду использовать Arduino совместимую плату, чтобы показать, как работать с ассемблером на контроллерах PIC32. Начну, по традиции, с мигающего светодиода, который уже распаян на плате.


Читать дальше

PIC24 CTMU (Сенсорные кнопки)

PIC
Давно я собирался разобраться с работой модуля измерения заряда. Ну вот момент пришел.

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


Читать дальше
  • +2
  • 11 января 2013, 12:07
  • kest