- 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. : () (). .
() , - , , - : , , . , , - .
() , . , .
, , , .
() , ().