Хотелось-бы пару простеньких программ с подробным описанием. К примеру - переключение портов при поочерёдном нажатии на кнопку, регулировку яркости светодиода с задействованием ШИМ.
Пост N: 14
Зарегистрирован: 07.04.09
Откуда: Россия, Иваново
Рейтинг:
0
Отправлено: 22.04.09 09:00. Заголовок: Вот пару примеров на..
Вот пару примеров на HI-TECH. МК - PIC16F628A Первый пример - моргание светиком 1 Гц Второй проект - переключение портов при поочерёдном нажатии на кнопку. В архиве оба проекта и проект протеуса.
Пост N: 15
Зарегистрирован: 07.04.09
Откуда: Россия, Иваново
Рейтинг:
0
Отправлено: 22.04.09 09:41. Заголовок: Это файл находящийся..
Это файл находящийся в папке include компилятора. В нем описаны (присвоены адреса) все регистры конкретного МК, такие как PORTA, PORTB, TRISA и т.д....
Пост N: 16
Зарегистрирован: 07.04.09
Откуда: Россия, Иваново
Рейтинг:
0
Отправлено: 22.04.09 09:44. Заголовок: Вот ещё проектик, ре..
Вот ещё проектик, реализация синуса с помощью ШИМа. Может кому пригодиться :) Это камертон, делал одному человеку. Схема,прошивка, исходник и описание в архиве.
Вот что нашёл на VRTP: "Кавычки вместо угловых скобок говорят компилятору о том, что этот файл нужно искать в директории с проектом." Кстати, отдельно прописывать частоту обязательно? Нашёл так-же в проекте: #define PIC_CLK 20000000.
Пост N: 1068
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск, Мурманской обл.
Рейтинг:
4
Отправлено: 22.04.09 10:22. Заголовок: Алексей, в общем с э..
Алексей, в общем с этим практически всё понятно. В начале подключаем <pic.h>. Мастер проекта сам поймет чего мы хотим. Нашёл там там такую запись: #if defined(_16F627A) || defined(_16F628A) || defined(_16F648A) #include <pic16f62xa.h>. Т.е. он сам подключит в проект файл pic16f62xa.h. Непонятны 2 момента: 1. Зачем подключать подтягивающие резисторы, ведь порты В работают на выход. 2. Что обозначают строки после задания конфигурации.
Ок, посмотрел pic16f62xa.pic. Т.е. это указание регистров с их абсолютными адресами? А отредактировать 1 раз pic16f62xa.pic можно? Т.е. прописать туда 2 регистра и забыть. Конфликта не будет? Там по адресу 0х00 записан INDF, а по адресу 0x0E TMR1L.
Пост N: 22
Зарегистрирован: 07.04.09
Откуда: Россия, Иваново
Рейтинг:
0
Отправлено: 22.04.09 11:22. Заголовок: Фиг знает что там пр..
Фиг знает что там прописано под адресом 0х00, но когда я объявил переменную WREG с адресом 0х00, то работал с ней как с аккумулятором. По поводу 0x0E, в pic16f62xa.pic объявлены младший и старший байт таймера TMR1, а я его объявил как 2-х байтную переменную, что-бы работать с таймером легче было. Можно всё это прописать 1 раз в pic16f62xa.pic и не париться.
Строки static volatile unsigned char WREG @ 0x00; static volatile near unsigned int TMR1 @ 0x00E; и RBPU = 0; // Подтягиваем внутренние резисторы в данном проекте не нужны, но и не делают ничего плохого. Это просто у меня заготовка, которую я копирую в проект, что-бы по 20 раз не писать одно и тоже.
Пост N: 1071
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск, Мурманской обл.
Рейтинг:
4
Отправлено: 22.04.09 13:07. Заголовок: -=Alex=- пишет: По ..
-=Alex=- пишет:
цитата:
По поводу 0x0E, в pic16f62xa.pic объявлены младший и старший байт таймера TMR1, а я его объявил как 2-х байтную переменную, что-бы работать с таймером легче было.
Да, разобрался. Алексей, попробовал третий пример с синусом, компилятор ругается. Вот отчёт:
(1273) Omniscient Code Generation not available in Lite mode (warning) Warning [1258] D:\Microchip\HI-TECH Software\PICC\PRO\9.60\sources\ftneg.c; 17. possible stack overflow when calling function "___ftneg" Warning [1258] float.c; 34. possible stack overflow when calling function "___ftpack" Warning [1258] D:\Microchip\HI-TECH Software\PICC\PRO\9.60\sources\float.c; 16. possible stack overflow when calling function "___ftunpack" Error [1347] ; 0. can't find 0x70 words (0x70 withtotal) for psect "text176" in segment "CODE" (largest unused contiguous range 0x6C) Error [1347] ; 0. can't find 0x5A words (0x5a withtotal) for psect "text180" in segment "CODE" (largest unused contiguous range 0x8) Error [1347] ; 0. can't find 0x54 words (0x54 withtotal) for psect "text163" in segment "CODE" (largest unused contiguous range 0x8) Error [1347] ; 0. can't find 0x4A words (0x4a withtotal) for psect "text174" in segment "CODE" (largest unused contiguous range 0x8) Error [1347] ; 0. can't find 0x4A words (0x4a withtotal) for psect "text177" in segment "CODE" (largest unused contiguous range 0x8) Error [1347] ; 0. can't find 0x2F words (0x2f withtotal) for psect "intrtext" in segment "CODE" (largest unused contiguous range 0x8) Error [1347] ; 0. can't find 0x2C words (0x2c withtotal) for psect "text182" in segment "CODE" (largest unused contiguous range 0x8) Error [1347] ; 0. can't find 0x2A words (0x2a withtotal) for psect "text172" in segment "CODE" (largest unused contiguous range 0x8) Error [1347] ; 0. can't find 0x1C words (0x1c withtotal) for psect "text173" in segment "CODE" (largest unused contiguous range 0x8) Error [1347] ; 0. can't find 0x19 words (0x19 withtotal) for psect "text167" in segment "CODE" (largest unused contiguous range 0x8) Error [1347] ; 0. can't find 0x12 words (0x12 withtotal) for psect "text178" in segment "CODE" (largest unused contiguous range 0x8)
Clean: Deleting intermediary and output files. Clean: Deleted file "D:\PIC_CHIP\Projects\PIC16F628\123\123.mcs". Clean: Done. Executing: "C:\Program Files\HI-TECH Software\PICC\9.50\BIN\PICC.EXE" -C -E"kod.cce" "kod.c" -O"kod.obj" -Zg9 -O -ASMLIST -Q -MPLAB -16F628A Advisory[1207] : some of the command line options you are using are now obsolete Advisory[1208] : use --help option or refer to the user manual for option details Warning[349] D:\PIC_CHIP\Projects\PIC16F628\123\kod.c 21 : non-prototyped function declaration for "stearr" Warning[356] D:\PIC_CHIP\Projects\PIC16F628\123\kod.c 45 : implicit conversion of float to integer Executing: "C:\Program Files\HI-TECH Software\PICC\9.50\BIN\PICC.EXE" -E"123.lde" "D:\PIC_CHIP\Projects\PIC16F628\123\kod.obj" -M"123.map" -O"123.cof" -O"123.hex" -Q -MPLAB -16F628A Advisory[1207] : some of the command line options you are using are now obsolete Advisory[1208] : use --help option or refer to the user manual for option details
Memory Usage Map:
Program space: CODE used 5BDh ( 1469) of 800h words ( 71.7%) CONST used 1Dh ( 29) of 800h words ( 1.4%) ENTRY used 16h ( 22) of 800h words ( 1.1%) STRING used 0h ( 0) of 800h words ( 0.0%)
Data space: BANK0 used 4Bh ( 75) of 60h bytes ( 78.1%) BANK1 used 0h ( 0) of 50h bytes ( 0.0%) BANK2 used 0h ( 0) of 30h bytes ( 0.0%) COMBANK used 1h ( 1) of 10h bytes ( 6.3%)
EEPROM space: EEDATA used 8h ( 8) of 80h bytes ( 6.3%)
ID Location space: IDLOC used 0h ( 0) of 4h bytes ( 0.0%)
Configuration bits: CONFIG used 1h ( 1) of 1h word (100.0%)
Summary: Program space used 5F0h ( 1520) of 800h words ( 74.2%) Data space used 4Ch ( 76) of E0h bytes ( 33.9%) EEPROM space used 8h ( 8) of 80h bytes ( 6.3%) ID Location space used 0h ( 0) of 4h bytes ( 0.0%) Configuration bits used 1h ( 1) of 1h word (100.0%)
Пост N: 20
Зарегистрирован: 02.10.07
Откуда: Россия, Ульяновск
Рейтинг:
0
Отправлено: 21.05.09 18:30. Заголовок: Да, блин... Снёс HT-..
цитата:
Да, блин... Снёс HT-PICC pro v9.60 PL5 и установил HT-PICC v9.50 pl2. Проект откомпилировался без проблем. Как-то странно...
а у меня почему-то V9.50pl2 ругается на 16F628a, нет говорит такого в библиотеке может в .ini-файле самому 16F628a как-то прописать ? кстати, у HT-PICC директивы и макроопределения такие же как и у CCS PIC ?
/* Definitions for STATUS register */ static volatile bit CARRY @((unsigned)&STATUS*8)+0; static volatile bit DC @((unsigned)&STATUS*8)+1; static volatile bit ZERO @((unsigned)&STATUS*8)+2; static volatile bit PD @((unsigned)&STATUS*8)+3; static volatile bit TO @((unsigned)&STATUS*8)+4; static bit RP0 @((unsigned)&STATUS*8)+5; static bit RP1 @((unsigned)&STATUS*8)+6; static bit IRP @((unsigned)&STATUS*8)+7;
/* Definitions for PORTA register */ static volatile bit RA0 @((unsigned)&PORTA*8)+0; static volatile bit RA1 @((unsigned)&PORTA*8)+1; static volatile bit RA2 @((unsigned)&PORTA*8)+2; static volatile bit RA3 @((unsigned)&PORTA*8)+3; static volatile bit RA4 @((unsigned)&PORTA*8)+4; static volatile bit RA5 @((unsigned)&PORTA*8)+5; static volatile bit RA6 @((unsigned)&PORTA*8)+6; static volatile bit RA7 @((unsigned)&PORTA*8)+7;
/* Definitions for PORTB register */ static volatile bit RB0 @((unsigned)&PORTB*8)+0; static volatile bit RB1 @((unsigned)&PORTB*8)+1; static volatile bit RB2 @((unsigned)&PORTB*8)+2; static volatile bit RB3 @((unsigned)&PORTB*8)+3; static volatile bit RB4 @((unsigned)&PORTB*8)+4; static volatile bit RB5 @((unsigned)&PORTB*8)+5; static volatile bit RB6 @((unsigned)&PORTB*8)+6; static volatile bit RB7 @((unsigned)&PORTB*8)+7;
/* Definitions for INTCON register */ static volatile bit RBIF @((unsigned)&INTCON*8)+0; static volatile bit INTF @((unsigned)&INTCON*8)+1; static volatile bit T0IF @((unsigned)&INTCON*8)+2; static bit RBIE @((unsigned)&INTCON*8)+3; static bit INTE @((unsigned)&INTCON*8)+4; static bit T0IE @((unsigned)&INTCON*8)+5; static bit PEIE @((unsigned)&INTCON*8)+6; static bit GIE @((unsigned)&INTCON*8)+7;
/* Definitions for PIR1 register */ static volatile bit TMR1IF @((unsigned)&PIR1*8)+0; static volatile bit TMR2IF @((unsigned)&PIR1*8)+1; static volatile bit CCP1IF @((unsigned)&PIR1*8)+2; static volatile bit TXIF @((unsigned)&PIR1*8)+4; static volatile bit RCIF @((unsigned)&PIR1*8)+5; static volatile bit CMIF @((unsigned)&PIR1*8)+6; static volatile bit EEIF @((unsigned)&PIR1*8)+7;
/* Definitions for T1CON register */ static bit TMR1ON @((unsigned)&T1CON*8)+0; static bit TMR1CS @((unsigned)&T1CON*8)+1; static bit T1SYNC @((unsigned)&T1CON*8)+2; static bit T1OSCEN @((unsigned)&T1CON*8)+3; static bit T1CKPS0 @((unsigned)&T1CON*8)+4; static bit T1CKPS1 @((unsigned)&T1CON*8)+5;
/* Definitions for T2CON register */ static bit T2CKPS0 @((unsigned)&T2CON*8)+0; static bit T2CKPS1 @((unsigned)&T2CON*8)+1; static bit TMR2ON @((unsigned)&T2CON*8)+2; static bit TOUTPS0 @((unsigned)&T2CON*8)+3; static bit TOUTPS1 @((unsigned)&T2CON*8)+4; static bit TOUTPS2 @((unsigned)&T2CON*8)+5; static bit TOUTPS3 @((unsigned)&T2CON*8)+6;
/* Definitions for CCP1CON register */ static bit CCP1M0 @((unsigned)&CCP1CON*8)+0; static bit CCP1M1 @((unsigned)&CCP1CON*8)+1; static bit CCP1M2 @((unsigned)&CCP1CON*8)+2; static bit CCP1M3 @((unsigned)&CCP1CON*8)+3; static volatile bit CCP1Y @((unsigned)&CCP1CON*8)+4; static volatile bit CCP1X @((unsigned)&CCP1CON*8)+5;
/* Definitions for RCSTA register */ static volatile bit RX9D @((unsigned)&RCSTA*8)+0; static volatile bit OERR @((unsigned)&RCSTA*8)+1; static volatile bit FERR @((unsigned)&RCSTA*8)+2; static bit ADEN @((unsigned)&RCSTA*8)+3; static bit CREN @((unsigned)&RCSTA*8)+4; static bit SREN @((unsigned)&RCSTA*8)+5; static bit RX9 @((unsigned)&RCSTA*8)+6; static bit SPEN @((unsigned)&RCSTA*8)+7;
/* Definitions for CMCON register */ static bit CM0 @((unsigned)&CMCON*8)+0; static bit CM1 @((unsigned)&CMCON*8)+1; static bit CM2 @((unsigned)&CMCON*8)+2; static bit CIS @((unsigned)&CMCON*8)+3; static bit C1INV @((unsigned)&CMCON*8)+4; static bit C2INV @((unsigned)&CMCON*8)+5; static volatile bit C1OUT @((unsigned)&CMCON*8)+6; static volatile bit C2OUT @((unsigned)&CMCON*8)+7;
/* Definitions for OPTION register */ static bank1 bit PS0 @((unsigned)&OPTION*8)+0; static bank1 bit PS1 @((unsigned)&OPTION*8)+1; static bank1 bit PS2 @((unsigned)&OPTION*8)+2; static bank1 bit PSA @((unsigned)&OPTION*8)+3; static bank1 bit T0SE @((unsigned)&OPTION*8)+4; static bank1 bit T0CS @((unsigned)&OPTION*8)+5; static bank1 bit INTEDG @((unsigned)&OPTION*8)+6; static bank1 bit RBPU @((unsigned)&OPTION*8)+7;
/* Definitions for TRISA register */ static volatile bank1 bit TRISA0 @((unsigned)&TRISA*8)+0; static volatile bank1 bit TRISA1 @((unsigned)&TRISA*8)+1; static volatile bank1 bit TRISA2 @((unsigned)&TRISA*8)+2; static volatile bank1 bit TRISA3 @((unsigned)&TRISA*8)+3; static volatile bank1 bit TRISA4 @((unsigned)&TRISA*8)+4; static volatile bank1 bit TRISA5 @((unsigned)&TRISA*8)+5; static volatile bank1 bit TRISA6 @((unsigned)&TRISA*8)+6; static volatile bank1 bit TRISA7 @((unsigned)&TRISA*8)+7;
/* Definitions for TRISB register */ static volatile bank1 bit TRISB0 @((unsigned)&TRISB*8)+0; static volatile bank1 bit TRISB1 @((unsigned)&TRISB*8)+1; static volatile bank1 bit TRISB2 @((unsigned)&TRISB*8)+2; static volatile bank1 bit TRISB3 @((unsigned)&TRISB*8)+3; static volatile bank1 bit TRISB4 @((unsigned)&TRISB*8)+4; static volatile bank1 bit TRISB5 @((unsigned)&TRISB*8)+5; static volatile bank1 bit TRISB6 @((unsigned)&TRISB*8)+6; static volatile bank1 bit TRISB7 @((unsigned)&TRISB*8)+7;
/* Definitions for PIE1 register */ static bank1 bit TMR1IE @((unsigned)&PIE1*8)+0; static bank1 bit TMR2IE @((unsigned)&PIE1*8)+1; static bank1 bit CCP1IE @((unsigned)&PIE1*8)+2; static bank1 bit TXIE @((unsigned)&PIE1*8)+4; static bank1 bit RCIE @((unsigned)&PIE1*8)+5; static bank1 bit CMIE @((unsigned)&PIE1*8)+6; static bank1 bit EEIE @((unsigned)&PIE1*8)+7;
/* Definitions for PCON register */ static volatile bank1 bit BOR @((unsigned)&PCON*8)+0; static volatile bank1 bit POR @((unsigned)&PCON*8)+1; static bank1 bit OSCF @((unsigned)&PCON*8)+3;
/* Definitions for TXSTA register */ static volatile bank1 bit TX9D @((unsigned)&TXSTA*8)+0; static volatile bank1 bit TRMT @((unsigned)&TXSTA*8)+1; static bank1 bit BRGH @((unsigned)&TXSTA*8)+2; static bank1 bit SYNC @((unsigned)&TXSTA*8)+4; static bank1 bit TXEN @((unsigned)&TXSTA*8)+5; static bank1 bit TX9 @((unsigned)&TXSTA*8)+6; static bank1 bit CSRC @((unsigned)&TXSTA*8)+7;
/* Definitions for EECON1 register */ static volatile bank1 bit RD @((unsigned)&EECON1*8)+0; static volatile bank1 bit WR @((unsigned)&EECON1*8)+1; static bank1 bit WREN @((unsigned)&EECON1*8)+2; static volatile bank1 bit WRERR @((unsigned)&EECON1*8)+3;
/* Definitions for VRCON register */ static bank1 bit VR0 @((unsigned)&VRCON*8)+0; static bank1 bit VR1 @((unsigned)&VRCON*8)+1; static bank1 bit VR2 @((unsigned)&VRCON*8)+2; static bank1 bit VR3 @((unsigned)&VRCON*8)+3; static bank1 bit VRR @((unsigned)&VRCON*8)+5; static bank1 bit VROE @((unsigned)&VRCON*8)+6; static bank1 bit VREN @((unsigned)&VRCON*8)+7;
Пост N: 22
Зарегистрирован: 02.10.07
Откуда: Россия, Ульяновск
Рейтинг:
0
Отправлено: 23.05.09 18:04. Заголовок: Значит всё должно ра..
цитата:
Значит всё должно работать. Какую именно пишет ошибку ? Листинг выложите сюда.
вот чо говорит: Clean: Deleting intermediary and output files. Clean: Deleted file "C:\HTSOFT\proba.obj". Clean: Deleted file "C:\HTSOFT\proba.cce". Clean: Deleted file "proba.cof". Clean: Deleted file "C:\HTSOFT\proba.mcs". Clean: Done. Executing: "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\BIN\PICL.EXE" -C -E"proba.cce" "proba.c" -O"proba.obj" -Zg9 -O -ASMLIST -Q -MPLAB -16F628 Error[922] : chip "16F628" not present in chipinfo file "C:\Program Files\HI-TECH Software\PICC-Lite\9.50\dat\picc-lite.ini" Halting build on first failure as requested. BUILD FAILED: Sat May 23 18:54:55 2009 там действительно его нет может всё же версия другая? можно попробовать вручную прописать 16F873, 16F628 в этом picc-lite.ini, но не знаю как если можно, вышлите свой picc-lite.ini
Пост N: 30
Зарегистрирован: 02.10.07
Откуда: Россия, Ульяновск
Рейтинг:
0
Отправлено: 04.06.09 15:33. Заголовок: определился с компил..
определился с компилером, понравился MicroC кто-нибудь пишет в MicroC? может скинете свои наработки(любые) или примерчики с описанием пробовал пользовать встроенные, но что-то тяжко пока без привычки Или может ссылку на самоучитель по MicroC кто даст (ИМЕННО по MicroC)
Пост N: 39
Зарегистрирован: 07.04.09
Откуда: Россия, Иваново
Рейтинг:
0
Отправлено: 04.06.09 17:35. Заголовок: akd, здесь по моему ..
akd, здесь по моему другой компилятор обсуждаеться. http://eldigi.ru/site/prog/4.php в архиве компиль и Русская документация по нему. Может поможет чем.
на официальном сайте можно скачать шикарную документацию. Правда на буржуйском. Но написано всё очень толково и подробно. Кстати, сейчас посмотрел у себя, есть у меня на русском, 2МБ. Если интересно, могу скинуть на почтовик.
Пост N: 120
Зарегистрирован: 15.03.10
Откуда: Россия, Волжский
Рейтинг:
0
Отправлено: 19.07.11 02:59. Заголовок: доброе время суток м..
доброе время суток мужики подскажите пожайлусто, не могу уже разобратся сам. всё перепробовал. у меня есть книга <<применение микроконтроллеров PIC18>> автор Барри Брэй. хотел с помощью её поизучать Си для PIC18, но некак немогу создать проект. как описано в книге неполучается, да и всети так нечто и ненашол.
Пост N: 277
Зарегистрирован: 25.09.09
Откуда: г.Саратов
Рейтинг:
0
Отправлено: 19.07.11 18:32. Заголовок: Спасибо, конечно Але..
Спасибо, конечно Алексей, но ищу точно - BoostC compiler для установки его в MPLAB как инструмент. HI TECH есть у меня. Там доп.язык AS - черт ногу сломит, что ещё. Описание на BoostC нашёл, самого компилятора - не найду. Может не там ищу?
Пост N: 121
Зарегистрирован: 15.03.10
Откуда: Россия, Волжский
Рейтинг:
0
Отправлено: 20.07.11 03:46. Заголовок: да всё спасибо за за..
да всё спасибо за заботу. вообщем не всё так было просто, тут надо было просто знать как что делать, догодатся самаму просто нереально. просто удивительно что родной Си компилятор МСС18 для MPLAB так требует таких заморочек, отличии от тогоже HT-PIC. а надо было сделать так http://www.microchip.su/showpost.php?p=96835&postcount=2
Ситуация проясняется, нЕчего ломать. Ищу систематизированный (более-менее) материал по вставке ASM кода в Си для компилятора HI-TECH PICC. Примеры желательно. Описание компилятора есть. Что-то заклинило меня на совмещение кода С и Assembler От жары, наверное? 35 за бортом неделю. Может кто подскажет литературу для разжёвывания? Или освоил такую вставку и прочтет начальную лекцию? Не сочтите за труд.
Пост N: 281
Зарегистрирован: 25.09.09
Откуда: г.Саратов
Рейтинг:
0
Отправлено: 23.07.11 15:00. Заголовок: dosikus пишет: Ни к..
dosikus пишет:
цитата:
Ни к чему это ...
Это типа ветрянки, думаю - пройдёт. Просто увидел, как выглядит delay() в ASM из-под Си (штук 6 nop -ов), да и нелинейную ф-ию для PIC через таблицу значений пока не умею через Си. Отсюда и дерганье. Пока подержимся за мамин подол.
Пост N: 285
Зарегистрирован: 25.09.09
Откуда: г.Саратов
Рейтинг:
0
Отправлено: 01.08.11 20:45. Заголовок: По довольна таки жар..
По довольна таки жаркой дискуссии с заданием __GONFIG. Таблица - не таблица. Для меня однозначно - надо смотреть документацию. Вот работаю в asm - пишу :_WDT_ON , перешёл в С (для HI-TECH) - пишу уже WDTDIS. А для boostc - не знаю пока, что напишу. Документацию надо смотреть.
Пост N: 123
Зарегистрирован: 15.03.10
Откуда: Россия, Волжский
Рейтинг:
0
Отправлено: 29.11.11 20:04. Заголовок: Всем доброе время су..
Всем доброе время суток. В очередной раз занялся изучением языка Си (С18 для PIC) как всегда много непонятного Вот например
unsigned int counter = 69; PORTB = 7;
counter *= PORTB; // выполняется за 48 тактов а вот counter /= PORTB ; // выполняется уже за 239 тактов что является полным бредом для ПИКа с встроенным умножителем. Ведь я в пик 16 на асм, делю двухбайтное число на однобайтное всего за 200 тактов. Как от этого можно избавится и скомпилировать быстрый код.
Пост N: 184
Зарегистрирован: 10.02.11
Откуда: Россия
Рейтинг:
2
Отправлено: 30.11.11 07:58. Заголовок: ОКТОГЕН пишет: что ..
ОКТОГЕН пишет:
цитата:
что является полным бредом для ПИКа с встроенным умножителем.
Полным бредом является то, что Вы тут пишете. Во первых, причём тут умножитель и деление ? Объясните.. Во вторых, где то, с чем можно сравнить результат хайтека ? Мне с трудом верится, что человек, задающий подобные вопросы, сделает лучше чем программисты, создавшие компилятор Си. В третих,
цитата:
counter *= PORTB; // выполняется за 48 тактов
если Вам и это не понятно, то будет Вам известно, что в PIC18 аппаратный умножитель всего 8х8.
Пост N: 298
Зарегистрирован: 25.09.09
Откуда: г.Саратов
Рейтинг:
1
Отправлено: 08.12.11 08:00. Заголовок: вставка asm в BoostC
Мне было непонятно, как поведет себя вставка блока на asm в программе на С при переходе по страницам и банкам памяти. Выяснил, что компилятор BoostC автоматически выполняет такие переходы у PIC и вставка специальных команд таких переходов, при наличии вставок, не требуется. Вопрос для меня снят. Как ведет себя в этом плане HI-TECH -неизвестно.
вставка блока на asm в программе на С при переходе по страницам и банкам памяти
С трудом представляю такую ситуацию. Ну ладно, можно позволить, в крайнем случае, АСМ вставку. Но что-бы она была ещё и со всякими переходами по страницам и банкам... Вячеслав , для чего Вы переходите на Си ? Что-бы иметь себе мозг АСМовским кодом ? Совсем не понятно...
Пост N: 299
Зарегистрирован: 25.09.09
Откуда: г.Саратов
Рейтинг:
1
Отправлено: 08.12.11 18:29. Заголовок: Alex пишет: для чег..
Alex пишет:
цитата:
для чего Вы переходите на Си ?
Вопрос достаточно избит. Что лучше С или asm. Три года занимался устройствами на PIC как электроник и конструктор (устройства - мед.приборы). Писал программки на asm. Переход по станицам и банкам был для меня по первости - труден. Технарь, что с меня взять. Пробую на С и - получается. Испытываю на железе. Компилятор позволяет делать вставки в C код, это- я думаю, позволит сократить где-то расходы ресурса PIC. Или формировать торированной длительности импульлосы. Иногда использую PIC12. Пока так. На свой вопрос о переходе по банкам в коде С с asm вставками ответил здесь сам. Alex пишет:
цитата:
Ну ладно, можно позволить, в крайнем случае, АСМ вставку.
Пост N: 300
Зарегистрирован: 25.09.09
Откуда: г.Саратов
Рейтинг:
1
Отправлено: 10.12.11 06:43. Заголовок: Alex пишет: Почему ..
Alex пишет:
цитата:
Почему Вы выбрали не распространённый компилятор ?
1. Компилятор BoostC входит в состав среды FlowCode for PIC, через которую осваиваю С. 2. Прокомпилированные им программы (xxx.asm и xxx.c ) можно перенести в MPLAB и там использовать средства отладки уже MPLAB. 3. Указанный компилятор имеет некоторые "продвинутые" функции: обслуживание I2C, RS232, LCD, EEPROM ADС,Flash; есть и вкрапления С++. Вот такие мои смешные арументы на текущий момант. Впрочем, какая разница, всё равно Си осваивать придется. (Долби и посматривай) ОКТОГЕН пишет:
цитата:
преобразование двоичных данных в десятичные на Си.
Пост N: 301
Зарегистрирован: 25.09.09
Откуда: г.Саратов
Рейтинг:
1
Отправлено: 11.12.11 08:16. Заголовок: Не специалист по язы..
Не специалист по языку. Только общие рассуждения дилетанта: 1.Короче чем программой на asm с красивым алгоритмом задачу не решить (может быть вставка asm?); 2.Если на С, то искать неклассический алгоритм для данного случая; 3.Поиграться с задачей, где есть эта функция (напр.- объявить "a" локальной переменной), тогда можно уменьщить расход ресурса в целом; задать компилятору высокий уровень оптимизации. На данном этапе, мне бы вышеприведенные С программки научиться воплощать! Сам надеюсь использовать для средней серии МК функции компилятора bootsc: Lightweight Conversion Functions The standard conversion functions offer a lot of flexibility at the cost of ROM, RAM and execution time. For application that are short of RAM and ROM, or require shorter execution time, it maybe desirable to use the following lightweight functions.(Это из руководства, и только о функциях преобразования) Что это даст конкретно для экономии, пока не знаю. Удачи.
Отправлено: 11.12.11 20:40. Заголовок: ОКТОГЕН пишет: там ..
ОКТОГЕН пишет:
цитата:
там в зависимости от кагого числа. например
А вы думаете на асм сможете ужать эту процедуру хоть на сколько нибудь существенно??? Ну например хотя бы процентов на 20? Или на асме количество циклов не будет зависеть от числа???
Отправлено: 11.12.11 21:21. Заголовок: ОКТОГЕН пишет: там ..
ОКТОГЕН пишет:
цитата:
там в зависимости от кагого числа. например Con2v10(0) ; // выполняется за 46 м.ц. Con2v10(199) ; // выполняется за 374 м.ц.
асм. вставка помогла бы только как её правильно вставить?
Для таких заявлений надо приводить код целиком или же вместе с дизассемблером. Не известно что там наворотит любимый вами бусстс вкупе с Folow . Аналогичное преобразование (в виде урезанной ITOA и вариант ITOBCD) работает у меня в куче проектов от PIC10F до STM32 без нареканий. Что есть м.ц ?
Пост N: 129
Зарегистрирован: 15.03.10
Откуда: Россия, Волжский
Рейтинг:
0
Отправлено: 12.12.11 00:00. Заголовок: Алексей пишет: А вы..
Алексей пишет:
цитата:
А вы думаете на асм сможете ужать эту процедуру хоть на сколько нибудь существенно??? Ну например хотя бы процентов на 20? Или на асме количество циклов не будет зависеть от числа???
на асеме эта процедура занимает более чем в 2 раза меньшее время. dosikus пишет:
цитата:
Для таких заявлений надо приводить код целиком или же вместе с дизассемблером.
MPLAB позволяет видить си код в ассемблерных командах, и для своей конструкции этот синтезировался адекватно. просто думал мож у каво есть более быстрый алгоритм, илиже знает встроенную в компилятор MCC18 функцию.
Отправлено: 12.12.11 00:51. Заголовок: ОКТОГЕН пишет: на а..
ОКТОГЕН пишет:
цитата:
на асеме эта процедура занимает более чем в 2 раза меньшее время.
Значит ваш компилятор генерируют совсем не адекватный код. ОКТОГЕН пишет:
цитата:
илиже знает встроенную в компилятор MCC18 функцию.
При чем здесь MCC18 ??? У вас же другой компилятор... Если вы имеете в виду стандартные функции С , то они вас не удовлетворят . Ибо универсальные и код распухнет
Пост N: 130
Зарегистрирован: 15.03.10
Откуда: Россия, Волжский
Рейтинг:
0
Отправлено: 12.12.11 21:06. Заголовок: а можно знаете что о..
а можно знаете, что один и тотже проект скомпилировать в разных средах, и по результатам определить какая среда лучше. думаю это может быть интересным. 1) FC - как среда освоения С 2) MCC18 3) HI-TEC три среды уже есть
Отправлено: 12.12.11 21:22. Заголовок: Вячеслав пишет: FC ..
Вячеслав пишет:
цитата:
FC - как среда освоения С. Очень наглядная и алгоритмы рисует. Для моих простых задач годится. Удачи.
Собственно советы и опыт вам, я так понял не нужны. Хотите шишки сами набивать ? Весьма похвально. Одно но, запомните - вы изучаете ни как не С , а визуальную IDE FlowCode. А это разные вещи. ОКТОГЕН, 1) FC - 2) MCC18 3) HI-TEC Первое выкинуть не задумываясь...
Собственно советы и опыт вам, я так понял не нужны.
Туда не ходи, это не ешь. Пройдено давно. Где-то с мая занимаюсь в фоновом режиме с FC. Чужой опыт хорошо, свой больше помниться. FC - всего-то учебник по С. Никаких чудес. Очередная подпорка в освоении для меня нового. Можно сказать - ковыряюсь в "песочнице". Суп из топора - старая сказка. Топор - это FC. Но без топора, что была бы за сказка? Пришёл солдат наколпачил бабушку? Романтика где? dosikus пишет:
цитата:
визуальную IDE FlowCode.
Пока не так. Получив "скелет" задачи в FC с её возможностями (знать бы где у неё они кончаются?), откатываюсь в IDE MPLAB, т.к. FC в гробу видела вставки мои, и С и asm. Просто транслирует. Т.е.- есть сложности, нюансы ( кроме освоения языка - разумеется). Пока так. Первые проекты в "железе" работают. Ну, ооочень простые. Да, собственно, не все ли равно как учить С? (Си, сеньор, Си). Берешь учебник, пишешь пример, смотришь результат (хоть в чём). А, если код "влез"в PIC, да железо заработало, то... Лирика, конечно. С уважением.
Семейство PIC18 не обеспечивает аппаратную поддержку операции деления целых чисел. Типовая операция деления 16/16 бит и 16/8 бит с использованием стандартной библиотеки математических функций PIC18 занимает как минимум 38 командных тактов.
Отправлено: 24.03.12 23:51. Заголовок: Ну если действительн..
Очевидно, что хочется получить очень быстрое деление 16/8 за 38 тактов. А если это действительно так то ничто не мешает использовать эту библиотеку. Может просто чудес не бывает???
Пост N: 326
Зарегистрирован: 25.09.09
Откуда: г.Саратов
Рейтинг:
1
Отправлено: 25.03.12 09:16. Заголовок: Alex, на твой пост ..
Alex, на твой пост №131. Лучше поздно.. Спасибо, Alex. Информация мне полезная, жаль без продолжения. У меня получается так, что после компиляции из под FC с компилятором BoostC, программу вижу в MPLAB с установленным компилятором HI-TECH и там можно компилировать эту программу. Видимо программы мои простые и команды попадают в общую зону определений для обоих компиляторов( "Си оно и в Африке Си"). Или что-то в этом смысле. Возможно, когда доберусь до смешанных функций (если доберусь ) типа I2C и появятся отличия в определениях. Иногда делаю ещё проще: получаю исходник после FC, перехожу в Протеус с прицепленным к МК файлом xxx.cof, редактором типа ConTEXT правлю программу (на сколько ума хватает и только простые операции) и вновь смотрю - что получилось в Протеусе. Может путь и не совсем правильный. Пока так осваиваю Си. С уважением.
Все даты в формате GMT
3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет