/Designs/MRAKOMER2/SW/Ondrejov/motor/irmrak.PJT |
---|
0,0 → 1,44 |
[PROJECT] |
Target=irmrak.HEX |
Development_Mode=2 |
Processor=0x688F |
Processor_Text=PIC16F88 |
ToolSuite=CCS |
[Directories] |
Include= |
Library= |
LinkerScript= |
[Target Data] |
FileList=C:\Dokumenty\MLAB\Designs\MRAKOMER2\SW\Ondrejov\motor\irmrak.c |
BuildTool=C-COMPILER |
OptionString=+FM |
AdditionalOptionString= |
BuildRequired=1 |
[irmrak.c] |
Type=4 |
Path= |
FileList= |
BuildTool= |
OptionString= |
AdditionalOptionString= |
[mru-list] |
1=irmrak.c |
[Windows] |
0=0000 irmrak.c 0 0 796 451 3 0 |
[Opened Files] |
1=irmrak.c |
2=irmrak.h |
3=..\..\..\..\..\..\..\Program Files\PICC\devices\16F88.h |
4=..\..\..\..\..\..\..\Program Files\PICC\drivers\string.h |
5=..\..\..\..\..\..\..\Program Files\PICC\drivers\stddef.h |
6=..\..\..\..\..\..\..\Program Files\PICC\drivers\ctype.h |
7= |
[Units] |
Count=1 |
1=irmrak (main) |
/Designs/MRAKOMER2/SW/Ondrejov/motor/irmrak.c |
---|
0,0 → 1,157 |
//******** Mrakomer2 - stepper motor control ***************** |
#define VERSION "3.0" // Special version for BART |
#define ID "$Id: irmrak.c 420 2006-12-29 21:43:11Z kakl $" |
//************************************************************ |
#include "irmrak.h" |
#include <string.h> |
char VER[4]=VERSION; |
char REV[50]=ID; |
#bit CREN = 0x18.4 // USART registers |
#bit SPEN = 0x18.7 |
#bit OERR = 0x18.1 |
#bit FERR = 0x18.2 |
#define HALL PIN_A4 // Hallova sonda pro zjisteni natoceni dolu |
// vykonovy FET je na RB3 (vystup PWM) |
int port; // stav brany B pro krokove motory |
int j; // pro synchronisaci fazi |
unsigned int8 uhel; // prijaty znak |
unsigned int8 i; // pro cyklus for |
// --- Kroky krokoveho motoru --- |
void krok(int n) |
{ |
while((n--)>0) |
{ |
if (1==(j&1)) {port^=0b11000000;} else {port^=0b00110000;}; |
output_B(port); |
delay_ms(20); // Nutno nastavit podle dynamiky systemu. |
j++; |
} |
} |
// --- Dojet dolu magnetem na cidlo --- |
void dolu() |
{ |
unsigned int8 err; // pocitadlo pro zjisteni zaseknuti otaceni |
err=0; |
while(!input(HALL)) // otoceni trubky dolu az na hall |
{ |
krok(1); |
err++; |
if(40==err) // do 40-ti kroku by se melo podarit otocit dolu |
{ |
output_B(0); // vypnuti motoru |
printf("E"); // Hlasime chybu |
err=0; |
} |
}; |
delay_ms(500); // cas na ustaleni trubky |
output_B(0); // vypnuti motoru |
} |
// --- Najeti na vychozi polohu dole --- |
void nula() |
{ |
port=0b10100000; // vychozi nastaveni fazi pro rizeni motoru |
output_B(port); |
j=0; // smer dolu |
delay_ms(500); |
} |
//------------------------------------------------ |
void main() |
{ |
setup_oscillator(OSC_8MHZ|OSC_INTRC); // 8 MHz interni RC oscilator |
setup_adc_ports(NO_ANALOGS|VSS_VDD); |
setup_adc(ADC_OFF); |
setup_spi(FALSE); |
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); |
setup_timer_1(T1_DISABLED); |
setup_ccp1(CCP_OFF); |
setup_comparator(NC_NC_NC_NC); |
setup_vref(FALSE); |
output_B(0); // vypnuti motoru a topeni |
set_tris_B(0b00000111); // faze a topeni jako vystupy |
while(true) |
{ |
nula(); |
dolu(); // otoc trubku do vychozi pozice dolu |
CREN=0; CREN=1; // Reinitialise USART |
while(!kbhit()) |
{ |
if (!input(HALL)) // znovuotoceni trubky dolu, kdyby ji vitr otocil |
{ |
dolu(); |
} |
}; // pokracuj dal, kdyz prisel po RS232 znak |
uhel=getc(); // prijmi znak |
if ('m'==uhel) // standardni mereni ve trech polohach |
{ |
nula(); |
j++; // reverz, nahoru |
krok(18); |
printf("A"); // mereni teploty 45° nad obzorem |
delay_ms(200); |
krok(7); |
printf("B"); // mereni teploty v zenitu |
delay_ms(200); |
krok(7); |
printf("C"); // mereni teploty 45° nad obzorem na druhou stranu |
delay_ms(200); |
j++; // reverz |
dolu(); |
printf("G"); // mereni teploty Zeme (<G>round) |
continue; |
} |
if ('i'==uhel) {printf("I"); continue;} // Predani prikazu pro Info |
if ('h'==uhel) {printf("H"); continue;} // Predani prikazu pro Topeni |
if ('c'==uhel) {printf("C"); continue;} // Predani prikazu pro vypnuti topeni |
if ('x'==uhel) // Zjisteni verze FW |
{ |
printf("Mrakomer - Motor V%s (C) 2006 KAKL\n\r", VER); |
printf("%s\n\r", REV); |
} |
if ((uhel>='0') && (uhel<='@')) // mereni v pozadovanem uhlu [0..;]=(0..11) |
{ |
uhel-='0'; |
}; |
if(uhel>11) continue; // ochrana, abysme neukroutili draty |
nula(); |
j++; // reverz, nahoru |
krok(12); // odkrokuj do roviny |
for(i=0; i<uhel; i++) // dale odkrokuj podle pozadovaneho uhlu |
{ |
krok(2); |
}; |
printf("S"); |
delay_ms(200); |
j++; // reverz |
dolu(); |
printf("G"); // mereni teploty Zeme (<G>round) |
} |
} |
/Designs/MRAKOMER2/SW/Ondrejov/motor/irmrak.h |
---|
0,0 → 1,6 |
#include <16F88.h> |
#device adc=8 |
#fuses NOWDT,INTRC_IO, NOPUT, NOMCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO, CCPB3 |
#use delay(clock=8000000) |
#use rs232(baud=2400,parity=N,xmit=PIN_A6,rcv=PIN_A7,bits=8) |
/Designs/MRAKOMER2/SW/Ondrejov/motor/irmrak.hex |
---|
0,0 → 1,84 |
:1000000001308A00392900004D39E135EF36653974 |
:10001000A016A0266F3A6F392010D6127310A821AF |
:1000200029103218301BA025C1254C050D005E306B |
:1000300084008313000803192A280230F800F7010E |
:10004000F70B2028F80B1F289730F700F70B26280E |
:10005000800B1D280800A030D8008316860183126B |
:1000600058088600D9010230DC00FA30DE00172083 |
:10007000DC0B352808005D08DD03003A031954281D |
:1000800059080139013C031D4828C030D8064A28C8 |
:100090003030D80683168601831258088600143043 |
:1000A000DE001720D90A3B280800831605138312A7 |
:1000B00005130830F8005C280000F8176D28F813C5 |
:1000C000E00C03180517031C051378176D28781327 |
:1000D000F80B60286B28000005170130F700840139 |
:1000E000840B7028F70B6F280E308400840B762861 |
:1000F0000000F81B5F28781B67280800DC018316C6 |
:1001000005168312051A95280130DD003B20DC0A14 |
:100110005C08283C031D94288316860183128601FF |
:100120004530E0005520DC017F280230DD00FA3048 |
:10013000DE001720DD0B97288316860183128601C7 |
:1001400008000408F800831685178312851BA6286B |
:100150000830F700DC01F717BD28F713BD2803109E |
:10016000851B0314DC0C7717BD287713F70BAF281A |
:10017000780884005C08F800D22801308400003040 |
:10018000F71B5530F800F80BC328840BBF280D303F |
:10019000F71B0330F800F80BCB28F71BAD28771BB3 |
:1001A000B528AF288A11EA29831603178C170C1477 |
:1001B000000000000318032983120C087F39031381 |
:1001C000DD0003170D080313DE0003170F080313E8 |
:1001D000DF005D08E00055205E0803178D00031363 |
:1001E0005F0803178F0083168C170C1400000000A3 |
:1001F00083120313DC0BFD28002983160317032940 |
:1002000022298316031783120C0D0E0D7F39031359 |
:10021000DD0003170D080313DE0003170F08031397 |
:10022000DF005D08E00055205E0803178D00031312 |
:100230005F0803178F008D0A03198F0A0310031339 |
:10024000DC0BD4280800800803193829DD010408D4 |
:10025000DC005D10831B5D140008E00055205C0885 |
:10026000840083135D188317840A0319850A2329E0 |
:100270000800840183131F308305723083168F00BA |
:100280000F0805138312051783161F129F121B08F0 |
:1002900080399B0007309C008312A001A1013330FC |
:1002A000A2002E30A3003030A400A5012430A60007 |
:1002B0004930A7006430A8003A30A9002030AA00D5 |
:1002C0006930AB007230AC006D30AD007230AE0002 |
:1002D0006130AF006B30B0002E30B1006330B2003F |
:1002E0002030B3003430B4003230B5003030B600C6 |
:1002F0002030B7003230B8003030B900BA003630A4 |
:10030000BB002D30BC003130BD003230BE002D307E |
:10031000BF003230C0003930C1002030C20032305E |
:10032000C3003130C4003A30C5003430C600333029 |
:10033000C7003A30C8003130C900CA005A30CB007B |
:100340002030CC006B30CD006130CE006B30CF0060 |
:100350006C30D0002030D1002430D200D301723074 |
:1003600083168F000F081F129F121B0880399B00F5 |
:1003700083121F10940183160108C73908388100C1 |
:100380008312900183168615831297010730831616 |
:100390009C00050885000630F700F70BCD2900000A |
:1003A0001C0883120D1383169D018601831286019A |
:1003B00007308316860083122B207E201812181611 |
:1003C000851FE929831605168312051AE8297E2060 |
:1003D000E029A1287808DA005A086D3C031D132A89 |
:1003E0002B20D90A1230DD003B204130E00055209F |
:1003F000C830DE0017200730DD003B204230E0002F |
:100400005520C830DE0017200730DD003B20433088 |
:10041000E0005520C830DE001720D90A7E20473082 |
:10042000E0005520DC295A08693C031D1B2A49308D |
:10043000E0005520DC295A08683C031D232A483077 |
:10044000E0005520DC295A08633C031D2B2A433069 |
:10045000E0005520DC295A08783C031D512A04305D |
:1004600003178D0000308F00031013300313DC00DE |
:10047000D42022308400831323210E3003178D00F3 |
:1004800000308F00031410300313DC00D42026301A |
:100490008400831323210A30E00055200D30E00052 |
:1004A00055205A082F3C03185B2A5A08403C031C6D |
:1004B0005B2A3030DA025A080B3C031CDC292B2063 |
:1004C000D90A0C30DD003B20DB015A085B0203181F |
:1004D0006E2A0230DD003B20DB0A652A5330E00043 |
:1004E0005520C830DE001720D90A7E204730E000B2 |
:0604F0005520DC29630029 |
:04400E00182FFC3F2C |
:00000001FF |
;PIC16F88 |
;CRC=345C CREATED="20-VIII-10 19:02" |