AD75019 16x16 switch matrix via SPI
18 berichten
• Pagina 2 van 2 • 1, 2
Re: AD75019 16x16 switch matrix via SPI
Hoi,
Bedankt voor je reactie.
Hier is de code;
cpp code
Ik heb deze hier gevonden: http://www.dorkbotpdx.org/blog/paul/ad75019_crosspoint_analog_switch
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
Re: AD75019 16x16 switch matrix via SPI
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?
2) Waarom gebruik je de SPI library niet?
3) Wat is het resultaat van deze code? Wat is er met wat verbonden?
Re: AD75019 16x16 switch matrix via SPI
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
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
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: AD75019 16x16 switch matrix via SPI
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.
@Harold: zet anders jouw volledige sketch hier ff.
Re: AD75019 16x16 switch matrix via SPI
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 ...
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: AD75019 16x16 switch matrix via SPI
Weet ik en gelijk heb je.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 ...
Re: AD75019 16x16 switch matrix via SPI
nicoverduin schreef:Weet ik en gelijk heb je.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 ...
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.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: AD75019 16x16 switch matrix via SPI
Ik heb er geen problemen mee. Commerciële project die ik doe zul je ook niet vinden op het web. Kan nu eenmaal niet...
18 berichten
• Pagina 2 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 20 gasten