Home 站長部落格所有文章索引 成果展示類 Wishield and Ethernet Module working with Mega Board
Wishield and Ethernet Module working with Mega Board
站長Blog文章單元 - 成果展示類
作者是 xlinx   
週四, 17 十二月 2009 15:31

Mega Board working with WiShield Module

硬體要修改五條線:

MEGA pin 50 (MISO) to WiShield pin 12.
MEGA pin 51 (MOSI) to WiShield pin 11.
MEGA pin 52 (SCK) to WiShield pin 13.
MEGA pin 53 (SS) to WiShield pin 10.

MEGA pin 21 (SCL) to WiShield pin 2. (http://www.arduino.cc/en/Reference/AttachInterrupt)

---------------------------------------------------------------------------------------------------------------------------------------

Mega Board working with Ethernet Module. Ref link

硬體要修改四條線:

MEGA pin 50 (MISO) to Arduino Ethernet Shield pin 12.
MEGA pin 51 (MOSI) to Arduino Ethernet Shield pin 11.
MEGA pin 52 (SCK) to Arduino Ethernet Shield pin 13.
MEGA pin 53 (SS) to Arduino Ethernet Shield pin 10.

 

and we also need to Modify Software Lib file "WiServer.cpp" and "WiShield.cpp" abd "spi.h"  (in hardware\libraries\wishield or hardware\libraries\ethernetLib)

 

#define SPI0_SS_BIT      BIT0            
#define SPI0_SCLK_BIT    BIT1
#define SPI0_MOSI_BIT    BIT2
#define SPI0_MISO_BIT    BIT3

#define SPI0_Init()      PRR0 = 0x00;\
                         DDRB  |= SPI0_SS_BIT|SPI0_SCLK_BIT|SPI0_MOSI_BIT|LEDConn_BIT;\
                         DDRB  &= ~SPI0_MISO_BIT;\
                         PORTB = SPI0_SS_BIT;\
                         SPCR  = 0x50;\
                         SPSR  = 0x01

#define ZG2100_CS_BIT    BIT0

Reference from

http://asynclabs.com/forums/viewtopic.php?f=13&t=80

http://asynclabs.com/forums/viewtopic.php?f=13&t=19&hilit=mega&start=10

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1235716581/285

http://mcukits.com/2009/04/06/arduino-ethernet-shield-mega-hack/

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1235716581/420

"spi.h

 

#ifndef SPI_H_ #define SPI_H_  // Uncomment one line below to // specify which Arduino pin // to use as WiShield interrupt #define USE_DIG0_INTR		// use digital pin 0 //#define USE_DIG8_INTR		// use digital pin 8   #ifdef USE_DIG0_INTR #define ZG2100_ISR_DISABLE()	(EIMSK &= ~(0x01)) #define ZG2100_ISR_ENABLE()		(EIMSK |= 0x01) #define ZG2100_ISR_GET(X)		(X = EIMSK) #define ZG2100_ISR_SET(X)		(EIMSK = X) #endif  #ifdef USE_DIG8_INTR #define ZG2100_ISR_DISABLE()	(PCMSK0 &= ~(0x01)) #define ZG2100_ISR_ENABLE()		(PCMSK0 |= 0x01) #define ZG2100_ISR_GET(X)		(X = PCMSK0) #define ZG2100_ISR_SET(X)		(PCMSK0 = X) #endif  //AVR Mega168 SPI HAL #define BIT00x01 #define BIT10x02 #define BIT20x04 #define BIT30x08 #define BIT40x10 #define BIT50x20 #define BIT60x40 #define BIT70x80  #ifdef USE_DIG8_INTR #define ZG2100_INTR						BIT0 #endif  //#define SPI0_SS_BIT						BIT2 #define SPI0_SS_BIT						BIT0 #define SPI0_SS_DDR						DDRB #define SPI0_SS_PORT					PORTB  //#define SPI0_SCLK_BIT					BIT5 #define SPI0_SCLK_BIT					BIT1 #define SPI0_SCLK_DDR					DDRB #define SPI0_SCLK_PORT					PORTB  //#define	SPI0_MOSI_BIT					BIT3 #define	SPI0_MOSI_BIT					BIT2 #define SPI0_MOSI_DDR					DDRB #define SPI0_MOSI_PORT					PORTB  //#define	SPI0_MISO_BIT					BIT4 #define	SPI0_MISO_BIT					BIT3 #define SPI0_MISO_DDR					DDRB #define SPI0_MISO_PORT					PORTB   #define SPI0_WaitForReceive() #define SPI0_RxData()	 				(SPDR)  #define SPI0_TxData(Data)				(SPDR = Data) #define SPI0_WaitForSend()				while( (SPSR & 0x80)==0x00 )  #define SPI0_SendByte(Data)				SPI0_TxData(Data);SPI0_WaitForSend() #define SPI0_RecvBute()					SPI0_RxData()  // PB4(MISO), PB3(MOSI), PB5(SCK), PB2(/SS)         // CS=1, waiting for SPI start // SPI mode 0, 8MHz  #ifdef USE_DIG8_INTR #define SPI0_Init()						DDRB  |= SPI0_SS_BIT|SPI0_SCLK_BIT|SPI0_MOSI_BIT|LEDConn_BIT;\ 			DDRB  &= ~(SPI0_MISO_BIT|ZG2100_INTR);\ 			PORTB = SPI0_SS_BIT;\ 			SPCR  = 0x50;\ 			SPSR  = 0x01 #else #define SPI0_Init()						PRR0 = 0x00;\ 			DDRB  |= SPI0_SS_BIT|SPI0_SCLK_BIT|SPI0_MOSI_BIT|LEDConn_BIT;\ 			DDRB  &= ~SPI0_MISO_BIT;\ 			PORTB = SPI0_SS_BIT;\ 			SPCR  = 0x50;\ 			SPSR  = 0x01 #endif  //ZG2100 SPI HAL #define ZG2100_SpiInit					SPI0_Init #define ZG2100_SpiSendData				SPI0_SendByte #define ZG2100_SpiRecvData				SPI0_RxData   //#define ZG2100_CS_BIT					BIT2 #define ZG2100_CS_BIT					BIT0 #define ZG2100_CS_DDR					DDRB #define ZG2100_CS_PORT					PORTB  #define ZG2100_CSInit()					(ZG2100_CS_DDR |= ZG2100_CS_BIT) #define ZG2100_CSon()					(ZG2100_CS_PORT |= ZG2100_CS_BIT) #define ZG2100_CSoff()					(ZG2100_CS_PORT &= ~ZG2100_CS_BIT)  //#define LEDConn_BIT					BIT1 #define LEDConn_BIT					BIT6 #define LEDConn_DDR					DDRH #define LEDConn_PORT				PORTH  #define LED0_BIT					BIT0 #define LED0_DDR					DDRC #define LED0_PORT					PORTC  #define LED1_BIT					BIT1 #define LED1_DDR					DDRC #define LED1_PORT					PORTC  #define LED2_BIT					BIT2 #define LED2_DDR					DDRC #define LED2_PORT					PORTC  #define LED3_BIT					BIT3 #define LED3_DDR					DDRC #define LED3_PORT					PORTC  #define LED_Init()    (DDRC |= LED0_BIT | LED1_BIT | LED2_BIT | LED3_BIT)  #define LEDConn_on()	(LEDConn_PORT |= LEDConn_BIT) #define LED0_on()		(LED0_PORT |= LED0_BIT) #define LED1_on()		(LED0_PORT |= LED1_BIT) #define LED2_on()		(LED0_PORT |= LED2_BIT) #define LED3_on()		(LED0_PORT |= LED3_BIT)  #define LEDConn_off()	(LEDConn_PORT &= ~LEDConn_BIT) #define LED0_off()		(LED0_PORT &= ~LED0_BIT) #define LED1_off()		(LED0_PORT &= ~LED1_BIT) #define LED2_off()		(LED0_PORT &= ~LED2_BIT) #define LED3_off()		(LED0_PORT &= ~LED3_BIT)  #define LED0_toggle()	((LED0_PORT & LED0_BIT)?(LED0_PORT &= ~LED0_BIT):(LED0_PORT |= LED0_BIT)) #define LED1_toggle()	((LED0_PORT & LED1_BIT)?(LED0_PORT &= ~LED1_BIT):(LED0_PORT |= LED1_BIT)) #define LED3_toggle()	((LED0_PORT & LED3_BIT)?(LED0_PORT &= ~LED3_BIT):(LED0_PORT |= LED3_BIT))  #endif /* SPI_H_ */
附件:
下載此檔案 (Mega_WiShield.zip)Mega_WiShield.zip[ ]8 Kb西元2009年12月17日 15:44

文章回應

Please login to post comments or replies.
最近更新在 週日, 20 十二月 2009 13:48
 
五子棋