.


:




:

































 

 

 

 


- 18




- PIC18 MCC18 , 18 ANSI C. . 1. adc.h.

1

18

OpenADC()
SetChanADC() ,
ConvertADC()
BusyADC() ,
ReadADC()
CloseADC()

 

OpenADC(), :

OpenADC(ADC_FOSC_4 & ADC_RIGHT_JUST & ADC_1ANA_ 0REF,

ADC_CH0 & ADC_INT_OFF);

, FOSC 4; -; AN0, UREF+ = UDD, UREF- = USS; 0 ( AN0); .

SetChanADC() , . :

void SetChanADC(unsigned char channel);

: channel

ADC_CH0 0

ADC_CH1 1

ADC_CH2 2

.

, :

SetChanADC(ADC_CH0);

0, .. AN0 ( RA0 ).

ConvertADC() () -. :

void ConvertADC(void);

BusyADC() ? (-, ?). :

char BusyADC(void);

1, ( ), 0, ( ).

ReadADC() -. :

int ReadADC(void);

, 10- . , OpenADC().

CloseADC() . :

void CloseADC(void);

, .

- :

OpenADC();

SetChanADC();

20 -;

ConvertADC();

BusyADC() ( );

- ReadADC().

 


18. - PIC-: , 18.

t Q:

Q = T / t

.

γ, , :

γ = 1 / Q = t / T

:

γ = (t / T) 100%

Duty Cycle ( ).

PIC18 , - (). - 1 5.

18 . .1 . pwm.h.

1

ClosePWMx
OpenPWMx
SetDCPWMx

 

1.

ClosePWM1() 1. :

void ClosePWM1(void);

OpenPWM1() 1, . 2. :

void OpenPWM1(char period);

period 000 0xFF.

SetDCPWM1() 1. :

void SetDCPWM1(unsigned int dutycycle);

dutycycle 10- . 10 dutycycle .

unsigned int i=512;

void init(void); //

void main(void)

{

init();

SetDCPWM1(i);

while(1);

}

void init(void) //

{

PORTC = 0;

TRISC = 0;

OpenTimer2(TIMER_INT_OFF & T2_PS_1_1 & T2_POST_1_1);

// 2 :

// ,

// 1, 1

OpenPWM1(0xFF); // 0xFF

SetDCPWM1(0); // ( ) =0


19. PIC18: , , 18.

PIC18 , . 000008h, 000018h.

:

, , ;

, ;

, .

. , ISR. ISR .

18.

, ISR . ISR - , :

void isr(void)

{

..

}

ISR , -.

18 ISR . , , , ISR . , : 000008h 000018h .

GOTO ISR. in-line , _asm _endasm:

_asm

//

_endasm

#pragma code section_name = address

section_name , address (integer).

#pragma code

18 :

#pragma interrupt fname

#pragma interruptlow fname

#pragma interrupt , #pragma interruptlow .

18.

#include <p18fxxx.h>

void high_isr(void); // ISR

void low_isr(void); // ISR

#pragma interrupt high_isr // high_isr

#pragma interruptlow low_isr // low_isr

#pragma code high_vector = 0x08 // 000008h

void high_interrupt(void)

{

_asm

goto high_isr // high_isr

_endasm

}

#pragma code low_vector = 0x18 // 000018h

void low_iterrupt(void)

{

_asm

goto low_isr // low_isr

_endasm

}

#pragma code //

..

void main(void) //

{

..

}

void high_isr(void) //

{

}

void low_isr(void) //

{

.

}

PIC18 IPEN, RCON.

IPEN = 0, , . , , .. 000008h. () GIE = 1, INTCON.

IPEN = 1, . () GIEH = 1. GIEL = 1. INTCON.

 

20. PIC-.

, , -, , -, . () , , , . . 1, . , , . , , 3 a, b, c, d g, e f . F a, e, f g, b, c d.

() (). . 1,, . . 1, .

 

. 1. : ) - ; ) (); ) (); ) -

, , . :

1) ;

2) .

, . 5141 5142, . 5141 , 5142 . , 0 9. - .

, D7, D6,, D0 . , 1, . , . 1.

0 9

 

D7 - h D6 g D5 f D4 e D3 d D2 c D1 -b D0 a HEX -
3F 6F

.

() . , . ( ) .

: ().

. , , , , .

() , , , 20 , . , .

 

rom near char table[ ] =

{

0x3F, 0x06, 0x5B,0x4F, 0x66, 0x6D,0x7D,0x07, 0x7F, 0x6F,

};

char count; // -

void main(void)

{

char select; // ( )

char a; // -

PORTB = 0xFF;

TRISB = 0; //

PORTC = 0;

TRISC = 0; //

count = 0;

while(1) //

{

/* */

POTRB = 0xFF; //

PORTC = table[ count ]; //

PORTB &= 0b11110000; //

Delay10KTCYx(50); // 0,5

/* */

select = 0b11111110; // 1-

for (a = 0; a < 4; a++)

{

POTRB = 0xFF; //

PORTC = table[ count ]; //

PORTB = select; //

select = (select << 1) | 0b00000001; // 1

Delay10KTCYx(50); // 0,5

}

count++; //

if(count >= 10)

count = 0;

} }

24) CodeVisionAVR: , CVAVR, .

CodeVisionAVR (IDE Integrated Development Environment), - , (CodeWizardAVR) . CodeVisionAVR ( CVAVR) AVR Atmel.

CodeVisionAVR , AVR, , AVR.

CVAVR , CVAVR . , :

1) .

2) .

3) , , .

4) , .

count.c . ATmega16 /, : PORTA, PORTB, PORTC, PORTD. 1 .

 

count.c

#include<mega16.h> // ATmega16

unsigned char count; // count

//

void main(void)

{

DDRB = 0xFF; //

PORTB = 0; //

count = 1;

while(1) //

{

PORTB = count; // count

count++; // count

}

Debug. , . Step Into F11. Step Into. count.c ,

DDRB = 0xFF;

25) CodeVisionAVR : , , , .

AVR CodeVisionAVR , - CodeWizardAVR.

CodeWizardAVR , :

;

/;

;

/;

Watchdog;

UART (USART);

;

;

SPI, I2C, 1-Wire;

LCD- .

CodeWizardAVR , untitled.cwp.

, . .

CodeWizardAVR . . CodeWizardAVR .

Program Preview ( ), , CodeWizardAVR.

3.1.3. CodeWizardAVR Chip () ATmega16 8,000000 . .

Ports (). Port B ( ) 1- (Bit 1) (In). , P . , .

Port D ( D) 1- (Bit 1) (Out). 1. , 1- D , VD1 . D .

, .

3.1.4. . Program. Generate Code for Disabled Peripherals ( ). . Generate, Save and Exit (, ) .

Save C Compiler Source File ( ), . AVR . , > . Led_sb (_) , . , Led_sb.

.c, , led_sb.c .

Save C Compiler Project File ( ). .prj (led_sb.prj) .

, , Save untitled.cwp As ( ). CodeWizardAVR .cwp (led_sb.cwp) .

CodeWizardAVR .

3.1.5. . , CodeWizardAVR , , CodeWizardAVR.

CodeWizardAVR , , . , CodeWizardAVR , , , , . .

, SB1 VD1 , . , 1- D ( 0). ( 1), . SB1 1- ( 1), ( 0). 1- D 1- , :

PORTD.1 = PINB.1;

while(1), , , CodeWizardAVR // Place your code here ( ).

3.1.6. while(1):

.

while(1)

{

// Place your code here

PORTD.1 = PINB.1;

}

..


26. CAN: , CAN.

CAN (Controller Area Network , ) 80- Bosch , .

CAN. , . : CAN- (). CAN, ( ).

, CAN , .

. CAN-. , CAN-, TxD RxD . , 0 1, , , CAN_H CAN_L. 108-132 . R 120 . , GND. UCC ( UDD) +5 GND.

CAN ( 0 1) (recessive) (dominant). , , , .

( 1 TxD ) UDIFF =UCANH UCANL (0,5 0,05 ).

( 0 TxD ) UDIFF (0,9 1,5 ).

CAN. : 94 . CAN- , . . CAN- 80. , , .

, CAN-, . 4 :

1) (Data Frame), ; (2) (Remote Frame), ;

(3) (Error Frame), ; (4) (Overload Frame), Data Frame Remote Frame, , .

Data Frame . :

 (Start of Frame SOF) , .

 (Arbitration Field) 11- ID RTR ( ). .

 (Control Field) . . .

 (Data Field) .

 (CRC Field) (15 ) - .

 (ACK Field) . Slot . , , . - .

 (EOF End of Frame) .

(EOF) (Intermission Field), . .


 

27. CAN: , , .

CAN. CAN CSMA. , , CAN (C S ) , . (M A) , CAN-, , , . , , , . . Ethernet , . . CAN -. , CAN , . , . , . . , CAN- Ȼ, , 0 - , 1 - , . , . 1 ( 0), , .

. CAN . CAN 5 . .

(CRC Error). 15- CRC . , CRC . . , .

(Acknowledgement Error). ACK Field ( 0). , . ( 1), , .

(Form Error). CAN . , .

(Bit Error). , . , . , .

(Stuff Error). CAN . . 5 , .

CAN :

1) (TEC); (2) (REC).

CAN :

1) ; (2) ; (3) .

. CAN, . . . 6 , . , 127. .

. , 127. , . 6- , , .

. , 255. , .

. CAN , , . , . , , . . tDEL, tBUS, tTRANSM tRECEIVE. , , - .

ISO 11898 , 1 / CAN 40 . 1 / 9 .


 

28. : () (). .

() , - , , - : , , . , , - .

() , . , .

, , , .

() , ().





:


: 2016-10-27; !; : 1007 |


:

:

.
==> ...

1776 - | 1623 -


© 2015-2024 lektsii.org - -

: 0.137 .