⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c328r.h

📁 Header file to handle the C328R jpeg camera using atmel atmega88 uart.
💻 H
字号:

// ------------------------------------- C328R camera module header file -------------------------------------

enum mode {CMD,CAMERA_JPEG_DATA,CAMERA_JPEG_DATA_REMAINDER,CAMERA_PREVIEW_DATA};
enum mode MODE;
//unsigned volatile int picture_address;	// ez kell, csak itt a general.h fileban van deklar醠va
#define CAMERA_DATA_PACKAGE CAMERA_DATA_LENGTH+6

#define INIT_ID			0x01
#define GET_PICTURE_ID	0x04
#define SNAPSHOT_ID		0x05
#define SETPS_ID		0x06
#define SETBR_ID		0x07
#define RESET_ID		0x08
#define POFF_ID			0x09
#define DATA_ID			0x0A
#define SYNC_ID			0x0D
#define ACK_ID			0x0E
#define NACK_ID			0x0F
#define LIGHTF_ID		0x13

#define JPEG_640x480		0x07,0x01,0x07
#define JPEG_320x240		0x07,0x01,0x05
#define JPEG_160x128		0x07,0x01,0x03
#define JPEG_80x64			0x07,0x01,0x01
#define _8BITGS_80x60		0x03,0x01,0x01
#define _8BITGS_160x120		0x03,0x03,0x01
#define _4BITGS_80x60		0x02,0x01,0x01
#define _4BITGS_160x120

void SendCameraCmd(unsigned char cyclenumber,unsigned char delaynumber,unsigned char idH,unsigned char idL,unsigned char par1,unsigned char par2,unsigned char par3,unsigned char par4)
 {
 unsigned char trynumber=0;
 ACK=0;
 NACK=0;
 while((ACK==0) && (NACK==0) && (trynumber<cyclenumber))
 	{
	while ( !( UCSR0A & (1<<UDRE0)) );	// megv醨ja m韌 黵es lesz a transmit buffer
	UDR0=idH;	
	while ( !( UCSR0A & (1<<UDRE0)) );
	UDR0=idL;
	while ( !( UCSR0A & (1<<UDRE0)) );
	UDR0=par1;
	while ( !( UCSR0A & (1<<UDRE0)) );
	UDR0=par2;
	while ( !( UCSR0A & (1<<UDRE0)) );
	UDR0=par3;
	while ( !( UCSR0A & (1<<UDRE0)) );
	UDR0=par4;
	for(unsigned char i=0;i<delaynumber; i++ ) DELAY_1MS_10MHZ;
	trynumber++;			// timegap for the camera response
	}
 }

void ReceiveCameraAck(unsigned char ack)
 {
 while(!ack) _NOP();
 ack=0;
 }

void UsartInit_14400(void)  //10 MHz CLK frekvencia 
 { 
 UCSR0A= (1<<U2X0);
 UBRR0H = 0;
 UBRR0L = 86;
 UCSR0B = (1 << RXEN0) | (1 << TXEN0) | (1 << RXCIE0); // receive/transmit enged閘yez閟, receive complete interrupt enged閘yezve
 UCSR0C = (0 << USBS0) | (1 << UCSZ01) | (1 << UCSZ00);	// 1 stop bit, 8 adatbit keretenk閚t
 }

 void UsartInit_115200(void)  //10 MHz CLK frekvencia 
 { 
 UCSR0A= (1<<U2X0);
 UBRR0H = 0;
 UBRR0L = 10;
 UCSR0B = (1 << RXEN0) | (1 << TXEN0) | (1 << RXCIE0); // receive/transmit enged閘yez閟, receive complete interrupt enged閘yezve
 UCSR0C = (0 << USBS0) | (1 << UCSZ01) | (1 << UCSZ00);	// 1 stop bit, 8 adatbit keretenk閚t
 }

void C328RCameraInit(unsigned char firstinit)	// el鮰te az USART-ot 14400 baud rate-re kell inicializ醠ni!!!
 {
// if(firstinit)
 	{
 UsartInit_14400();
 SendCameraCmd(60,25,0xAA,SYNC_ID,0x00,0x00,0x00,0x00);				//	SYNC
// ReceiveCameraAck(SYNC_ACK);	
 SendCameraCmd(3,10,0xAA,SETBR_ID,0x0F,0x01,0x00,0x00);					//	SETBR (115200br)
 ReceiveCameraAck(SETBR_ACK);
 UsartInit_115200();
 } 
 SendCameraCmd(1,10,0xAA,LIGHTF_ID,0x00,0x00,0x00,0x00);
 ReceiveCameraAck(LIGHTF_ACK);
 if (firstinit)
 	{
 	cli();
 	LED2_ON;
 	for (unsigned int s=0;s<2000;s++) DELAY_1MS_10MHZ;		// az els

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -