Форум РадиоКот https://radiokot.ru/forum/ |
|
Перезагрузка микроконтроллера https://radiokot.ru/forum/viewtopic.php?f=58&t=161929 |
Страница 1 из 2 |
Автор: | titr [ Пт мар 29, 2019 07:05:35 ] |
Заголовок сообщения: | Перезагрузка микроконтроллера |
Радиокоты, прошу помощи. На выходе должен увидеть прямоугольные бесконечные импульсы длительностью в один цикл, а с помощью логического анализатора вижу, что кристалл перезапускается каждые 470,35 мкс. Не могу понять почему?. А так же вижу, при запуске высокий уровень на обоих выходах. Хотя вроде все делаю чтобы опустить в ноль выходы. Код: ;*******************************************************************************
#include <p18lf2620.inc> ;******************************************************************************* ; TODO INSERT INCLUDE CODE HERE ;******************************************************************************* ; PIC18LF2620 Configuration Bit Settings ; CONFIG1H CONFIG OSC = HSPLL ; Oscillator Selection bits (HS oscillator, PLL enabled (Clock Frequency = 4 x FOSC1)) CONFIG FCMEN = OFF ; Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled) CONFIG IESO = OFF ; Internal/External Oscillator Switchover bit (Oscillator Switchover mode disabled) ; CONFIG2L CONFIG PWRT = OFF ; Power-up Timer Enable bit (PWRT disabled) CONFIG BOREN = OFF ; Brown-out Reset Enable bits (Brown-out Reset disabled in hardware and software) CONFIG BORV = 2 ; Brown Out Reset Voltage bits () ; CONFIG2H ; CONFIG WDT = ON ; Watchdog Timer Enable bit (WDT enabled) CONFIG WDT = OFF ; Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit)) CONFIG WDTPS = 32768 ; Watchdog Timer Postscale Select bits (1:32768) ; CONFIG3H CONFIG CCP2MX = PORTC ; CCP2 MUX bit (CCP2 input/output is multiplexed with RC1) CONFIG PBADEN = OFF ; PORTB A/D Enable bit (PORTB<4:0> pins are configured as digital I/O on Reset) CONFIG LPT1OSC = OFF ; Low-Power Timer1 Oscillator Enable bit (Timer1 configured for higher power operation) CONFIG MCLRE = ON ; MCLR Pin Enable bit (MCLR pin enabled; RE3 input pin disabled) ; CONFIG4L CONFIG STVREN = OFF ; Stack Full/Underflow Reset Enable bit (Stack full/underflow will not cause Reset) CONFIG LVP = OFF ; Single-Supply ICSP Enable bit (Single-Supply ICSP disabled) CONFIG XINST = OFF ; Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled (Legacy mode)) ; CONFIG5L CONFIG CP0 = OFF ; Code Protection bit (Block 0 (000800-003FFFh) not code-protected) CONFIG CP1 = OFF ; Code Protection bit (Block 1 (004000-007FFFh) not code-protected) CONFIG CP2 = OFF ; Code Protection bit (Block 2 (008000-00BFFFh) not code-protected) CONFIG CP3 = OFF ; Code Protection bit (Block 3 (00C000-00FFFFh) not code-protected) ; CONFIG5H CONFIG CPB = OFF ; Boot Block Code Protection bit (Boot block (000000-0007FFh) not code-protected) CONFIG CPD = OFF ; Data EEPROM Code Protection bit (Data EEPROM not code-protected) ; CONFIG6L CONFIG WRT0 = OFF ; Write Protection bit (Block 0 (000800-003FFFh) not write-protected) CONFIG WRT1 = OFF ; Write Protection bit (Block 1 (004000-007FFFh) not write-protected) CONFIG WRT2 = OFF ; Write Protection bit (Block 2 (008000-00BFFFh) not write-protected) CONFIG WRT3 = OFF ; Write Protection bit (Block 3 (00C000-00FFFFh) not write-protected) ; CONFIG6H CONFIG WRTC = OFF ; Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write-protected) CONFIG WRTB = OFF ; Boot Block Write Protection bit (Boot Block (000000-0007FFh) not write-protected) CONFIG WRTD = OFF ; Data EEPROM Write Protection bit (Data EEPROM not write-protected) ; CONFIG7L CONFIG EBTR0 = OFF ; Table Read Protection bit (Block 0 (000800-003FFFh) not protected from table reads executed in other blocks) CONFIG EBTR1 = OFF ; Table Read Protection bit (Block 1 (004000-007FFFh) not protected from table reads executed in other blocks) CONFIG EBTR2 = OFF ; Table Read Protection bit (Block 2 (008000-00BFFFh) not protected from table reads executed in other blocks) CONFIG EBTR3 = OFF ; Table Read Protection bit (Block 3 (00C000-00FFFFh) not protected from table reads executed in other blocks) ; CONFIG7H CONFIG EBTRB = OFF ; Boot Block Table Read Protection bit (Boot Block (000000-0007FFh) not protected from table reads executed in other blocks) ;========================= ; ПЕРЕМЕННЫЕ ;========================= CBLOCK H'10' temp temp_code count ;СЧЕТЧИК БАЙТ n ;СЧЕТЧИК ПОЛУБАЙТ nnn ;ВСЯКОЕ red green blue ;ЗНАЧЕНЯ БАЙТА ЦВЕТА box_zigzag ;ЗНАЧЕНИЯ ТАБЛИЦЫ RGB word_hi ; СТАРШИЙ ПОЛНЫЙ КОД ЦВЕТА word_hi_hi ; СТАРШИЙ ПОЛУБАЙТ КОДА ЦВЕТА word_hi_low ; МЛАДШИЙ ПОЛУБАЙТ КОДА ЦВЕТА word_low ; МЛАДШИЙ ПОЛНЫЙ КОД ЦВЕТА word_low_hi ; СТАРШИЙ ПОЛУБАЙТ КОДА ЦВЕТА word_low_low ; МЛАДШИЙ ПОЛУБАЙТ КОДА ЦВЕТА Reg_1 Reg_2 Reg_3 Reg_4 ;РЕГИСТРЫ ДЛЯ ЗАДЕРЖЕК ENDC CBLOCK H'100' edat0 ;:256 БАЙТ (100-1FF) ENDC CBLOCK 0X200 data_RGB ;16*16*2=512 512*3=1536 байт (200-7FF) ENDC ;========================= ; ДАННЫЕ EEPROM "РИСУНОК" ;========================= DATAEE ORG 0XF00000 DE H'2B',H'BB',H'BB',H'00',H'55',H'88',H'00',H'11' DE "titr" ; Place 't' 'i' 't' 'r' ;========================= ; КОНСТАНТЫ ;========================= #DEFINE LED_GREEN LATA,0 ;ЗЕЛЁНЫЙ СВЕТОДИОД НА ПЛАТЕ #DEFINE ZIGZAG LATB,0 ;ВЫХОД НА LED ЛЕНТУ BSR_SFR EQU .1 ;ВЫБОР БАНКА SFR COUNT_CONST EQU .255 ;256 БАЙТ EDAT0... MASK EQU B'00001111' ;МАСКА ДЛЯ ВЫДЕЛЕНИЯ МЛАДШЕГО ПОЛУБАЙТА ;========================= ; Reset Vectored ;******************************************************************************* ORG 0x0000 ; predocessored redeset vectored GOTO START ; greeno to blueegreeninningreen of predogreenredam ;******************************************************************************* ; TODO Step #4 - Interedredupt Seredvice Routines ;******************************************************************************* ; ИНИЦИАЛИЗАЦИЯ ;******************************************************************************* ORG H'20' START MOVLW BSR_SFR ;ВЫБИРАЕМ БАНК SFR MOVWF BSR CLRF PORTA CLRF LATA MOVLW B'00001111' MOVWF ADCON1 ;ЦИФРОВЫЕ I/O MOVLW B'00000111' MOVWF CMCON ;OFF COMPARATORS MOVLW B'00000000' ;1,2,3,4,6,7-ВХОДЫ, 0,5-ВЫХОДЫ MOVWF TRISA ; CLRF PORTB CLRF LATB MOVLW B'00001111' MOVWF ADCON1 ;ЦИФРОВЫЕ I/O ПОВТОРНО ЗАЧЕМ? MOVLW B'00011110' ;ПРОВЕРИТЬ SS=1 MOVWF TRISB ;ВЫХОДЫ 0,5,6,7; ВХОДЫ 1,2,3,4 КНОПКИ УПРАВЛЕНИЯ CLRF PORTC CLRF LATC MOVLW B'00000000' ; MOVWF TRISC ;ПОКА ВСЕ ВЫХОДЫ BSF SSPSTAT, SMP ;ОПРОС ВХОДА В КОНЦЕ ПЕРИОДА ВЫВОДА ДАННЫХ BSF SSPSTAT, CKE ;ПО ПЕРЕДНЕМУ ФРОНТУ MOVLW B'00000000' ;ВЕДУЩ. РЕЖИМ SPI, Fosc /4-ЧАСТОТА, ПАСС. УР. СИГН. НИЗКИЙ УР MOVWF SSPCON1 ;MSSP ВЫКЛЮЧЕН ПОКА (5) MOVLW B'01110100' ;10 mhz MOVWF OSCCON ;ВНЕШНИЙ КВАРЦ, 10 МГЦ (PLL*4=40 МГЦ) MOVLW B'00000000' MOVWF OSCTUNE MOVWF INTCON ; BCF WDTCON,SWDTEN ;WDT ТАЙМЕР ОТКЛЮЧЕН CLRF LATA CLRF LATB CLRF LATC ;========================= ; РИСУНОК ;========================= ORG 0x100 ; УТОЧНИТЬ АДРЕС (100 - 1FF)ПАМЯТЬ ПРОГРАММ PICTURE db H'17',H'11',H'11',H'11',H'44',H'44',H'44',H'64',H'11',H'11',H'11',H'11',H'44',H'44',H'44',H'64' db H'11',H'11',H'11',H'11',H'46',H'66',H'66',H'66',H'11',H'11',H'11',H'11',H'46',H'66',H'66',H'66' db H'11',H'11',H'11',H'11',H'46',H'44',H'44',H'64',H'11',H'11',H'11',H'11',H'46',H'44',H'44',H'64' db H'11',H'11',H'11',H'11',H'44',H'44',H'44',H'44',H'11',H'11',H'11',H'11',H'44',H'44',H'44',H'44' db H'11',H'11',H'11',H'11',H'46',H'66',H'66',H'46',H'11',H'11',H'11',H'11',H'46',H'66',H'66',H'46' db H'44',H'44',H'44',H'44',H'14',H'44',H'44',H'44',H'44',H'44',H'44',H'44',H'14',H'44',H'44',H'44' db H'44',H'44',H'44',H'44',H'14',H'44',H'44',H'64',H'44',H'44',H'44',H'44',H'14',H'44',H'44',H'64' db H'44',H'44',H'44',H'44',H'16',H'66',H'66',H'66',H'44',H'44',H'44',H'44',H'16',H'66',H'66',H'66' db H'44',H'44',H'44',H'44',H'16',H'44',H'44',H'64',H'44',H'44',H'44',H'44',H'16',H'44',H'44',H'64' db H'44',H'44',H'44',H'44',H'14',H'44',H'44',H'44',H'44',H'44',H'44',H'44',H'14',H'44',H'44',H'44' db H'66',H'66',H'66',H'66',H'46',H'66',H'66',H'66',H'66',H'66',H'66',H'66',H'46',H'66',H'66',H'66' db H'66',H'66',H'66',H'66',H'44',H'44',H'44',H'64',H'66',H'66',H'66',H'66',H'44',H'44',H'44',H'64' db H'66',H'66',H'66',H'66',H'44',H'44',H'44',H'46',H'66',H'66',H'66',H'66',H'44',H'44',H'44',H'46' db H'66',H'66',H'66',H'66',H'44',H'44',H'44',H'64',H'66',H'66',H'66',H'66',H'44',H'44',H'44',H'64' db H'66',H'66',H'66',H'66',H'41',H'14',H'44',H'44',H'66',H'66',H'66',H'66',H'41',H'14',H'44',H'44' db H'66',H'66',H'66',H'66',H'41',H'14',H'44',H'44',H'66',H'66',H'66',H'66',H'41',H'14',H'44',H'74' ;---------- ; НАЧАЛО: МОРГАЛКА СВЕТИОДИДОМ ;---------- NNN BSF LED_GREEN ;ВКЛЮЧАЕМ ЗЕЛЁНЫЙ СВЕТОДИОД BCF LED_GREEN ;OFF LED BRA NNN ;========================= ДАЛЕЕ КОД ПРОГРАММЫ... END |
Автор: | КРАМ [ Пт мар 29, 2019 17:05:58 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
Шозабред? Что за куски кода ничем не связанные? Вы когда нибудь программировали на АСМе? У Вас есть начало, которое обрывается в никуда, а потом таблица с адреса 0х100. После таблицы цикл, в который программа непонятно как должна попасть... ЗЫ. В догон. Цикл будет выводить импульсы, но не меандр. Длительность импульса будет в 1 машцикл, а период 4 машцикла. Итого, частота будет в 4 раза ниже частоты работы ядра. |
Автор: | titr [ Пт мар 29, 2019 17:27:26 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
При всей корявости кода, что мешает что бы были выполнены эти инструкции? NNN BSF LED_GREEN ;ВКЛЮЧАЕМ ЗЕЛЁНЫЙ СВЕТОДИОД BCF LED_GREEN ;OFF LED BRA NNN |
Автор: | КРАМ [ Пт мар 29, 2019 17:28:23 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
Покажите путь по которому код попадет на эти инструкции. |
Автор: | FIREBALL_1984 [ Пт мар 29, 2019 18:05:41 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
у вас бардак в коде. таблицу данных надо переместить вниз. после : "ДАЛЕЕ КОД ПРОГРАММЫ..." кстати. если это код мерцания светодиода то этого вы не увидите. без задержки. после каждой команды. |
Автор: | titr [ Пт мар 29, 2019 18:56:17 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
Спасибо за помощь! Данные с выходов смотрю цифровым анализатором, поэтому вижу всё. Хочу 18 пиком светодиодную ленту на диодах WS2812B запустить. |
Автор: | SSkot [ Пт мар 29, 2019 19:21:40 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
PIC 18 + asm это жесть. Ваш код естественно смотреть не буду, есть подозрение что счётчик команд доходит до конца кода и возвращается на 0 адрес, т.е. снова происходит инициализация контроллера. |
Автор: | FIREBALL_1984 [ Пт мар 29, 2019 20:00:12 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
Спасибо за помощь! Данные с выходов смотрю цифровым анализатором, поэтому вижу всё. Хочу 18 пиком светодиодную ленту на диодах WS2812B запустить. откуда код? лучше удалить всю эту абракадабру и начать с чистого листа. так как вводит в заблуждение. и лучше всего использовать родной листинг. файл INC. у каждого проца есть такой. там уже даны названия для все регистров. от самого микрочипа. и конфиг тоже. а вообще вот этот документ хорош для начинания для пик18. но чисто как сравниловка если туго с английским. мне в свое время очень помог. скачай. http://www.microchip.ru/files/d-sheets- ... manual.pdf Добавлено after 3 minutes 19 seconds: PIC 18 + asm это жесть. Ваш код естественно смотреть не буду, есть подозрение что счётчик команд доходит до конца кода и возвращается на 0 адрес, т.е. снова происходит инициализация контроллера. да нее. ничего сложного нет. сам пишу на АСМ 18. там отличии от 16 го почти нет. кроме нескольких команд. а вот на пик24 уже да. значительно сложнее. |
Автор: | titr [ Пт мар 29, 2019 20:03:53 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
Такой документ у меня уже есть. Что не так с моим кодом? Ведь его нету!!! Кроме таблицы! |
Автор: | FIREBALL_1984 [ Пт мар 29, 2019 20:11:24 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
Такой документ у меня уже есть. Что не так с моим кодом? Ведь его нету!!! Кроме таблицы! в этом коде и нет ничего. кроме инита и вводных данных. самой программы нету. ну или ты забыл часть кода. судя по тексту. выкладывай оригинал программы. и вообще. ты сам хотел научиться кодить или просто нужны эффекты? на самом деле в сети куча готовых решении по этой ленте. на ардуино? не проще ли собрать на ней.? |
Автор: | КРАМ [ Сб мар 30, 2019 05:00:52 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
Такой документ у меня уже есть. Что не так с моим кодом? Ведь его нету!!! Кроме таблицы! Вы, очевидно, даже терминологией не владеете. Код МК - это и есть программа, включая таблицы. Код начинает исполняться с нулевого адреса и далее следует строго по исполняемым инструкциям. Ваш код начинается, инициализирует контроллер и далее упирается в таблицу. Таблица - это не инструкции. Таблица не может быть адекватно исполнена. Таблица - это массив констант, которые могут быть просто считаны соответствующими инструкциями кода. У Вас исполнение попадает на таблицу, где байтные константы попарно будут интерпретироваться МК как инструкции. И куда их занесет - Бог ведает. Можно канешна разобрать и самому куда занесет, вручную дизассемблируя пары констант. Но ЗАЧЕМ? Вам уже сказали, что цикл нужно перенести НАД ТАБЛИЦЕЙ. Вот и все. Добавлено after 5 minutes 1 second: ничего сложного нет. сам пишу на АСМ 18. там отличии от 16 го почти нет. кроме нескольких команд. а вот на пик24 уже да. значительно сложнее. ПИК24 значительно ПРОЩЕ. По крайней мере для реализации простых сущностей. Он позволяет писать на АСМе как на Си. |
Автор: | titr [ Сб мар 30, 2019 17:01:01 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
titr писал(а): в этом коде и нет ничего. кроме инита и вводных данных. самой программы нету. ну или ты забыл часть кода. судя по тексту. выкладывай оригинал программы. и вообще. ты сам хотел научиться кодить или просто нужны эффекты? на самом деле в сети куча готовых решении по этой ленте. на ардуино? не проще ли собрать на ней.? Да, код я не выкладывал, перенес таблицу и заработало. В ардуино не хочу принципиально. А решений на PIC18 со скоростью в 40 мгц думаю нету вообще. Ну мне так кажется. |
Автор: | КРАМ [ Сб мар 30, 2019 17:19:15 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
решений на PIC18 со скоростью в 40 мгц думаю нету вообще. Естественно нет. Это семейство не для быстрых расчетов. 8-битные платформы - это неспешное вычислительное приложение к своей периферии. Тут дело даже не в МИПСах/мегагерцах. Разрядность данных, система команд и архитектура не приспособлены для быстрых расчетов даже средней (16 бит) точности. У Микрочипа на 40 МИПСах работает dsPIC33F/PIC24H, на 70 МИПСах - dsPIC33E/PIC24E, на 90 МИПСах - dsPIC33C/PIC24C. Выше - это уже 32-разрядные MIPS 4K (PIC32MZ) и ARM Cortex M4 (SAMx7). |
Автор: | BOB51 [ Вт май 14, 2019 11:34:13 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
... Хочу 18 пиком светодиодную ленту на диодах WS2812B запустить. Для нормальной работы с WS2812 простым "дрыголапом" требуется весьма шустрый МК. Да и циклы высчитывать надо. С аттини45 вопрос попроще рещается и то... Приходится поизворачиваться, чтобы длительную стабильность интервалов удерживать. |
Автор: | КРАМ [ Сб май 25, 2019 07:03:21 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
А зачем делать таблицу такой широкой? Параметры редактора можно настроить. Но из соображений читабельности нет никакого смысла делать таблицу шире экрана, а паче шире печатной страницы. |
Автор: | abc [ Сб май 25, 2019 11:26:16 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
titr если на ПИКах и на асме вам удобней, то как вариант : https://pikabu.ru/story/nemnogo_razgona_5307131 |
Автор: | sdn_ [ Вс май 26, 2019 22:36:59 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
titr писал(а): в этом коде и нет ничего. кроме инита и вводных данных. самой программы нету. ну или ты забыл часть кода. судя по тексту. выкладывай оригинал программы. и вообще. ты сам хотел научиться кодить или просто нужны эффекты? на самом деле в сети куча готовых решении по этой ленте. на ардуино? не проще ли собрать на ней.? Да, код я не выкладывал, перенес таблицу и заработало. В ардуино не хочу принципиально. А решений на PIC18 со скоростью в 40 мгц думаю нету вообще. Ну мне так кажется. 32,48,64 МГц. Выбирайте семейство K42. 32 МГц HFINTOSC вам хватит за глаза для пиксельных светодиодов. |
Автор: | КРАМ [ Пн май 27, 2019 07:43:02 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
32,48,64 МГц. FcyВопрос касался системной частоты, а не частоты осциллятора. 64МГц - это только 16МГц для Fcy. |
Автор: | sdn_ [ Пн май 27, 2019 17:38:23 ] |
Заголовок сообщения: | Re: Перезагрузка микроконтроллера |
Очень сомневаюсь. |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |