Jump to content

Search the Community

Showing results for tags 'PIC18'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
    • Competition 2019
  • Радиоэлектроника для профессионалов
    • Световые эффекты и LED
    • Роботы и модели на ДУ-управлении
    • Автоматика
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Автомобильная электроника
    • Системы охраны и наблюдения. Личная безопасность
    • Питание
    • Электрика
    • Промышленная электроника
    • Ремонт
    • Металлоискатели
    • Измерительная техника
    • Мастерская радиолюбителя
    • Сотовая связь
    • Спутниковое ТВ
    • КВ и УКВ радиосвязь
    • Жучки
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
  • Товары и услуги
  • Разное
  • Переделки's ATX->ЛБП
  • Переделки's разные темы
  • Киловольты юмора's Юмор в youtube
  • Радиолюбительская доска объявлений exDIY's Надежность и группы продавцов

Blogs

There are no results to display.

There are no results to display.

Marker Groups

  • Пользователи форума

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


ICQ


Skype


Интересы


Город


Сфера радиоэлектроники


Оборудование

Found 7 results

  1. Tulen

    LCD и PIC18

    Здарова, железячники. Собираю клавиатуру из 12-ти кнопок, которую подключаю к пичку (PIC18F25K80). Но про клавиатуру не важно, там все разобрано и код сделал уже. Проблема в том, что сейчас нет времени самому писать библиотеку для работы с LCD дисплеем (через недельку-две я сяду и разберусь), поэтому я ищу готовые библиотеки. Дисплей - LM016L, контроллер - HD44780. Нашел одну библиотеку, добавил в код. Компилятор ругается на выводы строчек и не хочет выводить переменные. Прилагаю код: IDE - MPLAB X v4.05 Компилятор - XC8 бесплатный. Варнинги от компилятора + строчки: PORTC = (data & 0x0F)*16; // newmain.c:46: warning: (373) implicit signed to unsigned conversion PORTC = (data >> 4)*16; // newmain.c:54: warning: (373) implicit signed to unsigned conversion PORTC = (data & 0xF)*16; // newmain.c:57: warning: (373) implicit signed to unsigned conversion WriteByte(addLUT[row] + col); // newmain.c:65: warning: (373) implicit signed to unsigned conversion SetLCDPosition(LCD_Line+1,0); // newmain.c:87: warning: (373) implicit signed to unsigned conversion WriteByte(i); // newmain.c:116: warning: (373) implicit signed to unsigned conversion ShowStr(b); // newmain.c:160: warning: (357) illegal conversion of integer to pointer ShowStr("BAD"); // newmain.c:172: warning: (359) illegal conversion between pointer types
  2. Здарова, инженеры. Не подсобите студню с заданием? Задание, если кому интересно: Я подчитнул некоторую теорию, про индикацию, матричную клавиатуру и её опрос. Но вот возникли след. вопросы/трудности: 1. В случае использования только двух кнопок, целесообразно ли подключать кнопку непосредственно к выводу микроконтроллера? Насколько сильно это упростит решение задачи? 2. Можно ли где-то посмотреть пример реализации таких клавиатур именно на PIC18? (Уж очень у меня не хватает практики по программированию устройств, всегда на уровне любителя работал на крестах и ему подобных языках для решения мелких проблем и забав) 3. Можно ли где-то смоделировать моё творение, т.е. посмотреть работоспособность? (MPLAB, proteus, xlinx) 4. На чем в данном случае рациональнее "кодить" - язык ассемблера или сишка? Есть некоторый алгоритм для обработки дребезка контактов: https://pp.userapi.com/c840123/v840123038/23a0/IjXofwjEmuc.jpg Есть некоторая схемка, которую я в инете откопал: https://pp.userapi.com/c840123/v840123038/23a7/-rD4tgCfvLs.jpg Так же нашел небольшой код на просторах интернета (увы, он для AVR) : Благодарю за каждый пендель в нужном направлении, тема-то хорошая.
  3. Всем Добрый день, Форумчане !!! Всё вот никак не могу понять, как рассчитать время для таймеров в C18 компиляторе. Вот под MicroC - в курсе, а под C18 - ну, вот - никак ! Есть ли где нормальное описание, что за что отвечает ? Всё перерыскал и собрал хоть какой, но рабочий код из кусочков, который нашёл в инете. Камень: PIC18F452 Среда разработки: MPLAB X, Linux. Компилятор C18. Программатор: PICkit3 Кварц на 10 МГц, так как в наличии только 22пкф Конфигурация в файле "config_bits.h": // PIC18F452 Configuration Bit Settings // 'C' source line config statements #include <p18f452.h> // CONFIG1H #pragma config OSC = HS // Oscillator Selection bits (HS oscillator) #pragma config OSCS = OFF // Oscillator System Clock Switch Enable bit (Oscillator system clock switch option is disabled (main oscillator is source)) // CONFIG2L #pragma config PWRT = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config BOR = ON // Brown-out Reset Enable bit (Brown-out Reset enabled) #pragma config BORV = 20 // Brown-out Reset Voltage bits (VBOR set to 2.0V) // CONFIG2H #pragma config WDT = OFF // Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit)) #pragma config WDTPS = 128 // Watchdog Timer Postscale Select bits (1:128) // CONFIG3H #pragma config CCP2MUX = ON // CCP2 Mux bit (CCP2 input/output is multiplexed with RC1) // CONFIG4L #pragma config STVR = ON // Stack Full/Underflow Reset Enable bit (Stack Full/Underflow will cause RESET) #pragma config LVP = OFF // Low Voltage ICSP Enable bit (Low Voltage ICSP disabled) // CONFIG5L #pragma config CP0 = OFF // Code Protection bit (Block 0 (000200-001FFFh) not code protected) #pragma config CP1 = OFF // Code Protection bit (Block 1 (002000-003FFFh) not code protected) #pragma config CP2 = OFF // Code Protection bit (Block 2 (004000-005FFFh) not code protected) #pragma config CP3 = OFF // Code Protection bit (Block 3 (006000-007FFFh) not code protected) // CONFIG5H #pragma config CPB = OFF // Boot Block Code Protection bit (Boot Block (000000-0001FFh) not code protected) #pragma config CPD = OFF // Data EEPROM Code Protection bit (Data EEPROM not code protected) // CONFIG6L #pragma config WRT0 = OFF // Write Protection bit (Block 0 (000200-001FFFh) not write protected) #pragma config WRT1 = OFF // Write Protection bit (Block 1 (002000-003FFFh) not write protected) #pragma config WRT2 = OFF // Write Protection bit (Block 2 (004000-005FFFh) not write protected) #pragma config WRT3 = OFF // Write Protection bit (Block 3 (006000-007FFFh) not write protected) // CONFIG6H #pragma config WRTC = OFF // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write protected) #pragma config WRTB = OFF // Boot Block Write Protection bit (Boot Block (000000-0001FFh) not write protected) #pragma config WRTD = OFF // Data EEPROM Write Protection bit (Data EEPROM not write protected) // CONFIG7L #pragma config EBTR0 = OFF // Table Read Protection bit (Block 0 (000200-001FFFh) not protected from Table Reads executed in other blocks) #pragma config EBTR1 = OFF // Table Read Protection bit (Block 1 (002000-003FFFh) not protected from Table Reads executed in other blocks) #pragma config EBTR2 = OFF // Table Read Protection bit (Block 2 (004000-005FFFh) not protected from Table Reads executed in other blocks) #pragma config EBTR3 = OFF // Table Read Protection bit (Block 3 (006000-007FFFh) not protected from Table Reads executed in other blocks) // CONFIG7H #pragma config EBTRB = OFF // Boot Block Table Read Protection bit (Boot Block (000000-0001FFh) not protected from Table Reads executed in other blocks) #pragma target clock 10_000_000 Сам код: #include "config_bits.h" #include <stdio.h> #include <stdlib.h> #include <timers.h> void high_isr (void); // ?????! #pragma code high_vector = 0x08 void interrupt_at_high_vector(void) { _asm GOTO high_isr _endasm } #pragma interrupt high_isr // Зачем эти приоритеты ?! void high_isr (void) { static int o = 0; if (INTCONbits.TMR0IF){ INTCONbits.TMR0IF = 0; TMR0H = 0x85; // Здесь, я так понял, всё обнуляем ... TMR0L = 0xEE; // И тут // Юзер [b]Alex[/b] попросил меня изменить данный цикл, я потом изменю, но как-то всё разберу окончательно !! Спасибо !!! if ( o == 0 ) { PORTB = 0x0E; o = 1; } else if ( o == 1 ) { PORTB = 0x0D; o = 2; } else if ( o == 2 ) { PORTB = 0x0B; o = 3; } else if ( o == 3 ) { PORTB = 0x07; o = 4; } else if ( o == 4 ) { PORTB = 0x0B; o = 5; } else if ( o == 5 ) { PORTB = 0x0D; o = 0; } } } void main (void) { // Тут просто распределяем выходы, входы и номиналы. TRISA = 0x00; PORTA = 0x00; TRISB = 0xF0; PORTB = 0x0F; TRISC = 0x00; PORTC = 0x00; TRISD = 0x00; PORTD = 0x00; TRISE = 0x00; PORTE = 0x00; ADCON1 = 0x0F; // Тут та самая **па T0CON = 0x85; // Регистр контроля ? Почему 0x85 ? 10000101 - я так понял включает определённые биты в этом регистре. В даташите были прописаны определённые биты, но почему именно эти !? TMR0H = 0x85; // Вписываем что-то в таймер ? 10000101, опять ? TMR0L = 0xEE; // Тут также ? Почему 11101110 ? INTCON = 0x20; // Регистры прерывания ?! INTCON2 = 0x04; // ? RCONbits.IPEN = 1; // Включаем приоритеты ? T0CON = 0x85; // Опять регистр контроля ? TMR0H = 0x85; // Вписываем что-то опять в таймер ? TMR0L = 0xEE; // Тут опять также ? INTCONbits.GIEH = 1; // Активирует все высокие приоритеты ? while (1) { } } Сам код работает стабильно на живой схеме, но точно не в 1 секунду. ------------------------------------------ Собсно, сам вопрос ... ну вот как тут научиться рассчитать хоть 0.00001с или что, за что отвечает. Я рыскал в инете и под каждый компилятор всё по разному ... есть ли где литература или хоть что-то, где можно найти ответы на эти вопросы !!!? Нашёл пару информаций по сайтам, например ... http://ee.cgu.edu.tw...uP102_Timer.pdf, но, блин, может кто нормально объяснить что и зачем ? Я буду очень благодарен ! Спасибо и дай Бог вам счастья и здоровья !!! :thank_you2:
  4. Всем привет ! Столкнулся с проблемой написания кода управления LCD экранчиком под C18 компилятором. В XC8 компиляторе или в MicroC IDE есть те или иные библиотеки для работы с LCD экраном. От отчаяния переписываю код из XC8 под C18, но пока ничего не выходит. В виду ускорения процесса ... прошу помощи. Может кто поделиться ? Всем откликнувшимся, отдельное спасибо !!! Хотя, вот нашёл что-то http://www.romux.com/bootloader/usb-pic18f4550/lcd-hello-world
  5. Всем привет ! Да, вот так вот. Опять светодиод и опять не запускается. В чём косяк ? Питание - от автозарядки для мобилки ( 12В -> 5В ). Среда разработки ( IDE ): MPLAB X v3.35 Linux, компилятор C18. Программатор: PICKit3 Прошивка, по-моему - нормальная. Сконфигурирован - нормально. ( Или нет ? ) Элементы все рабочие. В наличие есть кварц: 4, 8, 10 МГц. Фотка со схемкой - в атаче. Осциллографа под рукой - нет . Исходник прошивки: #include "config_bits.h" #include <stdio.h> #include <stdlib.h> void main (void) { int i = 0; TRISA = 0x00; PORTA = 0x00; TRISB = 0x00; PORTB = 0xFF; TRISC = 0x00; PORTC = 0x00; TRISD = 0x00; PORTD = 0x00; TRISE = 0x00; PORTE = 0x00; while (1) { for ( i = 0; i < 1000000; i++) { PORTB = !PORTB; } } } Файл "config_bits.h": // PIC18F452 Configuration Bit Settings // 'C' source line config statements #include <p18f452.h> // CONFIG1H #pragma config OSC = HS // Oscillator Selection bits (HS oscillator) #pragma config OSCS = OFF // Oscillator System Clock Switch Enable bit (Oscillator system clock switch option is disabled (main oscillator is source)) // CONFIG2L #pragma config PWRT = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config BOR = ON // Brown-out Reset Enable bit (Brown-out Reset enabled) #pragma config BORV = 20 // Brown-out Reset Voltage bits (VBOR set to 2.0V) // CONFIG2H #pragma config WDT = OFF // Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit)) #pragma config WDTPS = 128 // Watchdog Timer Postscale Select bits (1:128) // CONFIG3H #pragma config CCP2MUX = ON // CCP2 Mux bit (CCP2 input/output is multiplexed with RC1) // CONFIG4L #pragma config STVR = ON // Stack Full/Underflow Reset Enable bit (Stack Full/Underflow will cause RESET) #pragma config LVP = OFF // Low Voltage ICSP Enable bit (Low Voltage ICSP disabled) // CONFIG5L #pragma config CP0 = OFF // Code Protection bit (Block 0 (000200-001FFFh) not code protected) #pragma config CP1 = OFF // Code Protection bit (Block 1 (002000-003FFFh) not code protected) #pragma config CP2 = OFF // Code Protection bit (Block 2 (004000-005FFFh) not code protected) #pragma config CP3 = OFF // Code Protection bit (Block 3 (006000-007FFFh) not code protected) // CONFIG5H #pragma config CPB = OFF // Boot Block Code Protection bit (Boot Block (000000-0001FFh) not code protected) #pragma config CPD = OFF // Data EEPROM Code Protection bit (Data EEPROM not code protected) // CONFIG6L #pragma config WRT0 = OFF // Write Protection bit (Block 0 (000200-001FFFh) not write protected) #pragma config WRT1 = OFF // Write Protection bit (Block 1 (002000-003FFFh) not write protected) #pragma config WRT2 = OFF // Write Protection bit (Block 2 (004000-005FFFh) not write protected) #pragma config WRT3 = OFF // Write Protection bit (Block 3 (006000-007FFFh) not write protected) // CONFIG6H #pragma config WRTC = OFF // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write protected) #pragma config WRTB = OFF // Boot Block Write Protection bit (Boot Block (000000-0001FFh) not write protected) #pragma config WRTD = OFF // Data EEPROM Write Protection bit (Data EEPROM not write protected) // CONFIG7L #pragma config EBTR0 = OFF // Table Read Protection bit (Block 0 (000200-001FFFh) not protected from Table Reads executed in other blocks) #pragma config EBTR1 = OFF // Table Read Protection bit (Block 1 (002000-003FFFh) not protected from Table Reads executed in other blocks) #pragma config EBTR2 = OFF // Table Read Protection bit (Block 2 (004000-005FFFh) not protected from Table Reads executed in other blocks) #pragma config EBTR3 = OFF // Table Read Protection bit (Block 3 (006000-007FFFh) not protected from Table Reads executed in other blocks) // CONFIG7H #pragma config EBTRB = OFF // Boot Block Table Read Protection bit (Boot Block (000000-0001FFh) not protected from Table Reads executed in other blocks) Проблема: Он то ли не запускается, то ли ещё что-то. Светодиод на 30 ножке ( PORTBbits.RB0 ( B0 ) ) просто горит. А ведь в программе я прописал, чтоб весь блок B периодически переключался на противоположенное значение, но этого не происходит. Менял значения цикла от 1000000 до 10 - 0 по цельсию. Вопрос, что может быть. Может минус плохой и на монтажных схемках такого рода ( как на фотке ) собирать схемы на МК - плохая идея ? Аля нужно паять ?! Спасибо !!!
  6. Необходимо написать программку, которая должна опросить датчик(подать на него два байта, выждать 2 секунды и подать еще два байта) принять от датчика ответ(два байта), дешифрировать его и подать сигнал на 3-х разрядный семисегментный индикатор, плюс дополнительно иметь возможность записывать в память контроллера некое значение при превышении которого, сигналом двоичного кода, происходит изменение цвета индикатора. Стоимость и подробности заказа обсуждаемы, 89818595615-Владислав, horizont-spb@mail.ru
  7. Добрый день. Помогите, пожалуйста, разобраться в схеме. Студент, 2ой курс, прошу строго не судить. Есть вопросы касательно отдельных элементов схемы. Ниже прикрепил картинку с непонятными зонами. Ссылка на описание на сайте автора: http://ut2hi.qrz.ru/UT2HI/strazh.htm. Насколько я понял, то, что заводится на 3 вывод (канал АЦП), стабилизируется стабилитроном КС133А до 3.3 В (его номинальное напряжение стабилизации) для мониторинга наличия основного питания. 2ой вывод (также канал АЦП) предназначен для контроля уровня напряжения, выдаваемого аккумулятором, и включения в случае чего через реле на 6ом выводе подзарядки через КРЕН. Поправьте, если что не так. А вот роль диодов VD1 и VD3 мне непонятна, зачем VD6 вообще не понимаю. Также c правой стороны схемы цепочка Comm-резистор 100 Ом-(питание)!? Это что?) В описании на сайте автора есть пометка про контроль температуры в месте расположения системы, может это с этим связано? Заранее благодарю за помощь.
×
×
  • Create New...