SPI startmoment ?


MNM(tm)

Golden Member

@flipflop: zover ik het begrijp, gaat het om 19 ATmega8 bordjes die zelfstandig data verzamelen op hun eigen locatie en die data opslaan in een array van 600 bytes. Die data-arrays moet worden uitgelezen door een centraal systeem (ATmega128).
Het zit dus niet allemaal op 1 bord en er wordt niets aangestuurd. ;)

Fan van Samsung (en repareer ook TV's). :)

zover ik het begrijp, gaat het om 19 ATmega8 bordjes die zelfstandig data verzamelen op hun eigen locatie en die data opslaan in een array van 600 bytes.

Dan weet je meer als ik kan opmaken uit de posts... (ik zie het nergens...) ;)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
trix

Golden Member

MNM(tm) heeft het bij het juiste eind, ik heb wel een paar keer aangehaalt dat er 10 mtr. kabellengte tussen zit. dus niet op 1 bord.

in de basis is het:

- 11400 bytes
- in 2,3 of 4 seconden
- over 10 mtr. kabellengte sturen

eigenwijs = ook wijs

Ja, dat begreep ik wel. Maar niet dat het 19 losse prints waren... ;)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Dus we gaan met SPI over een kabel van 10 meter? Ik vrees dat mijn post dan nog volledig valide is. Misschien nog wel meer dan toen ik het schreef.

Ik zeg RS485.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
trix

Golden Member

ik zag wel dat er SPI to RS485 convertors zijn, b.v. de max3140. ik moet dat eens goed bekijken, kan een kanshebber zijn.

of krijg ik dan weer gewoon de synchronisatie problemen die ik eerst ook had ?

[Bericht gewijzigd door trix op 24 augustus 2019 18:54:35 (25%)]

eigenwijs = ook wijs

SPI is niet bedoeld voor grote afstanden. Op hogere clocksnelheid krijg je dan altijd problemen bij grotere afstanden.

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
trix

Golden Member

klopt daarom dus een PSI --> RS485 omzetting zodat de RS485 over de 10 mtr. kabel lengte gaat.

eigenwijs = ook wijs

Dat maakt niks uit, het blijft SPI. Het MISO signaal moet niet te ver afwijken van de clock, dan krijg je problemen.
(de lengte van de kabel zelf geeft al 60nS vertraging, met nog de kabelcapaciteiten erbij geteld...)
Een rs232 naar rs485 is dan een stuk beter... (asynchroon)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
Shiptronic

Golden Member

Met 10m kan je nog makkelijk RS232 , dan kan je toch het makkelijkst de standaard UART kiezen?

Wie de vraag stelt, zal met het antwoord moeten leren leven.
trix

Golden Member

ik krijg zelf de indruk dat ik RS232 & RS485 niet duidelijk op het netvlies heb. moet dat eerst eens goed bekijken.

eigenwijs = ook wijs

Converteren is allemaal lap-werk. Maak het nou gewoon goed. Eigenlijk hoort dat denkwerk al in je ontwerp-fase. Nu ben je al veel te ver op weg om die aanpassing pijnloos te doen. Nu kost je het heel veel werk. Maar je moet als je het werkend wilt krijgen.

Als je rs485 wilt gebruiken: op zich is dat gewoon een asynchrone seriele interface, net zoals een uart verbinding. RX en TX lijntje. Het protocol kun je zelf bedenken, bv:
start-patroon, address, msg-lengte, data
...maar dat bepaal je volledig zelf als je zelf de software aan beide kanten van de lijn schrijft.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
trix

Golden Member

conventeren is inderdaad lapwerk. mijn kennis in bus systemen rijkt natuurlijk niet ver. dan is het kiezen van de juiste bus/protocol heel moeilijk, maar die keuze is wel heel belangrijk, want die verander je niet zo maar even.

de verandering is niet zo pijnlijk, ik heb i.p.v. 19 PCB,s er nog maar 4 gemaakt om wat te kunnen testen.

ik zal straks eens een tekeningetje posten v/d situatie, maakt het wat overzichtelijker voor iedereen.

eigenwijs = ook wijs
trix

Golden Member

krijg hier niet rechtstreeks een mooi formaat, dan maar even op het platje klikken.

eigenwijs = ook wijs

Aha, je hebt een 74595 geprogrammeerd :-)

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein

Gewoon RS232 met alles in serie lijkt me wel zo simpel (heb je ook geen adressering problemen...)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
trix

Golden Member

klopt,....had ik al ergens vermeld. in feite een dubbele(16 Input pins) 74HC595 waar ik 600 bytes in kan opslaan.

edit:
alles rs232 kan natuurlijk ook, het is de bedoeling om die 19 stuks pcb's zo simpel mogelijk te houden, maar dat kan denk ik wel want RS232 kan ook wel over een box header.

[Bericht gewijzigd door trix op 25 augustus 2019 16:32:11 (45%)]

eigenwijs = ook wijs
trix

Golden Member

.

[Bericht gewijzigd door trix op 25 augustus 2019 16:32:23 (99%)]

eigenwijs = ook wijs
trix

Golden Member

dit is zo'n beetje de opset (uitgaande van een shift register)

dan het plaatje maar zo.

[Bericht gewijzigd door trix op 25 augustus 2019 16:31:26 (29%)]

eigenwijs = ook wijs
Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
trix

Golden Member

de master inderdaad in de "loop" mee nemen. lijkt mij niet verkeerd.

had je een paar posts terug al gezegd, alleen toen viel het kwartje niet.

[Bericht gewijzigd door trix op 25 augustus 2019 17:14:50 (36%)]

eigenwijs = ook wijs

Als het over langere afstanden moet dan is RS485 helemaal niet zo gek. En een SPI-485 chip dan weer wel. Gewoon de boel aan je UART hangen. MAX485 of zoiets.

Alle "slaves" hang je dan aan de bus, de master stuurt iets van: "module 1 statusrapport!" Alle modules ontvangen dat, maar alleen module 1 reageert daarop met z'n statusrapport. Als ik even 11400 bytes maal 8 bits doe, en jou 2-4 seconden naar beneden afrond dan vind ik 91kbps. Dat is prima te doen. Sneller ook nog. Gewoon iets van 250kbps instellen en klaar: Zat tijd om alle modules te pollen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
trix

Golden Member

er komt iets bij, de reden dat ik dat nu pas aanhaal, is dat het gedeelte wat er bij komt al werkt, gewoon bit bangen, maar ik zit nu te bedenken dat ik dit wellicht ook in deze oplossing kan meenemen.
het is eigenlijk een soort gelijk device, alleen hoeft deze geen data naar de hoofdprint te sturen. wat wel heel belangrijk is, dat de synchronisate bij beide device's klopt. dus als ik bij de linker atmega no: 1 b.v. een output hoog maak, dat dat bij de rechter device no: 1 op hetzelfde moment gebeurd.

de reden dat ik voor een atmega 8 kies is dat hij 16+ I/O pinnen heeft, mischien is er wel een betere optie, meer pinnen heeft geen zin omdat de PCB's waar de atmega8's op zitten niet groter zijn. en ik graag 19 x dezelfde PCB wil maken.

een nadeel van arco's voorstel is dat er 2 kabels naar de device gaat, kan dat b.v. ook door 1 kabel met het dubbel aantal aan aders.

eigenwijs = ook wijs

Op 26 augustus 2019 16:47:43 schreef trix:
...wat wel heel belangrijk is, dat de synchronisate bij beide device's klopt. dus als ik bij de linker atmega no: 1 b.v. een output hoog maak, dat dat bij de rechter device no: 1 op hetzelfde moment gebeurd.

Dat had je met een 595 ook gehad. Maar ook hier, rs485 bussysteem is je oplossing.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
trix

Golden Member

ik ben me al een beetje aan het inlezen over UART en USART.

eigenwijs = ook wijs