Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

MT8816 analog switch array

Status
Not open for further replies.

djc

Advanced Member level 1
Advanced Member level 1
Joined
Jan 27, 2013
Messages
402
Helped
3
Reputation
6
Reaction score
2
Trophy points
1,298
Location
India
Visit site
Activity points
4,554
Has any body worked on MT8816 analog cross point switch chip. I read the datasheet. But didn't get anything. Has anyone practical experience with this chip...
 

hi betwixt,

Its not clear to me that what to do first of all. First I selected address, then in while loop gave data '1' then strobe =1, delay of 1 millisecond then strobe = 0, then repeated the procedure for data '0'. but its not getting operated. CS pin is permanently high and reset pin is low.
 

Hi,
I again have an issue with operation of MT8816 cross point switch IC. It's CS pin is connected to power supply, RESET pin is connected to ground. AY0,AY1,AY2 are also connected to ground. AX0,AX1,AX2,AX3 are connected to controller's PC1,PC4,PC3 and PC2 pins respectively. Data pin of 8816 is connected to PB6 of controler and 'STROBE' pin of 8816 is connected to PC0 pin of controller. I tried several combination means 1)selecting address bits first then giving data and then strobe signal. 2)STROBE high, then address selection then data and then strobe ow. But still not working. Can any body pz properly guide me.
 

According to the data sheet pin descriptions:
Master RESET (Input): this is used to turn off all switches regardless of the condition of
CS. Active High.
So you want this pin to be low for normal operation.

STROBE (Input): enables function selected by address and data. Address must be stable
before STROBE goes high and DATA must be stable on the falling edge of the STROBE.
Active High.
So start with it low, set the address, make it high, set the data, make it low again.

Chip Select (Input): this is used to select the device. Active High. You want this high all the time.

DATA (Input): a logic high input will turn on the selected switch and a logic low will turn off
the selected switch. Active High.
So make this '1' to enable the path, '0' to disable it.

If that doesn't help, post the schematic you are using and also state what voltages you are using on VDD and VEE.

Brian.
 

20140116_133100.jpg20140116_133221.jpg20140116_133325.jpg

- - - Updated - - -

Hi,
I don't have any schematic direct hardware. However i am posting you some photos of it. It's a section in which 8816 and controller are interfaced. Pics are for front view and back view. In back view i have mentioned pin names of MT8816 and for the controller pin names of MT8816 are written.
Way you told me is not working. VDD has 5V and VEE=0V.

- - - Updated - - -

Here is my code,
Code:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.4 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : 
Version : 
Date    : 10/20/2013
Author  : 
Company : 
Comments: 


Chip type           : ATmega8
Program type        : Application
Clock frequency     : 8.000000 MHz
Memory model        : Small
External RAM size   : 0
Data Stack size     : 256
*****************************************************/

#include <mega8.h>
#include <delay.h>

#define AX0 PORTC.1
#define AX1 PORTC.4
#define AX2 PORTC.3
#define AX3 PORTC.2
#define data PORTB.6
#define strobe PORTC.0 
#define test PORTC.5

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here

}

// Declare your global variables here
void strobe_clk()
{
        strobe = 1;
        //#asm("nop")
        delay_ms(500);
        strobe = 0;
        delay_ms(1000);
}

void main(void)
{


// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=In 
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=T 
PORTB=0x00;
DDRB=0xFE;

// Port C initialization
// Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
// State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
PORTC=0x00;
DDRC=0xfF;

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
PORTD=0x00;
DDRD=0xFF;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 8000.000 kHz
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
//#asm("sei")  
        
        
         


while (1)
       {         
        AX0 = 0;
        AX1 = 0;
        AX2 = 0;
        AX3 = 0;
       data = 0;  
       delay_ms(2);   
       strobe = 1;
       delay_ms(1);
       strobe = 0;
       delay_ms(2);         
       delay_ms(1000); 
       
//        AX0 = 0;
//        AX1 = 0;
//        AX2 = 0;
//        AX3 = 0;
       data = 0;  
       delay_ms(2);   
       strobe = 1;
       delay_ms(1);
       strobe = 0;
       delay_ms(2);         
       delay_ms(1000);                      
       }
}
 

I'm not very good with AVR code so I'll have to assume you have the IC and pins initialized properly.

I can't see what it is you are trying to do with that code. The MT8816 (which I hope is the same as the CSC8816 you have fitted) is a crosspoint switch. You select one of the cross-points with the address lines and either turn it off by setting the data to '0' or turn it on by setting the data to '1'. How are you checking whether the switch has operated or not?

Brian.
 

Yes i have initialized all the pins correctly. After selecting particular switch location take it as AX0=0,AX1=0,AX2=0,AX3=0 location X0Y0 will be operated. So when sending data =1 and data=0, i am checking resistance of those two pins X0 and Y0. I expect open switch resistance to be infinite and close switch resistance to be minimum. Is it correct?
 

That might be the problem. Although the switch may turn on (become low resistance), without a negative VEE supply it can only carry voltages between 0V and VSS. In a resistance test your meter will have a voltage across it's probes which might be in the wrong polarity or exceed the VDD limit. If the switch is only carrying digital information, try monitoring the output while providing a logic level signal as input, if it is being used as an analog switch and you do not have a negative supply to it, try connecting a potential divider across the input (1K to ground, 1K to VDD) and see if the selected switch passes VDD/2 to it's output.

Brian.
 

Hi Brian,

You are right. It's really a hardware issue. The CHIP was not getting reset pulse at all. So all the cross point switches were in indefinite state though i made them '0' deliberately .

Now i connected a 1 uF capacitor between RESET pin and +ve rail. Now it's working smoothly. Thank you so much Brian for your kind help. I would like to be in touch with you.

Dheeraj
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top