Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

CCS - как да ... ?
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=3486
Страница 1 от 3

Автор:  Sonic [ Пет Дек 29, 2006 6:05 pm ]
Заглавие:  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 и как се чете...

Моля ви да ме насочите към няккави проекти дето го правят тва нещо или някаквъв друг вид помощ като за начинаещ ...

Автор:  Cekins [ Пет Дек 29, 2006 6:41 pm ]
Заглавие: 

Ами като за начало ако не си изчел няколко пъти PDF-a на пик-а - направи го докато почне да ти присветва лампичката. Пeриферията на процесора се управлява с регистри - SFR (Special Function Register). Например управлението за вход/изход става с регистрите TRISx (х е порта А, В и т.н.) : TRISB = 15 ще направи старшите четири пина на порта изходи а младшите входове (00001111) - 0 за изход, 1 за вход. По този начин се управлява всяка една периферия. Например за да пуснеш TMR1 (таймер1) се сетва регистъра T1CON бит 0 и т.н. Серийната комуникация е описана в PDF-a на пика - кой регистъра за кво служи и последователността в която става номера. Не е като при компютъра както си свикнал.

едит : той компилатора (не съм работил с него и не съм сигурен) трябва да има фукции за изпращане по ком-а

Автор:  Sonic [ Пет Дек 29, 2006 7:10 pm ]
Заглавие: 

оки - до тук добре

SET_TRIS_B( 0xFD );
ми направи вичко входове и само B6 изход ...
ама как да предам отчетените данни ?

Автор:  Sonic [ Пет Дек 29, 2006 7:34 pm ]
Заглавие: 

ето и схемата в proteus
-ако може да имам и там бъгове .. .или нещо друго дето да направя ...

Прикачени файлове:
11.GIF
11.GIF [ 17.49 KiB | Прегледано 2178 пъти ]

Автор:  Predator_MF [ Пет Дек 29, 2006 7:36 pm ]
Заглавие: 

Краката можеш да ги клатиш по два начина, първия е с функциите set_tris_x (x e a,b,c,d,e или името на порта), input_x , output_x и още няколко, пише ги в документацията. В случая обаче трябва да съобразиш типа порт, който ще ползваш (standart, fast, fixed), което е малко изнервящо. Втория метод за предпочитане, не ползваш тези функции, а просто дефинираш:
Код:
#BYTE TRISA = 0x05
#BYTE PORTA = 0x06
#BIT  LED = PORTA.1 // ако примерно си закачил LED на този крак

void main(){
...
...
TRISA = 0b11111101; // всички пинове на PortA са входове, освен A1
PORTA = 0x00; // чистиш целия порт
LED = 1;
delay_ms(500);
LED = 0;
delay_ms(500);
LED = 1;
Данните ги предаваш с printf, прочети документацията!

Едит: Имаш грешки в схемата - махни MAX232, терминала и виртуалния COM порт в Proteus са съобразени с 5V нива, директно към краката на процесора се закачи.

Автор:  Sonic [ Пет Дек 29, 2006 8:37 pm ]
Заглавие: 

каде има форум за CCS - щото като гледам тук - с прочети документациаята прогреса е никакъв - щото ако прочета цялата документация едва ли ще питам ...

Автор:  Predator_MF [ Пет Дек 29, 2006 8:46 pm ]
Заглавие: 

Те и там ще ти кажат същото...първо четеш - после питаш. Написано е за да се чете. Натискаш F1, пишеш printf и ти изкача моментално описанието на функцията printf, със подробно обяснение как да предадеш променлива по USART в 15 различни типа.

Автор:  Cekins [ Пет Дек 29, 2006 9:02 pm ]
Заглавие: 

Sonic, не искам да те засегна обаче трябва да знаеш как работи професора - и то не по принцип а конкретния с който искаш да работиш. Затова всички казват прочети документацията. Аз например първата ми работа беше да изчета PDF-ите на прфесорите и тогава да се захващам с програмирането им. А и после като задаваш въпроси знаеш какво питаш. Иначе повечето знаещи в този форум отговарят с RTFM и то в повечето случаи с право. Конкретно за пиковете за начинаещи са полезни книжките на млад консдтруктор.

Автор:  Sonic [ Пет Дек 29, 2006 9:26 pm ]
Заглавие: 

незнам как да отговоря
за pic16f870 няма нищо почти , камо ли на бг.
имам книжката на млад конструктор - но там не се говори зa ccs,
а за асемблер, които не предпочитам да го чета...
Затова ми се щеше накратко да ми се опише в CCS форма за какво става въпрос ...
или поне къде мога да попитам за ccs функциите.
а в хелпа на ccs -а явно нещо се е омотало - щото някои неща изобщо не щат да тръгнат.

както и да е ...
открих си проблема - що нищо неизлиза на серииния порт - щото не съм оравил синхронизацията ...
та накрая изкарах нещо на през серииния порт ( симулативно де .. )
ама ето къв е проблема сега:
Цитат:
#include "D:\ppc\1.h"
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
....
....
do
{

printf("a");
delay_ms( 100 );
}
while( TRUE );


това вместо да ми изкара "аааа..." ми вади "pppp...."
и какъвто и символ да го накарам да ми извади - само "pppp..." ми вади ...

Автор:  Dimitar [ Пет Дек 29, 2006 9:43 pm ]
Заглавие: 

Конфигурирането на серийния порт става в 2-3 регистъра, а се предава по него като записваш в един. Приемането става в прекъсване, като четеш от друг регистър - това достатъчно просто ли е 8) ? Недей да излагаш така Фелибето ей :) . Избери си първо РС програмист ли ще бъдеш или ембедед - ако ще е ембедед, тогава ще продължим по темата. Разликата е от земята до небето и мисленето е леко различно. Няма да ти се отдаде да гледаш само от "високото" на С++ - все ще дойде момент, когато ще искаш нещо по-сложно от мигане на диод и пращане на един байт по серийния интерфейс и тогава ще ти се наложи да научиш и асемблера за тоя процесор, пък и самия процесор като устройство. Та тънката ми мисъл досега е, че си сбъркал поне няколко неща в подхода си и ако искаш да се занимаваш с тези неща ще трябва да ги коригираш :) .

Автор:  Sonic [ Пет Дек 29, 2006 9:52 pm ]
Заглавие: 

не ми трябва да съм ембедед чак толкова .. предпочитам си pc app dev-а , тия неща ми трябват за няколко проектчета , после ще го изоставя това нещо , а за асемблера - извъобще не ми е от полза да почна сега и да го уча - то мисля че това е и идеята на езиците от високо ниво - какъвто е CCS - да не се интересува човек от асемблера - но документацията е под сякаква критика - само бегло е загатнато как би могло да се употреби нещо - което пак каточе ли нарочно връща човек - да гледа асемблера ...
както и да е ... - а защо да излагам филибето - както казах - с микропроцесори се занимавам от около 6-7 часа - когата си инсталирах CCS реално ... ехеххех - не е много - ама пак бива...

а до конфигурирането на серииния порт - #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
това нещо би трябвало да върши всичко ... или ... ?

Автор:  Ки4о [ Пет Дек 29, 2006 9:55 pm ]
Заглавие: 

Виж бе пич,аз съм мнооого зле със Ц-то и почнах със светодиода (както казава Хищника) и след 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);
}

ТАКА ЧЕ СЕ ПОРАЗРОВИ ВЪВ ХЕЛПА !!! :wink:

Автор:  Sonic [ Пет Дек 29, 2006 10:15 pm ]
Заглавие: 

незнам с каква функция за налучкване ми изкара тоя пример ... ама явно е неуспешен опит
- нито се занимавам с посочените пикове , нито обработвам one wire устройства...
а безсмислени примери мога да си открия доста ...
мерси - ако и следващите "помощи" са от този тип - моля не ми помагаите ...

Автор:  Dimitar [ Пет Дек 29, 2006 10:21 pm ]
Заглавие: 

Sonic написа:
а за асемблера - извъобще не ми е от полза да почна сега и да го уча - то мисля че това е и идеята на езиците от високо ниво

Това е идеята, ама да пишеш програмки за РС - за пик-вете е малко по-друга тая идея :D . За да свършиш цял проект за микроконтролер ти трябва малко повече от това да си играеш на програмиране. :D

#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) - освен това някъде трябва да кажеш колко бита предаваш, колко стоп бита ползваш и има ли контрол по четност или няма. Същите тия неща трябва да кажеш и порта на РС-то (и скоростта + Flow control-a ). Като го направиш това може и да приемеш с РС-то правилната буква 8) .

ПП. И аз съм от Филебето :D .

Автор:  Sonic [ Пет Дек 29, 2006 10:28 pm ]
Заглавие: 

еййй - дам - верно че никаде не се описва какви пакети предавам ...
ся ще вида ...

Страница 1 от 3 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/