Subversion Repositories svnkaklik

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1 → Rev 2

/roboti/istrobot/3Orbis/bak/08 2.funkcni/slave/cidla.BAK
0,0 → 1,159
#include ".\cidla.h"
//#include <stdlib.h>
 
#use rs232(baud=9600,parity=N,xmit=PIN_B3,bits=8,restart_wdt)
 
#define IRRX PIN_B0
 
#define TRESHOLD_MAX 60 // rozhodovaci uroven pro cidla cerna/bila
#define TRESHOLD_MIN 40
#define CIHLA 10 // doba, po kterou musi byt detekovana cihla
 
unsigned int8 radius; // co cidla vidi
unsigned int8 last_radius; // rozsah
unsigned int8 last_cidla; // co cidla videla minule
unsigned int8 shure; // citac doby, po kterou musi byt detekovana cihla
 
//tuning
/*#define PULZACE 3 // urcuje rychlost pulzovani pomoci PWM
 
//Vystup PWM je na PIN_B3
////////////////////////////////////////////////////////////////////////////////
void pulzovani() // postupne rozsvecuje a zhasina podsvetleni
{
unsigned int8 i,n;
for(n=0;n<=3;n++)
{
for(i=0;i<255;i++) {set_pwm1_duty(i); Delay_ms(PULZACE);} // rozsvecovani
for(i=255;i>0;i--) {set_pwm1_duty(i); Delay_ms(PULZACE);} // zhasinani
}
}
*/
////////////////////////////////////////////////////////////////////////////////
void main()
{
int8 cidla;
unsigned int8 a;
unsigned int8 n;
 
setup_adc_ports(sAN0|sAN1|sAN2|sAN3|sAN4|sAN5|sAN6|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(SPI_SLAVE|SPI_H_TO_L|SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
 
last_radius=0b00001000; // minimalni rozsah snimani od stredu
last_cidla=0b00001000;
 
// diagnostika
printf("\n\r");
Delay_ms(100);
printf("***\n\r");
Delay_ms(100);
for (n=0; n<=6; n++)
{
set_adc_channel(n);
Delay_ms(100);
a=read_adc();
printf("sensor %u - %u\n\r",n,a);
}
 
shure=0;
while(true)
{
set_adc_channel(0);
cidla=0;
Delay_us(10);
a=read_adc();
 
set_adc_channel(1);
if(a<TRESHOLD_MAX) //hystereze cidel
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00000001);
}
else cidla |= 0b00000001;
}
 
a=read_adc();
 
set_adc_channel(2);
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00000010);
}
else cidla |= 0b00000010;
}
 
a=read_adc();
 
set_adc_channel(3);
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00000100);
}
else cidla |= 0b00000100;
}
 
a=read_adc();
 
set_adc_channel(4);
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00001000);
}
else cidla |= 0b00001000;
}
a=read_adc();
 
set_adc_channel(5);
 
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00010000);
}
else cidla |= 0b00010000;
}
a=read_adc();
 
set_adc_channel(6);
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00100000);
}
else cidla |= 0b00100000;
}
a=read_adc();
 
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |=(last_cidla & 0b01000000);
}
else cidla |= 0b01000000;
}
 
last_cidla=cidla;
 
if (!input(IRRX)) {if (shure<255) shure++;} else {shure=0;};
if (shure>CIHLA) cidla|=0b10000000;
 
cidla=~cidla;
spi_write(cidla);
}
}
/roboti/istrobot/3Orbis/bak/08 2.funkcni/slave/cidla.HEX
0,0 → 1,71
:1000000000308A00B12800000A108A100A11820705
:100010000A340D3400340A108A100A1182072A3477
:100020002A342A340A340D3400340A108A100A1192
:100030008207733465346E3473346F347234203411
:100040002534753420342D342034253475340A3465
:100050000D34003483168611831286110830F8009F
:10006000000000000000F8174428F813AA0C031839
:100070008615031C8611781744287813F80B362848
:1000800000000000000086151C308400840B462808
:10009000000000006400F81B3528781B3D28003460
:1000A000273084000008031966280130F800BF30AB
:1000B000F7006400F70B5928F80B57284A30F7006F
:1000C000F70B602800006400800B552800342B08D3
:1000D000F8012A0203186F282A08F7007B28F70185
:1000E0000830AC00AA0DF70D2B0877020318F700B3
:1000F000F80DAC0B7228003478082808AA00643088
:10010000AB0067207708A80078083030031D8F28DF
:10011000A91C9628A9199628291A20309228A911D5
:1001200029122914F8077808AA002A202808AA000A
:100130000A30AB0067207708A80078083030031D2C
:10014000A728A919AB28291CAB28291A2030F807A1
:100150007808AA002A203030A8072808AA002A20F8
:10016000003484011F308305603083168F008611B0
:100170008312861583161F129F121B0880399B005D
:1001800007309C001F129F121B0880397F389B008C
:100190001F1383121F179F1783169F1383121F1499
:1001A00094128316061186140616353083129400B5
:1001B0004030831694000108C73908388100831243
:1001C00090010030F8009200003083169200073052
:1001D0009C00050864000230F700F70BED280000D2
:1001E00000001C0883120D1383169D010830831232
:1001F000A100A200A7012708042000380319042940
:10020000A70AAA002A20FB286430A7005020A701D3
:1002100027080B20003803191129A70AAA002A2051
:1002200008296430A7005020A6012608063C031CBC
:100230005129260DF700F70DF70DF830F7051F08C7
:10024000C73977049F006430A70050201F151F197D
:1002500027291E08A500A70127081520A70AF700CF
:10026000AA002A2007302702031D2C292608A800EF
:100270001B30A9007C202030AA002A202D30AA00A3
:100280002A202030AA002A202508A8001B30A90017
:100290007C200A30AA002A200D30AA002A20A60AB3
:1002A0001529A3010030F8001F08C73978049F0002
:1002B000A40164000230F700F70B5C290000000085
:1002C0001F151F1961291E08A5000830F8001F0816
:1002D000C73978049F002508453C031C7829250868
:1002E000323C0318772922080139A4047829241400
:1002F0001F151F1979291E08A5001030F8001F08C6
:10030000C73978049F002508453C031C902925081F
:10031000323C03188F2922080239A4049029A4141E
:100320001F151F1991291E08A5001830F8001F0875
:10033000C73978049F002508453C031CA8292508D7
:10034000323C0318A72922080439A404A82924153B
:100350001F151F19A9291E08A5002030F8001F0825
:10036000C73978049F002508453C031CC02925088F
:10037000323C0318BF2922080839A404C029A41557
:100380001F151F19C1291E08A5002830F8001F08D5
:10039000C73978049F002508453C031CD829250847
:1003A000323C0318D72922081039A404D82924166E
:1003B0001F151F19D9291E08A5003030F8001F0885
:1003C000C73978049F002508453C031CF0292508FF
:1003D000323C0318EF2922082039A404F029A4167E
:1003E0001F151F19F1291E08A5002508453C031CEF
:1003F000022A2508323C0318012A22084039A404A5
:10040000022A24172408A200831606148312061851
:100410000E2A230F0C2A0D2AA30A0F2AA301230850
:100420000A3C031CA417A40924089300831614187B
:0C0430001B2A8312162A83125229630033
:04400E00383FFC3FFC
:00000001FF
;PIC16F88
/roboti/istrobot/3Orbis/bak/08 2.funkcni/slave/cidla.LST
0,0 → 1,617
CCS PCM C Compiler, Version 3.245, 27853 23-IV-06 01:20
 
Filename: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.lst
 
ROM used: 542 words (13%)
Largest free fragment is 2048
RAM used: 13 (7%) at main() level
18 (10%) worst case
Stack: 2 locations
 
*
0000: MOVLW 00
0001: MOVWF 0A
0002: GOTO 0B1
0003: NOP
.................... #include ".\cidla.h"
.................... #include <16F88.h>
.................... //////// Standard Header file for the PIC16F88 device ////////////////
.................... #device PIC16F88
.................... #list
....................
.................... #device adc=8
.................... #fuses NOWDT,INTRC_IO, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO
.................... #use delay(clock=4000000,RESTART_WDT)
*
0050: MOVLW 27
0051: MOVWF 04
0052: MOVF 00,W
0053: BTFSC 03.2
0054: GOTO 066
0055: MOVLW 01
0056: MOVWF 78
0057: MOVLW BF
0058: MOVWF 77
0059: CLRWDT
005A: DECFSZ 77,F
005B: GOTO 059
005C: DECFSZ 78,F
005D: GOTO 057
005E: MOVLW 4A
005F: MOVWF 77
0060: DECFSZ 77,F
0061: GOTO 060
0062: NOP
0063: CLRWDT
0064: DECFSZ 00,F
0065: GOTO 055
0066: RETLW 00
....................
....................
.................... //#include <stdlib.h>
....................
.................... #use rs232(baud=9600,parity=N,xmit=PIN_B3,bits=8,restart_wdt)
*
002A: BSF 03.5
002B: BCF 06.3
002C: BCF 03.5
002D: BCF 06.3
002E: MOVLW 08
002F: MOVWF 78
0030: NOP
0031: NOP
0032: NOP
0033: BSF 78.7
0034: GOTO 044
0035: BCF 78.7
0036: RRF 2A,F
0037: BTFSC 03.0
0038: BSF 06.3
0039: BTFSS 03.0
003A: BCF 06.3
003B: BSF 78.6
003C: GOTO 044
003D: BCF 78.6
003E: DECFSZ 78,F
003F: GOTO 036
0040: NOP
0041: NOP
0042: NOP
0043: BSF 06.3
0044: MOVLW 1C
0045: MOVWF 04
0046: DECFSZ 04,F
0047: GOTO 046
0048: NOP
0049: NOP
004A: CLRWDT
004B: BTFSC 78.7
004C: GOTO 035
004D: BTFSC 78.6
004E: GOTO 03D
004F: RETLW 00
....................
.................... #define IRRX PIN_B0
....................
.................... #define TRESHOLD_MAX 70 // rozhodovaci uroven pro cidla cerna/bila
.................... #define TRESHOLD_MIN 50
.................... #define CIHLA 10 // doba, po kterou musi byt detekovana cihla
....................
.................... unsigned int8 radius; // co cidla vidi
.................... unsigned int8 last_radius; // rozsah
.................... unsigned int8 last_cidla; // co cidla videla minule
.................... unsigned int8 shure; // citac doby, po kterou musi byt detekovana cihla
....................
.................... //tuning
.................... /*#define PULZACE 3 // urcuje rychlost pulzovani pomoci PWM
....................
.................... //Vystup PWM je na PIN_B3
.................... ////////////////////////////////////////////////////////////////////////////////
.................... void pulzovani() // postupne rozsvecuje a zhasina podsvetleni
.................... {
.................... unsigned int8 i,n;
.................... for(n=0;n<=3;n++)
.................... {
.................... for(i=0;i<255;i++) {set_pwm1_duty(i); Delay_ms(PULZACE);} // rozsvecovani
.................... for(i=255;i>0;i--) {set_pwm1_duty(i); Delay_ms(PULZACE);} // zhasinani
.................... }
.................... }
.................... */
.................... ////////////////////////////////////////////////////////////////////////////////
.................... void main()
.................... {
*
00B1: CLRF 04
00B2: MOVLW 1F
00B3: ANDWF 03,F
00B4: MOVLW 60
00B5: BSF 03.5
00B6: MOVWF 0F
00B7: BCF 06.3
00B8: BCF 03.5
00B9: BSF 06.3
00BA: BSF 03.5
00BB: BCF 1F.4
00BC: BCF 1F.5
00BD: MOVF 1B,W
00BE: ANDLW 80
00BF: MOVWF 1B
00C0: MOVLW 07
00C1: MOVWF 1C
.................... int8 cidla;
.................... unsigned int8 a;
.................... unsigned int8 n;
....................
.................... setup_adc_ports(sAN0|sAN1|sAN2|sAN3|sAN4|sAN5|sAN6|VSS_VDD);
00C2: BCF 1F.4
00C3: BCF 1F.5
00C4: MOVF 1B,W
00C5: ANDLW 80
00C6: IORLW 7F
00C7: MOVWF 1B
.................... setup_adc(ADC_CLOCK_INTERNAL);
00C8: BCF 1F.6
00C9: BCF 03.5
00CA: BSF 1F.6
00CB: BSF 1F.7
00CC: BSF 03.5
00CD: BCF 1F.7
00CE: BCF 03.5
00CF: BSF 1F.0
.................... setup_spi(SPI_SLAVE|SPI_H_TO_L|SPI_SS_DISABLED);
00D0: BCF 14.5
00D1: BSF 03.5
00D2: BCF 06.2
00D3: BSF 06.1
00D4: BSF 06.4
00D5: MOVLW 35
00D6: BCF 03.5
00D7: MOVWF 14
00D8: MOVLW 40
00D9: BSF 03.5
00DA: MOVWF 14
.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
00DB: MOVF 01,W
00DC: ANDLW C7
00DD: IORLW 08
00DE: MOVWF 01
.................... setup_timer_1(T1_DISABLED);
00DF: BCF 03.5
00E0: CLRF 10
.................... setup_timer_2(T2_DISABLED,0,1);
00E1: MOVLW 00
00E2: MOVWF 78
00E3: MOVWF 12
00E4: MOVLW 00
00E5: BSF 03.5
00E6: MOVWF 12
.................... setup_comparator(NC_NC_NC_NC);
00E7: MOVLW 07
00E8: MOVWF 1C
00E9: MOVF 05,W
00EA: CLRWDT
00EB: MOVLW 02
00EC: MOVWF 77
00ED: DECFSZ 77,F
00EE: GOTO 0ED
00EF: NOP
00F0: NOP
00F1: MOVF 1C,W
00F2: BCF 03.5
00F3: BCF 0D.6
.................... setup_vref(FALSE);
00F4: BSF 03.5
00F5: CLRF 1D
....................
.................... last_radius=0b00001000; // minimalni rozsah snimani od stredu
00F6: MOVLW 08
00F7: BCF 03.5
00F8: MOVWF 21
.................... last_cidla=0b00001000;
00F9: MOVWF 22
....................
.................... // diagnostika
.................... printf("\n\r");
00FA: CLRF 27
00FB: MOVF 27,W
00FC: CALL 004
00FD: IORLW 00
00FE: BTFSC 03.2
00FF: GOTO 104
0100: INCF 27,F
0101: MOVWF 2A
0102: CALL 02A
0103: GOTO 0FB
.................... Delay_ms(100);
0104: MOVLW 64
0105: MOVWF 27
0106: CALL 050
.................... printf("***\n\r");
0107: CLRF 27
0108: MOVF 27,W
0109: CALL 00B
010A: IORLW 00
010B: BTFSC 03.2
010C: GOTO 111
010D: INCF 27,F
010E: MOVWF 2A
010F: CALL 02A
0110: GOTO 108
.................... Delay_ms(100);
0111: MOVLW 64
0112: MOVWF 27
0113: CALL 050
.................... for (n=0; n<=6; n++)
0114: CLRF 26
0115: MOVF 26,W
0116: SUBLW 06
0117: BTFSS 03.0
0118: GOTO 151
.................... {
.................... set_adc_channel(n);
0119: RLF 26,W
011A: MOVWF 77
011B: RLF 77,F
011C: RLF 77,F
011D: MOVLW F8
011E: ANDWF 77,F
011F: MOVF 1F,W
0120: ANDLW C7
0121: IORWF 77,W
0122: MOVWF 1F
.................... Delay_ms(100);
0123: MOVLW 64
0124: MOVWF 27
0125: CALL 050
.................... a=read_adc();
0126: BSF 1F.2
0127: BTFSC 1F.2
0128: GOTO 127
0129: MOVF 1E,W
012A: MOVWF 25
.................... printf("sensor %u - %u\n\r",n,a);
012B: CLRF 27
012C: MOVF 27,W
012D: CALL 015
012E: INCF 27,F
012F: MOVWF 77
0130: MOVWF 2A
0131: CALL 02A
0132: MOVLW 07
0133: SUBWF 27,W
0134: BTFSS 03.2
0135: GOTO 12C
0136: MOVF 26,W
0137: MOVWF 28
0138: MOVLW 1B
0139: MOVWF 29
013A: CALL 07C
013B: MOVLW 20
013C: MOVWF 2A
013D: CALL 02A
013E: MOVLW 2D
013F: MOVWF 2A
0140: CALL 02A
0141: MOVLW 20
0142: MOVWF 2A
0143: CALL 02A
0144: MOVF 25,W
0145: MOVWF 28
0146: MOVLW 1B
0147: MOVWF 29
0148: CALL 07C
0149: MOVLW 0A
014A: MOVWF 2A
014B: CALL 02A
014C: MOVLW 0D
014D: MOVWF 2A
014E: CALL 02A
.................... }
014F: INCF 26,F
0150: GOTO 115
....................
.................... shure=0;
0151: CLRF 23
.................... while(true)
.................... {
.................... set_adc_channel(0);
0152: MOVLW 00
0153: MOVWF 78
0154: MOVF 1F,W
0155: ANDLW C7
0156: IORWF 78,W
0157: MOVWF 1F
.................... cidla=0;
0158: CLRF 24
.................... Delay_us(10);
0159: CLRWDT
015A: MOVLW 02
015B: MOVWF 77
015C: DECFSZ 77,F
015D: GOTO 15C
015E: NOP
015F: NOP
.................... a=read_adc();
0160: BSF 1F.2
0161: BTFSC 1F.2
0162: GOTO 161
0163: MOVF 1E,W
0164: MOVWF 25
....................
.................... set_adc_channel(1);
0165: MOVLW 08
0166: MOVWF 78
0167: MOVF 1F,W
0168: ANDLW C7
0169: IORWF 78,W
016A: MOVWF 1F
.................... if(a<TRESHOLD_MAX) //hystereze cidel
016B: MOVF 25,W
016C: SUBLW 45
016D: BTFSS 03.0
016E: GOTO 178
.................... {
.................... if(a>TRESHOLD_MIN)
016F: MOVF 25,W
0170: SUBLW 32
0171: BTFSC 03.0
0172: GOTO 177
.................... {
.................... cidla |= (last_cidla & 0b00000001);
0173: MOVF 22,W
0174: ANDLW 01
0175: IORWF 24,F
.................... }
.................... else cidla |= 0b00000001;
0176: GOTO 178
0177: BSF 24.0
.................... }
....................
.................... a=read_adc();
0178: BSF 1F.2
0179: BTFSC 1F.2
017A: GOTO 179
017B: MOVF 1E,W
017C: MOVWF 25
....................
.................... set_adc_channel(2);
017D: MOVLW 10
017E: MOVWF 78
017F: MOVF 1F,W
0180: ANDLW C7
0181: IORWF 78,W
0182: MOVWF 1F
.................... if(a<TRESHOLD_MAX)
0183: MOVF 25,W
0184: SUBLW 45
0185: BTFSS 03.0
0186: GOTO 190
.................... {
.................... if(a>TRESHOLD_MIN)
0187: MOVF 25,W
0188: SUBLW 32
0189: BTFSC 03.0
018A: GOTO 18F
.................... {
.................... cidla |= (last_cidla & 0b00000010);
018B: MOVF 22,W
018C: ANDLW 02
018D: IORWF 24,F
.................... }
.................... else cidla |= 0b00000010;
018E: GOTO 190
018F: BSF 24.1
.................... }
....................
.................... a=read_adc();
0190: BSF 1F.2
0191: BTFSC 1F.2
0192: GOTO 191
0193: MOVF 1E,W
0194: MOVWF 25
....................
.................... set_adc_channel(3);
0195: MOVLW 18
0196: MOVWF 78
0197: MOVF 1F,W
0198: ANDLW C7
0199: IORWF 78,W
019A: MOVWF 1F
.................... if(a<TRESHOLD_MAX)
019B: MOVF 25,W
019C: SUBLW 45
019D: BTFSS 03.0
019E: GOTO 1A8
.................... {
.................... if(a>TRESHOLD_MIN)
019F: MOVF 25,W
01A0: SUBLW 32
01A1: BTFSC 03.0
01A2: GOTO 1A7
.................... {
.................... cidla |= (last_cidla & 0b00000100);
01A3: MOVF 22,W
01A4: ANDLW 04
01A5: IORWF 24,F
.................... }
.................... else cidla |= 0b00000100;
01A6: GOTO 1A8
01A7: BSF 24.2
.................... }
....................
.................... a=read_adc();
01A8: BSF 1F.2
01A9: BTFSC 1F.2
01AA: GOTO 1A9
01AB: MOVF 1E,W
01AC: MOVWF 25
....................
.................... set_adc_channel(4);
01AD: MOVLW 20
01AE: MOVWF 78
01AF: MOVF 1F,W
01B0: ANDLW C7
01B1: IORWF 78,W
01B2: MOVWF 1F
.................... if(a<TRESHOLD_MAX)
01B3: MOVF 25,W
01B4: SUBLW 45
01B5: BTFSS 03.0
01B6: GOTO 1C0
.................... {
.................... if(a>TRESHOLD_MIN)
01B7: MOVF 25,W
01B8: SUBLW 32
01B9: BTFSC 03.0
01BA: GOTO 1BF
.................... {
.................... cidla |= (last_cidla & 0b00001000);
01BB: MOVF 22,W
01BC: ANDLW 08
01BD: IORWF 24,F
.................... }
.................... else cidla |= 0b00001000;
01BE: GOTO 1C0
01BF: BSF 24.3
.................... }
.................... a=read_adc();
01C0: BSF 1F.2
01C1: BTFSC 1F.2
01C2: GOTO 1C1
01C3: MOVF 1E,W
01C4: MOVWF 25
....................
.................... set_adc_channel(5);
01C5: MOVLW 28
01C6: MOVWF 78
01C7: MOVF 1F,W
01C8: ANDLW C7
01C9: IORWF 78,W
01CA: MOVWF 1F
....................
.................... if(a<TRESHOLD_MAX)
01CB: MOVF 25,W
01CC: SUBLW 45
01CD: BTFSS 03.0
01CE: GOTO 1D8
.................... {
.................... if(a>TRESHOLD_MIN)
01CF: MOVF 25,W
01D0: SUBLW 32
01D1: BTFSC 03.0
01D2: GOTO 1D7
.................... {
.................... cidla |= (last_cidla & 0b00010000);
01D3: MOVF 22,W
01D4: ANDLW 10
01D5: IORWF 24,F
.................... }
.................... else cidla |= 0b00010000;
01D6: GOTO 1D8
01D7: BSF 24.4
.................... }
.................... a=read_adc();
01D8: BSF 1F.2
01D9: BTFSC 1F.2
01DA: GOTO 1D9
01DB: MOVF 1E,W
01DC: MOVWF 25
....................
.................... set_adc_channel(6);
01DD: MOVLW 30
01DE: MOVWF 78
01DF: MOVF 1F,W
01E0: ANDLW C7
01E1: IORWF 78,W
01E2: MOVWF 1F
.................... if(a<TRESHOLD_MAX)
01E3: MOVF 25,W
01E4: SUBLW 45
01E5: BTFSS 03.0
01E6: GOTO 1F0
.................... {
.................... if(a>TRESHOLD_MIN)
01E7: MOVF 25,W
01E8: SUBLW 32
01E9: BTFSC 03.0
01EA: GOTO 1EF
.................... {
.................... cidla |= (last_cidla & 0b00100000);
01EB: MOVF 22,W
01EC: ANDLW 20
01ED: IORWF 24,F
.................... }
.................... else cidla |= 0b00100000;
01EE: GOTO 1F0
01EF: BSF 24.5
.................... }
.................... a=read_adc();
01F0: BSF 1F.2
01F1: BTFSC 1F.2
01F2: GOTO 1F1
01F3: MOVF 1E,W
01F4: MOVWF 25
....................
.................... if(a<TRESHOLD_MAX)
01F5: MOVF 25,W
01F6: SUBLW 45
01F7: BTFSS 03.0
01F8: GOTO 202
.................... {
.................... if(a>TRESHOLD_MIN)
01F9: MOVF 25,W
01FA: SUBLW 32
01FB: BTFSC 03.0
01FC: GOTO 201
.................... {
.................... cidla |=(last_cidla & 0b01000000);
01FD: MOVF 22,W
01FE: ANDLW 40
01FF: IORWF 24,F
.................... }
.................... else cidla |= 0b01000000;
0200: GOTO 202
0201: BSF 24.6
.................... }
....................
.................... last_cidla=cidla;
0202: MOVF 24,W
0203: MOVWF 22
....................
.................... if (!input(IRRX)) {if (shure<255) shure++;} else {shure=0;};
0204: BSF 03.5
0205: BSF 06.0
0206: BCF 03.5
0207: BTFSC 06.0
0208: GOTO 20E
0209: INCFSZ 23,W
020A: GOTO 20C
020B: GOTO 20D
020C: INCF 23,F
020D: GOTO 20F
020E: CLRF 23
.................... if (shure>CIHLA) cidla|=0b10000000;
020F: MOVF 23,W
0210: SUBLW 0A
0211: BTFSS 03.0
0212: BSF 24.7
....................
.................... cidla=~cidla;
0213: COMF 24,F
.................... spi_write(cidla);
0214: MOVF 24,W
0215: MOVWF 13
0216: BSF 03.5
0217: BTFSC 14.0
0218: GOTO 21B
0219: BCF 03.5
021A: GOTO 216
.................... }
021B: BCF 03.5
021C: GOTO 152
.................... }
021D: SLEEP
 
Configuration Fuses:
Word 1: 3F38 NOWDT NOPUT MCLR NOBROWNOUT NOLVP NOCPD NOWRT NODEBUG CCPB0 NOPROTECT INTRC_IO
Word 2: 3FFC NOFCMEN NOIESO
/roboti/istrobot/3Orbis/bak/08 2.funkcni/slave/cidla.PJT
0,0 → 1,44
[PROJECT]
Target=cidla.HEX
Development_Mode=
Processor=0x688F
ToolSuite=CCS
 
[Directories]
Include=C:\Program Files\PICC\devices\;C:\Program Files\PICC\dr
Library=
LinkerScript=
 
[Target Data]
FileList=D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.c
BuildTool=C-COMPILER
OptionString=+FM
AdditionalOptionString=
BuildRequired=1
 
[cidla.c]
Type=4
Path=
FileList=
BuildTool=
OptionString=
AdditionalOptionString=
 
[mru-list]
1=cidla.c
 
[Windows]
0=0000 cidla.c 0 0 796 451 3 0
 
[Opened Files]
1=D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.c
2=C:\Program Files\PICC\devices\16F88.h
3=C:\Program Files\PICC\drivers\stdlib.h
4=C:\Program Files\PICC\drivers\stddef.h
5=C:\Program Files\PICC\drivers\string.h
6=C:\Program Files\PICC\drivers\ctype.h
7=D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.h
8=
[Units]
Count=1
1=D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.c (main)
/roboti/istrobot/3Orbis/bak/08 2.funkcni/slave/cidla.SYM
0,0 → 1,60
015 CCP_1_LOW
015-016 CCP_1
016 CCP_1_HIGH
020 radius
021 last_radius
022 last_cidla
023 shure
024 main.cidla
025 main.a
026 main.n
027 @delay_ms1.P1
027 main.@SCRATCH
028 @PRINTF_U_9600_51_41.P1
029 @PRINTF_U_9600_51_41.P1
02A @PUTCHAR_1_.P1
02A @DIV88.P2
02B @DIV88.P1
02C @DIV88.@SCRATCH
077 @SCRATCH
078 @SCRATCH
078 _RETURN_
079 @SCRATCH
07A @SCRATCH
07B @SCRATCH
09C.6 C1OUT
09C.7 C2OUT
 
0050 @delay_ms1
002A @PUTCHAR_1_
00B1 main
0004 @const10061
000B @const10066
0015 @const10079
0067 @DIV88
007C @PRINTF_U_9600_51_41
00B1 @cinit
 
Project Files:
D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.c
D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.h
C:\Program Files\PICC\devices\16F88.h
 
Units:
D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.c (main)
 
Compiler Settings:
Processor: PIC16F88
Pointer Size: 8
ADC Range: 0-255
Opt Level: 9
Short,Int,Long: 1,8,16
 
Output Files:
Errors: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.err
INHX8: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.hex
Symbols: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.sym
List: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.lst
Debug/COFF: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.cof
Call Tree: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.tre
Statistics: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.sta
/roboti/istrobot/3Orbis/bak/08 2.funkcni/slave/cidla.c
0,0 → 1,159
#include ".\cidla.h"
//#include <stdlib.h>
 
#use rs232(baud=9600,parity=N,xmit=PIN_B3,bits=8,restart_wdt)
 
#define IRRX PIN_B0
 
#define TRESHOLD_MAX 70 // rozhodovaci uroven pro cidla cerna/bila
#define TRESHOLD_MIN 50
#define CIHLA 10 // doba, po kterou musi byt detekovana cihla
 
unsigned int8 radius; // co cidla vidi
unsigned int8 last_radius; // rozsah
unsigned int8 last_cidla; // co cidla videla minule
unsigned int8 shure; // citac doby, po kterou musi byt detekovana cihla
 
//tuning
/*#define PULZACE 3 // urcuje rychlost pulzovani pomoci PWM
 
//Vystup PWM je na PIN_B3
////////////////////////////////////////////////////////////////////////////////
void pulzovani() // postupne rozsvecuje a zhasina podsvetleni
{
unsigned int8 i,n;
for(n=0;n<=3;n++)
{
for(i=0;i<255;i++) {set_pwm1_duty(i); Delay_ms(PULZACE);} // rozsvecovani
for(i=255;i>0;i--) {set_pwm1_duty(i); Delay_ms(PULZACE);} // zhasinani
}
}
*/
////////////////////////////////////////////////////////////////////////////////
void main()
{
int8 cidla;
unsigned int8 a;
unsigned int8 n;
 
setup_adc_ports(sAN0|sAN1|sAN2|sAN3|sAN4|sAN5|sAN6|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(SPI_SLAVE|SPI_H_TO_L|SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
 
last_radius=0b00001000; // minimalni rozsah snimani od stredu
last_cidla=0b00001000;
 
// diagnostika
printf("\n\r");
Delay_ms(100);
printf("***\n\r");
Delay_ms(100);
for (n=0; n<=6; n++)
{
set_adc_channel(n);
Delay_ms(100);
a=read_adc();
printf("sensor %u - %u\n\r",n,a);
}
 
shure=0;
while(true)
{
set_adc_channel(0);
cidla=0;
Delay_us(10);
a=read_adc();
 
set_adc_channel(1);
if(a<TRESHOLD_MAX) //hystereze cidel
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00000001);
}
else cidla |= 0b00000001;
}
 
a=read_adc();
 
set_adc_channel(2);
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00000010);
}
else cidla |= 0b00000010;
}
 
a=read_adc();
 
set_adc_channel(3);
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00000100);
}
else cidla |= 0b00000100;
}
 
a=read_adc();
 
set_adc_channel(4);
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00001000);
}
else cidla |= 0b00001000;
}
a=read_adc();
 
set_adc_channel(5);
 
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00010000);
}
else cidla |= 0b00010000;
}
a=read_adc();
 
set_adc_channel(6);
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |= (last_cidla & 0b00100000);
}
else cidla |= 0b00100000;
}
a=read_adc();
 
if(a<TRESHOLD_MAX)
{
if(a>TRESHOLD_MIN)
{
cidla |=(last_cidla & 0b01000000);
}
else cidla |= 0b01000000;
}
 
last_cidla=cidla;
 
if (!input(IRRX)) {if (shure<255) shure++;} else {shure=0;};
if (shure>CIHLA) cidla|=0b10000000;
 
cidla=~cidla;
spi_write(cidla);
}
}
/roboti/istrobot/3Orbis/bak/08 2.funkcni/slave/cidla.cof
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/istrobot/3Orbis/bak/08 2.funkcni/slave/cidla.err
0,0 → 1,2
No Errors
0 Errors, 0 Warnings.
/roboti/istrobot/3Orbis/bak/08 2.funkcni/slave/cidla.h
0,0 → 1,5
#include <16F88.h>
#device adc=8
#fuses NOWDT,INTRC_IO, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO
#use delay(clock=4000000,RESTART_WDT)
 
/roboti/istrobot/3Orbis/bak/08 2.funkcni/slave/cidla.sta
0,0 → 1,35
 
ROM used: 542 (13%)
542 (13%) including unused fragments
 
1 Average locations per line
6 Average locations per statement
 
RAM used: 13 (7%) at main() level
18 (10%) worst case
 
Lines Stmts % Files
----- ----- --- -----
160 93 100 D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.c
6 0 0 D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.h
279 0 0 C:\Program Files\PICC\devices\16F88.h
----- -----
890 186 Total
 
Page ROM % RAM Functions:
---- --- --- --- ----------
0 23 4 1 @delay_ms1
0 38 7 1 @PUTCHAR_1_
0 365 67 4 main
0 7 1 0 @const10061
0 10 2 0 @const10066
0 21 4 0 @const10079
0 21 4 3 @DIV88
0 53 10 2 @PRINTF_U_9600_51_41
 
Segment Used Free
--------- ---- ----
00000-00003 4 0
00004-007FF 538 1506
00800-00FFF 0 2048
 
/roboti/istrobot/3Orbis/bak/08 2.funkcni/slave/cidla.tre
0,0 → 1,29
ÀÄcidla
ÀÄmain 0/365 Ram=4
ÃÄ??0??
ÃÄ@const10061 0/7 Ram=0
ÃÄ@PUTCHAR_1_ 0/38 Ram=1
ÃÄ@delay_ms1 0/23 Ram=1
ÃÄ@const10066 0/10 Ram=0
ÃÄ@PUTCHAR_1_ 0/38 Ram=1
ÃÄ@delay_ms1 0/23 Ram=1
ÃÄ@delay_ms1 0/23 Ram=1
ÃÄ@const10079 0/21 Ram=0
ÃÄ@PUTCHAR_1_ 0/38 Ram=1
ÃÄ@PRINTF_U_9600_51_41 0/53 Ram=2
³ ÃÄ@DIV88 0/21 Ram=3
³ ÃÄ@PUTCHAR_1_ 0/38 Ram=1
³ ÃÄ@DIV88 0/21 Ram=3
³ ÃÄ@PUTCHAR_1_ 0/38 Ram=1
³ ÀÄ@PUTCHAR_1_ 0/38 Ram=1
ÃÄ@PUTCHAR_1_ 0/38 Ram=1
ÃÄ@PUTCHAR_1_ 0/38 Ram=1
ÃÄ@PUTCHAR_1_ 0/38 Ram=1
ÃÄ@PRINTF_U_9600_51_41 0/53 Ram=2
³ ÃÄ@DIV88 0/21 Ram=3
³ ÃÄ@PUTCHAR_1_ 0/38 Ram=1
³ ÃÄ@DIV88 0/21 Ram=3
³ ÃÄ@PUTCHAR_1_ 0/38 Ram=1
³ ÀÄ@PUTCHAR_1_ 0/38 Ram=1
ÃÄ@PUTCHAR_1_ 0/38 Ram=1
ÀÄ@PUTCHAR_1_ 0/38 Ram=1
/roboti/istrobot/3Orbis/bak/08 2.funkcni/slave/macro.ini