SPI full duplex slave

Arduino je pojav za katerega bi težko rekli, da opisuje samo HW ali samo SW, zato mu tu namenajm poseben prostor.

Moderator: tilz0R

SPI full duplex slave

OdgovorNapisal/-a Kroko » 07 Nov 2019, 22:31

Ima kdo kakšen primer za SPI full duplex slave. Me neki zeza in master nazaj ne dobiva pravih podatkov, pa ne bi rad izumljal tople vode.

Koda: Izberi vse
void setup()
{
  Serial.begin (115200);

  pinMode(MISO, OUTPUT);
  SPCR |= _BV(SPE); // turn on SPI in slave mode
  SPI.setDataMode(SPI_MODE3);
 
  memset(buff, 0, sizeof(buff));
  idx = 0;
  process = false;
  SPI.attachInterrupt();
}

ISR (SPI_STC_vect) 
{
  char c = SPDR;

  SPDR = c;

  if (idx < sizeof(buff))
  {
    buff [idx++] = c;
    if (c == 'X')
      process = true;
  }
}

void loop()
{
  if (process)
  {
    process = false;
    Serial.println(buff);
    memset(buff, 0, sizeof(buff));
    idx= 0;
  }
}
http://www.planet-cnc.com poskakuješ na eni nogi in žvižgaš alpske podoknice Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 4554
Pridružen: 14 Jan 2015, 11:12
Kraj: Ljubljana
Zahvalil se je: 651 krat
Prejel zahvalo: 1498 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: SPI full duplex slave

OdgovorNapisal/-a tilz0R » 08 Nov 2019, 06:26

So podatki zasiftani za en bajt?
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1752
Pridružen: 17 Jan 2015, 23:12
Kraj: Črnomelj
Zahvalil se je: 224 krat
Prejel zahvalo: 452 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: SPI full duplex slave

OdgovorNapisal/-a Kroko » 08 Nov 2019, 10:23

Tudi to je bilo.
http://www.planet-cnc.com poskakuješ na eni nogi in žvižgaš alpske podoknice Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 4554
Pridružen: 14 Jan 2015, 11:12
Kraj: Ljubljana
Zahvalil se je: 651 krat
Prejel zahvalo: 1498 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: SPI full duplex slave

OdgovorNapisal/-a s54mtb » 08 Nov 2019, 10:40

Je clock prehiter?

5V avr/arduino, 3V signali???
Namesto "Zahvali se" sprejemam tudi šalco kofeta: https://www.buymeacoffee.com/s54mtb
Uporabniški avatar
s54mtb
 
Prispevkov: 10465
Pridružen: 15 Jan 2015, 00:10
Zahvalil se je: 1456 krat
Prejel zahvalo: 3616 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: SPI full duplex slave

OdgovorNapisal/-a tilz0R » 08 Nov 2019, 10:42

Kroko je napisal/-a:Tudi to je bilo.

Predlagam, da najprej napišeš kaj ne dela sploh.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1752
Pridružen: 17 Jan 2015, 23:12
Kraj: Črnomelj
Zahvalil se je: 224 krat
Prejel zahvalo: 452 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: SPI full duplex slave

OdgovorNapisal/-a Kroko » 08 Nov 2019, 11:47

Za začetek me zanima, če je za arduino dovolj samo brati/pisati SPDR register. Pri Armih sem navajen preverjati cel kup nekih zastavic. User manuala za AVR pa se mi ne bere :-)
http://www.planet-cnc.com poskakuješ na eni nogi in žvižgaš alpske podoknice Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 4554
Pridružen: 14 Jan 2015, 11:12
Kraj: Ljubljana
Zahvalil se je: 651 krat
Prejel zahvalo: 1498 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: SPI full duplex slave

OdgovorNapisal/-a tilz0R » 08 Nov 2019, 12:31

Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1752
Pridružen: 17 Jan 2015, 23:12
Kraj: Črnomelj
Zahvalil se je: 224 krat
Prejel zahvalo: 452 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: SPI full duplex slave

OdgovorNapisal/-a Kroko » 08 Nov 2019, 16:24

Sem naklopil analizator. tilz0R ima prav. Podatki, ki se vračajo zaostajajo za en byte.
http://www.planet-cnc.com poskakuješ na eni nogi in žvižgaš alpske podoknice Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 4554
Pridružen: 14 Jan 2015, 11:12
Kraj: Ljubljana
Zahvalil se je: 651 krat
Prejel zahvalo: 1498 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: SPI full duplex slave

OdgovorNapisal/-a Kroko » 08 Nov 2019, 16:35

Ampak razmišljam, da je to verjetno normalno?
08-11-2019 16-36-40.png
08-11-2019 16-36-40.png (1.46 KiB) Videno 122 krat


in da moram poslati en dodatni byte, ki bo generiral clock za zadnji vrnjen podatek.
In pa ignorirati tisti podatek, ki prvi pride nazaj.
http://www.planet-cnc.com poskakuješ na eni nogi in žvižgaš alpske podoknice Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 4554
Pridružen: 14 Jan 2015, 11:12
Kraj: Ljubljana
Zahvalil se je: 651 krat
Prejel zahvalo: 1498 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: SPI full duplex slave

OdgovorNapisal/-a tilz0R » 08 Nov 2019, 17:06

To je zelo normalno, saj slave ne ve v prvem bajtu, kaj bi ti od njega.
Zato večina SPI slave-ov vrne statusni byte kot prvi byte, ki ga naloži v data register, ko gre CS pin low. To pač master dobi na MISO pinu najprej, ali ignorira ali pač ne.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1752
Pridružen: 17 Jan 2015, 23:12
Kraj: Črnomelj
Zahvalil se je: 224 krat
Prejel zahvalo: 452 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: SPI full duplex slave

OdgovorNapisal/-a Kroko » 08 Nov 2019, 21:04

Hvala, rešeno. Če ne bi ti omenil šifta bi jaz porabil 5x več časa.
http://www.planet-cnc.com poskakuješ na eni nogi in žvižgaš alpske podoknice Kroko was here!
Uporabniški avatar
Kroko
 
Prispevkov: 4554
Pridružen: 14 Jan 2015, 11:12
Kraj: Ljubljana
Zahvalil se je: 651 krat
Prejel zahvalo: 1498 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255


Vrni se na Arduino

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 0 gostov