|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 10:58 pm
| Автор |
Съобщение |
|
Sonic
Ранг: Новодошъл
Регистриран на: Пон Дек 25, 2006 4:38 am Мнения: 114
|
 CCS - как да ... ?
Одеве си го дръпнах - CCS 4.13
много ми хареса, прегледах му опциите , направих си настройките за PIC16F870.
Ама закъсах до програмната част.
-Начи - идеят е : Пик-а чете АЦП-то от вход А0 и трябва да комунукира през MAX232 - да праща данните дето ги е получил като резултат.
 |  |  |  | Цитат: #include "D:\ppc\1.h" void main() { int value; setup_adc_ports(AN0); setup_adc(ADC_CLOCK_INTERNAL); setup_psp(PSP_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); // TODO: USER CODE!! while ( input(AN0) ) { delay_ms( 200 ); value = read_adc(); - е тук ся .. кво  ?!?!? } } |  |  |  |  |
Немога да намеря в документацията как се се настройва пин като изход / вход , и как се предава сериино към max232 и как се чете...
Моля ви да ме насочите към няккави проекти дето го правят тва нещо или някаквъв друг вид помощ като за начинаещ ...
|
| Пет Дек 29, 2006 6:05 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Ами като за начало ако не си изчел няколко пъти PDF-a на пик-а - направи го докато почне да ти присветва лампичката. Пeриферията на процесора се управлява с регистри - SFR (Special Function Register). Например управлението за вход/изход става с регистрите TRISx (х е порта А, В и т.н.) : TRISB = 15 ще направи старшите четири пина на порта изходи а младшите входове (00001111) - 0 за изход, 1 за вход. По този начин се управлява всяка една периферия. Например за да пуснеш TMR1 (таймер1) се сетва регистъра T1CON бит 0 и т.н. Серийната комуникация е описана в PDF-a на пика - кой регистъра за кво служи и последователността в която става номера. Не е като при компютъра както си свикнал.
едит : той компилатора (не съм работил с него и не съм сигурен) трябва да има фукции за изпращане по ком-а
|
| Пет Дек 29, 2006 6:41 pm |
|
 |
|
Sonic
Ранг: Новодошъл
Регистриран на: Пон Дек 25, 2006 4:38 am Мнения: 114
|
оки - до тук добре
SET_TRIS_B( 0xFD );
ми направи вичко входове и само B6 изход ...
ама как да предам отчетените данни ?
|
| Пет Дек 29, 2006 7:10 pm |
|
 |
|
Sonic
Ранг: Новодошъл
Регистриран на: Пон Дек 25, 2006 4:38 am Мнения: 114
|
ето и схемата в proteus
-ако може да имам и там бъгове .. .или нещо друго дето да направя ...
|
| Пет Дек 29, 2006 7:34 pm |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
Краката можеш да ги клатиш по два начина, първия е с функциите set_tris_x (x e a,b,c,d,e или името на порта), input_x , output_x и още няколко, пише ги в документацията. В случая обаче трябва да съобразиш типа порт, който ще ползваш (standart, fast, fixed), което е малко изнервящо. Втория метод за предпочитане, не ползваш тези функции, а просто дефинираш:
Данните ги предаваш с printf, прочети документацията!
Едит: Имаш грешки в схемата - махни MAX232, терминала и виртуалния COM порт в Proteus са съобразени с 5V нива, директно към краката на процесора се закачи.
|
| Пет Дек 29, 2006 7:36 pm |
|
 |
|
Sonic
Ранг: Новодошъл
Регистриран на: Пон Дек 25, 2006 4:38 am Мнения: 114
|
каде има форум за CCS - щото като гледам тук - с прочети документациаята прогреса е никакъв - щото ако прочета цялата документация едва ли ще питам ...
|
| Пет Дек 29, 2006 8:37 pm |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
Те и там ще ти кажат същото...първо четеш - после питаш. Написано е за да се чете. Натискаш F1, пишеш printf и ти изкача моментално описанието на функцията printf, със подробно обяснение как да предадеш променлива по USART в 15 различни типа.
|
| Пет Дек 29, 2006 8:46 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Sonic, не искам да те засегна обаче трябва да знаеш как работи професора - и то не по принцип а конкретния с който искаш да работиш. Затова всички казват прочети документацията. Аз например първата ми работа беше да изчета PDF-ите на прфесорите и тогава да се захващам с програмирането им. А и после като задаваш въпроси знаеш какво питаш. Иначе повечето знаещи в този форум отговарят с RTFM и то в повечето случаи с право. Конкретно за пиковете за начинаещи са полезни книжките на млад консдтруктор.
|
| Пет Дек 29, 2006 9:02 pm |
|
 |
|
Sonic
Ранг: Новодошъл
Регистриран на: Пон Дек 25, 2006 4:38 am Мнения: 114
|
незнам как да отговоря
за pic16f870 няма нищо почти , камо ли на бг.
имам книжката на млад конструктор - но там не се говори зa ccs,
а за асемблер, които не предпочитам да го чета...
Затова ми се щеше накратко да ми се опише в CCS форма за какво става въпрос ...
или поне къде мога да попитам за ccs функциите.
а в хелпа на ccs -а явно нещо се е омотало - щото някои неща изобщо не щат да тръгнат.
както и да е ...
открих си проблема - що нищо неизлиза на серииния порт - щото не съм оравил синхронизацията ...
та накрая изкарах нещо на през серииния порт ( симулативно де .. )
ама ето къв е проблема сега:
това вместо да ми изкара "аааа..." ми вади "pppp...."
и какъвто и символ да го накарам да ми извади - само "pppp..." ми вади ...
|
| Пет Дек 29, 2006 9:26 pm |
|
 |
|
Dimitar
Ранг: Форумен бог
Регистриран на: Пет Ное 12, 2004 3:38 pm Мнения: 9103 Местоположение: Chicago, IL
|
Конфигурирането на серийния порт става в 2-3 регистъра, а се предава по него като записваш в един. Приемането става в прекъсване, като четеш от друг регистър - това достатъчно просто ли е  ? Недей да излагаш така Фелибето ей  . Избери си първо РС програмист ли ще бъдеш или ембедед - ако ще е ембедед, тогава ще продължим по темата. Разликата е от земята до небето и мисленето е леко различно. Няма да ти се отдаде да гледаш само от "високото" на С++ - все ще дойде момент, когато ще искаш нещо по-сложно от мигане на диод и пращане на един байт по серийния интерфейс и тогава ще ти се наложи да научиш и асемблера за тоя процесор, пък и самия процесор като устройство. Та тънката ми мисъл досега е, че си сбъркал поне няколко неща в подхода си и ако искаш да се занимаваш с тези неща ще трябва да ги коригираш  .
|
| Пет Дек 29, 2006 9:43 pm |
|
 |
|
Sonic
Ранг: Новодошъл
Регистриран на: Пон Дек 25, 2006 4:38 am Мнения: 114
|
не ми трябва да съм ембедед чак толкова .. предпочитам си pc app dev-а , тия неща ми трябват за няколко проектчета , после ще го изоставя това нещо , а за асемблера - извъобще не ми е от полза да почна сега и да го уча - то мисля че това е и идеята на езиците от високо ниво - какъвто е CCS - да не се интересува човек от асемблера - но документацията е под сякаква критика - само бегло е загатнато как би могло да се употреби нещо - което пак каточе ли нарочно връща човек - да гледа асемблера ...
както и да е ... - а защо да излагам филибето - както казах - с микропроцесори се занимавам от около 6-7 часа - когата си инсталирах CCS реално ... ехеххех - не е много - ама пак бива...
а до конфигурирането на серииния порт - #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
това нещо би трябвало да върши всичко ... или ... ?
|
| Пет Дек 29, 2006 9:52 pm |
|
 |
|
Ки4о
Ранг: Форумен бог
Регистриран на: Съб Юли 22, 2006 9:50 pm Мнения: 1638
|
Виж бе пич,аз съм мнооого зле със Ц-то и почнах със светодиода (както казава Хищника) и след 10 тина дни подкарах и доста други неща.Не се хвърляй на високо щото само ще губиш време.За хелп - на сайта на фирмата има мн. добър форум така че зарови се в него.Ако не ти не чете- екпериментирай,но само ще загубиш време ако не попрочетеш нещо по темата.
Ето примера(от хелпа ) как се чете температурен сензор
#if defined(__PCB__)
#include <16C56.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_A3, rcv=PIN_A2)
#elif defined(__PCM__)
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#elif defined(__PCH__)
#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#endif
#define DAL_SCL PIN_B0
#define DAL_SDA PIN_B1
#include <ds1621.c>
void main() {
BYTE value;
init_temp();
do {
value = read_temp();
printf("%u\r\n",value);
delay_ms(1000);
} while (TRUE);
}
ТАКА ЧЕ СЕ ПОРАЗРОВИ ВЪВ ХЕЛПА !!! 
|
| Пет Дек 29, 2006 9:55 pm |
|
 |
|
Sonic
Ранг: Новодошъл
Регистриран на: Пон Дек 25, 2006 4:38 am Мнения: 114
|
незнам с каква функция за налучкване ми изкара тоя пример ... ама явно е неуспешен опит
- нито се занимавам с посочените пикове , нито обработвам one wire устройства...
а безсмислени примери мога да си открия доста ...
мерси - ако и следващите "помощи" са от този тип - моля не ми помагаите ...
|
| Пет Дек 29, 2006 10:15 pm |
|
 |
|
Dimitar
Ранг: Форумен бог
Регистриран на: Пет Ное 12, 2004 3:38 pm Мнения: 9103 Местоположение: Chicago, IL
|
Това е идеята, ама да пишеш програмки за РС - за пик-вете е малко по-друга тая идея  . За да свършиш цял проект за микроконтролер ти трябва малко повече от това да си играеш на програмиране.
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) - освен това някъде трябва да кажеш колко бита предаваш, колко стоп бита ползваш и има ли контрол по четност или няма. Същите тия неща трябва да кажеш и порта на РС-то (и скоростта + Flow control-a ). Като го направиш това може и да приемеш с РС-то правилната буква  .
ПП. И аз съм от Филебето  .
|
| Пет Дек 29, 2006 10:21 pm |
|
 |
|
Sonic
Ранг: Новодошъл
Регистриран на: Пон Дек 25, 2006 4:38 am Мнения: 114
|
еййй - дам - верно че никаде не се описва какви пакети предавам ...
ся ще вида ...
|
| Пет Дек 29, 2006 10:28 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 2 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|