Отговори на тема  [ 37 мнения ]  Отиди на страница 1, 2, 3  Следваща
CCS - как да ... ? 
Автор Съобщение
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пон Дек 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
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 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
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пон Дек 25, 2006 4:38 am
Мнения: 114
Мнение 
оки - до тук добре

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


Пет Дек 29, 2006 7:10 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пон Дек 25, 2006 4:38 am
Мнения: 114
Мнение 
ето и схемата в proteus
-ако може да имам и там бъгове .. .или нещо друго дето да направя ...


Прикачени файлове:
11.GIF
11.GIF [ 17.49 KiB | Прегледано 2193 пъти ]
Пет Дек 29, 2006 7:34 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
Краката можеш да ги клатиш по два начина, първия е с функциите 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 нива, директно към краката на процесора се закачи.


Пет Дек 29, 2006 7:36 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пон Дек 25, 2006 4:38 am
Мнения: 114
Мнение 
каде има форум за CCS - щото като гледам тук - с прочети документациаята прогреса е никакъв - щото ако прочета цялата документация едва ли ще питам ...


Пет Дек 29, 2006 8:37 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
Те и там ще ти кажат същото...първо четеш - после питаш. Написано е за да се чете. Натискаш F1, пишеш printf и ти изкача моментално описанието на функцията printf, със подробно обяснение как да предадеш променлива по USART в 15 различни типа.


Пет Дек 29, 2006 8:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение 
Sonic, не искам да те засегна обаче трябва да знаеш как работи професора - и то не по принцип а конкретния с който искаш да работиш. Затова всички казват прочети документацията. Аз например първата ми работа беше да изчета PDF-ите на прфесорите и тогава да се захващам с програмирането им. А и после като задаваш въпроси знаеш какво питаш. Иначе повечето знаещи в този форум отговарят с RTFM и то в повечето случаи с право. Конкретно за пиковете за начинаещи са полезни книжките на млад консдтруктор.


Пет Дек 29, 2006 9:02 pm
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пон Дек 25, 2006 4:38 am
Мнения: 114
Мнение 
незнам как да отговоря
за 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..." ми вади ...


Пет Дек 29, 2006 9:26 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

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


Пет Дек 29, 2006 9:43 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пон Дек 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
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 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);
}

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


Пет Дек 29, 2006 9:55 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пон Дек 25, 2006 4:38 am
Мнения: 114
Мнение 
незнам с каква функция за налучкване ми изкара тоя пример ... ама явно е неуспешен опит
- нито се занимавам с посочените пикове , нито обработвам one wire устройства...
а безсмислени примери мога да си открия доста ...
мерси - ако и следващите "помощи" са от този тип - моля не ми помагаите ...


Пет Дек 29, 2006 10:15 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Sonic написа:
а за асемблера - извъобще не ми е от полза да почна сега и да го уча - то мисля че това е и идеята на езиците от високо ниво

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

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

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


Пет Дек 29, 2006 10:21 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Пон Дек 25, 2006 4:38 am
Мнения: 114
Мнение 
еййй - дам - верно че никаде не се описва какви пакети предавам ...
ся ще вида ...


Пет Дек 29, 2006 10:28 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 37 мнения ]  Отиди на страница 1, 2, 3  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни