AD75019 16x16 switch matrix via SPI

Hardware die niet past in bovenstaande onderwerpen
Berichten: 3
Geregistreerd: 24 Okt 2016, 23:55

Re: AD75019 16x16 switch matrix via SPI

Berichtdoor EBH » 25 Okt 2016, 20:17

Hoi,

Bedankt voor je reactie.

Hier is de code;
cpp code
#define SCLK_PIN  13   // PGA = pin 13 *** AD = pin 13
#define SIN_PIN 12 // AD = pin 12

uint8_t update_required = 0;
uint16_t switches[48];

void setup()
{
pinMode(SCLK_PIN, OUTPUT);
pinMode(SIN_PIN, OUTPUT);
}

void loop()
{
connect (0, 0); // Matrix selection (Input,output)
update ();
update_required = 0;
exit(0);
}

////// AD75019 Switch Matrix Control////////////////

void connect(uint8_t signal, uint8_t pin) // function writes a single bit to connect any of the 16 Y pins to any of the 48 X pins.
{
uint8_t chip;
if (pin < 16) chip = 32;
else if (pin < 32) chip = 16;
else if (pin < 48) chip = 0;
else return;
if (signal >= 16) return;
switches[chip + (15 - signal)] |= (1 << (pin & 15));
update_required = 1;
}

void disconnectAll(void) // function clears the entire in-memory array
{
memset(switches, 0, sizeof(switches));
update_required = 1;
}

void update(void) // writes all the bits to all 3 chips and pulses the latch clock, so all the switches change at the same moment.
{
uint8_t i;
uint16_t n, mask;

for (i = 0; i < 48; i++) {
n = switches[i];
for (mask = 0x8000; mask; mask >>= 1) {
digitalWrite(SIN_PIN, (n & mask) ? HIGH : LOW); // SDI_PIN
// 20ns setup required
asm("nop");
asm("nop");
digitalWrite(SCLK_PIN, HIGH);
asm("nop"); // sclk pulse width, 100 ns minimum
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
digitalWrite(SCLK_PIN, LOW);
asm("nop");
// 40ns hold time required
}
}
asm("nop"); // 65ns setup required
asm("nop");
asm("nop");
asm("nop");

update_required = 0;
}

Ik heb deze hier gevonden: http://www.dorkbotpdx.org/blog/paul/ad75019_crosspoint_analog_switch

Advertisement

Gebruikers-avatar
Berichten: 63
Geregistreerd: 10 Jul 2014, 14:54

Re: AD75019 16x16 switch matrix via SPI

Berichtdoor MrHaroldA » 25 Okt 2016, 22:51

1) Waarom 48 switches?
2) Waarom gebruik je de SPI library niet?
3) Wat is het resultaat van deze code? Wat is er met wat verbonden?

Berichten: 3
Geregistreerd: 24 Okt 2016, 23:55

Re: AD75019 16x16 switch matrix via SPI

Berichtdoor EBH » 27 Okt 2016, 21:50

1, ik gebruik er maar 16
2, geen idee, dit heb ik gevonden op internet.
3, deze code werkt perfect met het routen van een input naar een willekeurige output.
bijv. 0 naar 1, of 2 naar 7. ( dit gebeurd met "connect (0, 1); of (2, 7);"
ik kan ook meerdere ingangen appart of tegelijk routen.

probleem is dus nog steeds, hoe kan ik een route ongedaan maken.

p.s. begin net met arduino code, ik doe m'n best om de taal en de sketch te begrijpen.

thanks voor je moeite alvast.

groet,
edwin

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: AD75019 16x16 switch matrix via SPI

Berichtdoor nicoverduin » 28 Okt 2016, 07:45

In het artikel heeft de auteur 3 van die dingen in serie gezet. Vandaar de 48 switches. Dat is hier een beetje zinloos.
@Harold: zet anders jouw volledige sketch hier ff.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 63
Geregistreerd: 10 Jul 2014, 14:54

Re: AD75019 16x16 switch matrix via SPI

Berichtdoor MrHaroldA » 28 Okt 2016, 11:37

EBH schreef:probleem is dus nog steeds, hoe kan ik een route ongedaan maken.


Het lijkt er op dat daar geen functie voor is. Wel om alles ongedaan te maken, maar da's ook niet echt handig op het eerste oog.

De logica van het gebruik van zo'n chip is ook vrij complex, als je een verbinding ongedaan wil maken moet je de twee verbindingen ernaast ook aan elkaar knopen; ik zou bijna denken dat een "wis alles, zet alles"-actie dan toch het makkelijkste is.


Ik stuur zelf ook iedere keer een volledige set naar mijn AD-chip, ik verwijder ook geen enkele verbindingen maar bouw de complete matrix iedere keer weer opnieuw op.


nicoverduin schreef:In het artikel heeft de auteur 3 van die dingen in serie gezet. Vandaar de 48 switches. Dat is hier een beetje zinloos.
@Harold: zet anders jouw volledige sketch hier ff.


Ik ben extreem pro-open source, maar misschien wil ik hier nog wel een paar units van gaan verkopen. Ik hou de code dus nog heel even voor me ...

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: AD75019 16x16 switch matrix via SPI

Berichtdoor nicoverduin » 28 Okt 2016, 12:09

MrHaroldA schreef:Ik ben extreem pro-open source, maar misschien wil ik hier nog wel een paar units van gaan verkopen. Ik hou de code dus nog heel even voor me ...
Weet ik :mrgreen: en gelijk heb je.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 63
Geregistreerd: 10 Jul 2014, 14:54

Re: AD75019 16x16 switch matrix via SPI

Berichtdoor MrHaroldA » 28 Okt 2016, 12:25

nicoverduin schreef:
MrHaroldA schreef:Ik ben extreem pro-open source, maar misschien wil ik hier nog wel een paar units van gaan verkopen. Ik hou de code dus nog heel even voor me ...
Weet ik :mrgreen: en gelijk heb je.

Bepaalde delen, zoals de 256-bits-shifter zijn ontstaan met hulp van de community, dus die geef ik wel graag vrij. Het geheel alleen niet.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: AD75019 16x16 switch matrix via SPI

Berichtdoor nicoverduin » 28 Okt 2016, 14:08

Ik heb er geen problemen mee. Commerciële project die ik doe zul je ook niet vinden op het web. Kan nu eenmaal niet...
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Vorige

Terug naar Overige hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 8 gasten