IMXO Опубликовано 12 февраля, 2019 Поделиться Опубликовано 12 февраля, 2019 1 час назад, Alex сказал: Вам и был сразу же, первым постом, совет по смене компилятора Алекс ну зачем вы так? , хайтек9.60 был одним из самых адекватных компиляторов правда только в стандартной версии , но для задач ТС это вообще не критично, я практически все проекты делал на хайтек9.60стд пока по прошлому году не перешел на вын7 , теперь никак с ним снова не получается подружить мплаб8.92 , мплаб его видит но при попытке подключения к проекту валится с критической ошибкой, пришлось хусым8 ставить, все лучше чем никроз, хотя по сравнению с хайтеком г..вно редкое единственный плюс поддержка новых камней. не верите? вот наглядный пример: элементарный код Скрытый текст /* подпрограмма обработки прерываний */ void interrupt timer_isr(void) { static unsigned char Count; if (TMR1IF) { TMR1IF=0; T1CON=0x00; TMR1L=CONST_TMR1L; TMR1H=CONST_TMR1H; TMR1ON=1; if(Count==99) { Count=0; flag.FL1SEC=1; } else { Count++; } if(Count==0) LED=1; if(Count==20) LED=0; } } // end interrupt timer0_isr void dalay_time(unsigned int timer) { while(timer--) { while(!flag.FL1SEC); flag.FL1SEC=0; } } /** demonstration of various built-in delay mechanisms */ void main(void) { INTCON=0x00; PIE1=0x00; GPIO=0x00; CMCON=0x07; //отключаем компараторы TRISIO=0b00000000; // GP0- ВХОД ANSEL=0; T1CON=0x00; TMR1L=CONST_TMR1L; TMR1H=CONST_TMR1H; TMR1ON=1; PEIE=1; TMR1IE=1; GIE=1; while(1) { NOP(); RELAY_1=1; dalay_time(8); RELAY_1=0; dalay_time(7200); RELAY_2=1; dalay_time(8); RELAY_2=0; dalay_time(7200); NOP(); } // end while(1) } результат дизасма хекса Скрытый текст ; Program Org 0x0000 ; Reset-Vector GOTO LADR_0x000B Org 0x0004 ; Interrupt-Vector MOVWF LRAM_0x5E SWAPF STATUS,W BCF STATUS,RP0 MOVWF LRAM_0x20 MOVF PCLATH,W ; накой хрен сохранение в контексте MOVWF LRAM_0x21 ; если размер камня < 2кб GOTO LADR_0x0042 LADR_0x000B ; накой хрен разрыв прерывания ; функцией main() BSF STATUS,RP0 CALL LADR_0x03FF MOVWF T1CON BCF STATUS,RP0 GOTO LADR_0x0010 ; ЧТО ЭТО ЗА ХРЕНЬ ???? LADR_0x0010 ; ?????? CLRF LRAM_0x24 CLRF LRAM_0x25 CLRF STATUS GOTO LADR_0x0014 ;АНАЛОГИЧНО LADR_0x0014 ; ЧТО ЭТО ЗА ХРЕНЬ ???? CLRF INTCON BSF STATUS,RP0 CLRF PIR1 BCF STATUS,RP0 CLRF GPIO MOVLW 0x07 MOVWF CMCON BSF STATUS,RP0 CLRF GPIO CLRF ADCON0 BCF STATUS,RP0 CLRF T1CON MOVLW 0x04 MOVWF TMR1L MOVLW 0xD9 MOVWF TMR1H BSF T1CON,0 BSF INTCON,PEIE BSF STATUS,RP0 BSF PIR1,0 BSF INTCON,GIE LADR_0x0029 NOP BCF STATUS,RP0 BSF GPIO,0 MOVLW 0x08 MOVWF LRAM_0x22 CLRF LRAM_0x23 CALL LADR_0x0061 BCF GPIO,0 CALL LADR_0x003D CALL LADR_0x0061 BSF GPIO,1 MOVLW 0x08 ; занесение константы MOVWF LRAM_0x22 ; в функцию dalay_time(8) CLRF LRAM_0x23 ; вопросов нет, все логично CALL LADR_0x0061 BCF GPIO,1 CALL LADR_0x003D ; накой этот вызов? CALL LADR_0x0061 NOP GOTO LADR_0x0029 LADR_0x003D ; тупое увеличение MOVLW 0x20 ; времени исполнения MOVWF LRAM_0x22 ; кода с 4 до 8 машюциклов MOVLW 0x1C MOVWF LRAM_0x23 RETURN LADR_0x0042 BTFSS PIR1,0 GOTO LADR_0x005A BCF PIR1,0 CLRF T1CON MOVLW 0x04 MOVWF TMR1L MOVLW 0xD9 MOVWF TMR1H BSF T1CON,0 MOVF LRAM_0x25,W XORLW 0x63 BTFSS STATUS,Z GOTO LADR_0x0052 CLRF LRAM_0x25 BSF LRAM_0x24,7 GOTO LADR_0x0053 LADR_0x0052 INCF LRAM_0x25,F LADR_0x0053 MOVF LRAM_0x25,F BTFSC STATUS,Z BSF GPIO,2 MOVF LRAM_0x25,W XORLW 0x14 BTFSC STATUS,Z BCF GPIO,2 LADR_0x005A MOVF LRAM_0x21,W MOVWF PCLATH SWAPF LRAM_0x20,W MOVWF STATUS SWAPF LRAM_0x5E,F SWAPF LRAM_0x5E,W RETFIE LADR_0x0061 MOVLW 0x01 SUBWF LRAM_0x22,F MOVLW 0x00 BTFSS STATUS,C DECF LRAM_0x23,F SUBWF LRAM_0x23,F INCF LRAM_0x22,W BTFSC STATUS,Z INCF LRAM_0x23,W BTFSC STATUS,Z RETURN LADR_0x006C BTFSS LRAM_0x24,7 GOTO LADR_0x006C BCF LRAM_0x24,7 GOTO LADR_0x0061 End 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 12 февраля, 2019 Поделиться Опубликовано 12 февраля, 2019 Ну, так никто и не говорит, что хайтек - гоуноу. Я тоже им пользовался. Просто сейчас он уже неактуален, вот и всё... А XC8 - это тот же HI-TECH PRO (для 12/16 серии), только название поменяли. Под 18-ые камушки, он - MCC18. Если я не ошибаюсь ... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
IMXO Опубликовано 12 февраля, 2019 Поделиться Опубликовано 12 февраля, 2019 7 минут назад, Alex сказал: А XC8 - это тот же HI-TECH PRO (для 12/16 серии) тот да не тот, выше дописал пост, что вытворяет восьмой хусым причем изменение оптимизации никак не влияет 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
Starina48 Опубликовано 13 февраля, 2019 Автор Поделиться Опубликовано 13 февраля, 2019 (изменено) Хорошо, спасибо. Сейчас буду пробовать скачать и установить. Неожиданно новые посты открылись Alex и IMXO и я теперь весь в думах У меня 7 винда, стоит ли менять что то. Поменял MPLAN на 8.91 а HI там 9.50. Изменено 13 февраля, 2019 пользователем Starina48 дописал 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Starina48 Опубликовано 13 февраля, 2019 Автор Поделиться Опубликовано 13 февраля, 2019 Ну что ж, очень жаль, что задачу решить не удалось. Закрывайте данную тему. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Yurkin2015 Опубликовано 13 февраля, 2019 Поделиться Опубликовано 13 февраля, 2019 В 2/10/2019 в 19:20, Starina48 сказал: наверно двух буквенное обозначение порта прогу смущает Попробуйте использовать GPIO0 и GPIO1 вместо GP0 и GP1. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 13 февраля, 2019 Поделиться Опубликовано 13 февраля, 2019 2 часа назад, Starina48 сказал: задачу решить не удалось Почему ? Что не получилось ? 23 часа назад, IMXO сказал: результат дизасма хекса А уровень оптимизации какой ? В халявном варианте он спецом раздувает код. В PRO не должно быть такого... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 13 февраля, 2019 Поделиться Опубликовано 13 февраля, 2019 Попробовал. Простенький код для ТС'а : Скрытый текст #include "xc.h" __CONFIG ( WDTDIS & LP & MCLREN & UNPROTECT ); //***********************************************************************************************************/ #define OUT1 GPIO0 #define TRIS_OUT1 TRISIO0 #define OUT2 GPIO1 #define TRIS_OUT2 TRISIO1 //***********************************************************************************************************/ //***********************************************************************************************************/ void interrupt _isr(){ static bit b=0; if(TMR1IF){ TMR1IF=0; TMR1 -= 500; b=!b; OUT1 = b; OUT2 = !b; } } //***********************************************************************************************************/ //***********************************************************************************************************/ void main(){ CMCON=7; //-------------------------- TRIS_OUT1=0; OUT1=0; TRIS_OUT2=0; OUT2=0; //-------------------------- TMR1 = -500; T1CON=0; TMR1ON=1; TMR1IE=1; //-------------------------- PEIE=1; GIE=1; while(1){ } } //***********************************************************************************************************/ Free Mode : Цитата Program space used 4Dh ( 77) of 400h words ( 7.5%) Data space used 7h ( 7) of 40h bytes ( 10.9%) Скрытый текст 1: #include "xc.h" 2: __CONFIG ( WDTDIS & LP & MCLREN & UNPROTECT ); 3: //***********************************************************************************************************/ 4: #define OUT1 GPIO0 5: #define TRIS_OUT1 TRISIO0 6: #define OUT2 GPIO1 7: #define TRIS_OUT2 TRISIO1 8: //***********************************************************************************************************/ 9: 10: //***********************************************************************************************************/ 11: void interrupt _isr(){ 004 00DE MOVWF 0x5e 005 0E03 SWAPF STATUS, W 006 1283 BCF STATUS, 0x5 007 00A0 MOVWF 0x20 008 0804 MOVF FSR, W 009 00A1 MOVWF 0x21 00A 080A MOVF PCLATH, W 00B 00A2 MOVWF 0x22 00C 085F MOVF 0x5f, W 00D 00A3 MOVWF 0x23 00E 2817 GOTO _isr 017 1C0C BTFSS PIR1, 0 12: static bit b=0; 13: if(TMR1IF){ 018 2830 GOTO 0x30 14: TMR1IF=0; 019 100C BCF PIR1, 0 15: TMR1 -= 500; 01A 30F4 MOVLW 0xf4 01B 028E SUBWF TMR1, F 01C 3001 MOVLW 0x1 01D 1C03 BTFSS STATUS, 0 01E 038F DECF TMR1H, F 01F 028F SUBWF TMR1H, F 16: b=!b; 020 3001 MOVLW 0x1 021 06A4 XORWF 0x24, F 17: OUT1 = b; 022 1C24 BTFSS 0x24, 0 023 2827 GOTO 0x27 024 1283 BCF STATUS, 0x5 025 1405 BSF GPIO, 0 026 2829 GOTO 0x29 027 1283 BCF STATUS, 0x5 028 1005 BCF GPIO, 0 18: OUT2 = !b; 029 1824 BTFSC 0x24, 0 02A 282E GOTO 0x2e 02B 1283 BCF STATUS, 0x5 02C 1485 BSF GPIO, 0x1 02D 2830 GOTO 0x30 02E 1283 BCF STATUS, 0x5 02F 1085 BCF GPIO, 0x1 19: } 20: } 030 0823 MOVF 0x23, W 21: //***********************************************************************************************************/ 22: 23: //***********************************************************************************************************/ 24: void main(){ 03B 3007 MOVLW 0x7 25: CMCON=7; 03C 1283 BCF STATUS, 0x5 03D 0099 MOVWF CMCON 26: //-------------------------- 27: TRIS_OUT1=0; 03E 1683 BSF STATUS, 0x5 03F 1005 BCF GPIO, 0 28: OUT1=0; 040 1283 BCF STATUS, 0x5 041 1005 BCF GPIO, 0 29: TRIS_OUT2=0; 042 1683 BSF STATUS, 0x5 043 1085 BCF GPIO, 0x1 30: OUT2=0; 044 1283 BCF STATUS, 0x5 045 1085 BCF GPIO, 0x1 31: //-------------------------- 32: TMR1 = -500; 046 30FE MOVLW 0xfe 047 008F MOVWF TMR1H 048 300C MOVLW 0xc 049 008E MOVWF TMR1 33: T1CON=0; 04A 0190 CLRF T1CON 34: TMR1ON=1; 04B 1410 BSF T1CON, 0 35: TMR1IE=1; 04C 1683 BSF STATUS, 0x5 04D 140C BSF PIR1, 0 36: //-------------------------- 37: PEIE=1; 04E 170B BSF INTCON, 0x6 38: GIE=1; 04F 178B BSF INTCON, 0x7 39: while(1){ 050 2850 GOTO 0x50 PRO Mode : Цитата Program space used 44h ( 68) of 400h words ( 6.6%) Data space used 5h ( 5) of 40h bytes ( 7.8%) Скрытый текст 1: #include "xc.h" 2: __CONFIG ( WDTDIS & LP & MCLREN & UNPROTECT ); 3: //***********************************************************************************************************/ 4: #define OUT1 GPIO0 5: #define TRIS_OUT1 TRISIO0 6: #define OUT2 GPIO1 7: #define TRIS_OUT2 TRISIO1 8: //***********************************************************************************************************/ 9: 10: //***********************************************************************************************************/ 11: void interrupt _isr(){ 004 00DE MOVWF 0x5e 005 0E03 SWAPF STATUS, W 006 1283 BCF STATUS, 0x5 007 00A0 MOVWF 0x20 008 080A MOVF PCLATH, W 009 00A1 MOVWF 0x21 00A 2813 GOTO _isr 013 1C0C BTFSS PIR1, 0 12: static bit b=0; 13: if(TMR1IF){ 014 282C GOTO 0x2c 14: TMR1IF=0; 015 100C BCF PIR1, 0 15: TMR1 -= 500; 016 30F4 MOVLW 0xf4 017 028E SUBWF TMR1, F 018 3001 MOVLW 0x1 019 1C03 BTFSS STATUS, 0 01A 038F DECF TMR1H, F 01B 028F SUBWF TMR1H, F 16: b=!b; 01C 3001 MOVLW 0x1 01D 06A2 XORWF 0x22, F 17: OUT1 = b; 01E 1C22 BTFSS 0x22, 0 01F 2823 GOTO 0x23 020 1283 BCF STATUS, 0x5 021 1405 BSF GPIO, 0 022 2825 GOTO 0x25 023 1283 BCF STATUS, 0x5 024 1005 BCF GPIO, 0 18: OUT2 = !b; 025 1822 BTFSC 0x22, 0 026 282A GOTO 0x2a 027 1283 BCF STATUS, 0x5 028 1485 BSF GPIO, 0x1 029 282C GOTO 0x2c 02A 1283 BCF STATUS, 0x5 02B 1085 BCF GPIO, 0x1 19: } 20: } 02C 0821 MOVF 0x21, W 21: //***********************************************************************************************************/ 22: 23: //***********************************************************************************************************/ 24: void main(){ 033 3007 MOVLW 0x7 25: CMCON=7; 034 0099 MOVWF CMCON 26: //-------------------------- 27: TRIS_OUT1=0; 035 1683 BSF STATUS, 0x5 036 1005 BCF GPIO, 0 28: OUT1=0; 037 1283 BCF STATUS, 0x5 038 1005 BCF GPIO, 0 29: TRIS_OUT2=0; 039 1683 BSF STATUS, 0x5 03A 1085 BCF GPIO, 0x1 30: OUT2=0; 03B 1283 BCF STATUS, 0x5 03C 1085 BCF GPIO, 0x1 31: //-------------------------- 32: TMR1 = -500; 03D 30FE MOVLW 0xfe 03E 008F MOVWF TMR1H 03F 300C MOVLW 0xc 040 008E MOVWF TMR1 33: T1CON=0; 041 0190 CLRF T1CON 34: TMR1ON=1; 042 1410 BSF T1CON, 0 35: TMR1IE=1; 043 1683 BSF STATUS, 0x5 044 140C BSF PIR1, 0 36: //-------------------------- 37: PEIE=1; 045 170B BSF INTCON, 0x6 38: GIE=1; 046 178B BSF INTCON, 0x7 39: while(1){ 047 2847 GOTO 0x47 Что-то он попытался соптимизировать Кстати, ТС'у (@Starina48 ), готовый проект :1KHz.rar В архиве проект, исходник, прошивка (hex), файл протеуса. Скрытый текст Пользуйтесь на здоровье 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 13 февраля, 2019 Поделиться Опубликовано 13 февраля, 2019 1 час назад, Alex сказал: В PRO не должно быть такого... это как раз в про.... с глобал и ассемблер оптимизацией 30 минут назад, Alex сказал: Что-то он попытался соптимизировать ничего он не пытался просто по вставлял лишние команды , типа закинул FSR в контент 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 13 февраля, 2019 Поделиться Опубликовано 13 февраля, 2019 Ну а куле делать, Микрочип ... Такие вот у него компиляторы Благо для PIC32 GCC воткнули, вместо какого-нибудь своего 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Starina48 Опубликовано 15 февраля, 2019 Автор Поделиться Опубликовано 15 февраля, 2019 Alex, спасибо большое. Я не обратил внимание на 1кГц.rar. Видел его, но думал мой проект. Это и есть XC8? Сейчас буду разбираться. Еще раз огромное спасибо!!! 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Starina48 Опубликовано 15 февраля, 2019 Автор Поделиться Опубликовано 15 февраля, 2019 Alex, с каким MPLAB у вас XC8? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 15 февраля, 2019 Поделиться Опубликовано 15 февраля, 2019 MPLAB IDE 8.92 Но можете и в MPLAB X запустить. Создайте новый проект и добавьте туда файл main.c. Либо сделайте импорт проекта. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
UVV Опубликовано 15 февраля, 2019 Поделиться Опубликовано 15 февраля, 2019 интересно автор сделал выводы положительные для себя 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Lexter Опубликовано 15 февраля, 2019 Поделиться Опубликовано 15 февраля, 2019 (изменено) OFF @UVV , извините, не владею олбанским... Не соблаговолите ли пояснить: Это ваша оценка, что автор сделал выводы интересным образом? Или вам интересно, сделал ли автор выводы? Или вам интересно, положительно ли оценивает автор сделанные им выводы? Удивляюсь последнее время. как люди друг друга ещё понимают? Неужели так трудно использовать знаки препинания? ... Изменено 15 февраля, 2019 пользователем Lexter 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Starina48 Опубликовано 25 февраля, 2019 Автор Поделиться Опубликовано 25 февраля, 2019 Alex, установил MPLABX v.5.10 и XC 8 v.2.05. все нормально работает, но обнаружил одну странность: При загрузке .hex файла в программатор PIC KIT 2, программа загружается так: в нулевой ячейке - код, затем пустота, а продолжение программы в самом конце поля. Вся середина пустая. Чем это обьяснить? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Lexter Опубликовано 25 февраля, 2019 Поделиться Опубликовано 25 февраля, 2019 22 минуты назад, Starina48 сказал: Чем это обьяснить? Командой GOTO START. А START - с того адреса, где код начинается. Прерываний, видимо, в прошивке нет. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Starina48 Опубликовано 25 февраля, 2019 Автор Поделиться Опубликовано 25 февраля, 2019 Lexter, как практически это сделать. Только начал MPLABX заниматься, еще все в тумане. Жалко , что почитать на русском негде. Вставил проект. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 25 февраля, 2019 Поделиться Опубликовано 25 февраля, 2019 3 часа назад, Starina48 сказал: в нулевой ячейке - код, затем пустота, а продолжение программы в самом конце поля. Вся середина пустая. это хорошо, это значит что компилятор работает правильно. критические области в начале, основное тело в конце. а тк критических областей у тебя нет , соответственно всего одна команда перехода к основной программе. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 25 февраля, 2019 Поделиться Опубликовано 25 февраля, 2019 3 часа назад, Starina48 сказал: Чем это обьяснить? Скажу я Вам так - просто не обращайте на это внимание. Компилятор как посчитал сделать нужным, так и сделал. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Starina48 Опубликовано 27 февраля, 2019 Автор Поделиться Опубликовано 27 февраля, 2019 Еще одну бяку обнаружил. Даже комментарии в программе должны быть английскими. Русские буквы не признаются. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 27 февраля, 2019 Поделиться Опубликовано 27 февраля, 2019 а в настройках редактора указать язык 1251(ANSI-Cyrillic) никак? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Starina48 Опубликовано 27 февраля, 2019 Автор Поделиться Опубликовано 27 февраля, 2019 Как это сделать? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 27 февраля, 2019 Поделиться Опубликовано 27 февраля, 2019 edit-> properties...->text -> national language code page 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Starina48 Опубликовано 27 февраля, 2019 Автор Поделиться Опубликовано 27 февраля, 2019 Ничего подобного в версии 5.10 не нашел. К сожалению. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.