seriële communicatie.

Gestart door conducteur, 30 mei 2013, 21:03:53 PM

Steam.N

Thanks, Johan.
Ik ben er nog niet, maar stilaan komt er een heel klein beetje licht.   ;)
Gezien dit communicatie-aspect voor mijn project nog niet dringend is, heb ik nog wat tijd om wat lectuur en datasheets door te nemen.
Eens ik wat verder sta, kom ik je nog eens lastig vallen !
Knutselgroeten !  Jean       TP-I (B) & TP-II (DR) - N - DC - Handbediening - Zelfbouw  { Sedelocus - De Feniks - Pira-N's Crossing - Turnhout NEEB - Scrap Yard }

Geert

@Rian (Conducteur) en @Jean (steam.N) en andere ....

de volgende link geeft wat meer uitleg hoe de UESART van PIC 16F887 werkt, ik weet dat jullie deze o.a. gebruiken ...

http://www.mikroe.com/chapters/view/16/chapter-3-pic16f887-microcontroller/#c3v8

Geert
Schaal HO - digitaal zelfbouw - Favoriete Lok: V200 DB
Huidig project: LocoNet 16 poorten ingangen/uitgangen

Steam.N

Dank je wel Geert.
Ga ik asap doornemen !!!
Knutselgroeten !  Jean       TP-I (B) & TP-II (DR) - N - DC - Handbediening - Zelfbouw  { Sedelocus - De Feniks - Pira-N's Crossing - Turnhout NEEB - Scrap Yard }

Gerolf

Even dit draadje wakker maken  ;)

Ik ben volop op zoek naar communicatieprotocols tussen microcontrollers.
1Wire lijkt me een aantal voordelen te hebben. Heeft er iemand ervaring mee ?
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

Sattrickske

Echt ervaring met 1Wire, neen; ervaring met seriële communicatie over één draad (als je de massa niet meetelt) wel.
Hangt een beetje van de power van je µC af en hoeveel klokcycli je nog 'over' hebt.  Het lastige zit 'm in de timing, net zoals met DCC signalen; je dient een interrupt te gebruiken om elke level wijziging van het signaal te detecteren en een timer om na te gaan hoeveel tijd er ongeveer tussen zat.  Op zich niet zo moeilijk om te programmeren, maar het kost wel klokclycli en als je er daar al te kort hebt, ben je zo goed als verloren.  Voor de µC met een hogere klokfrequentie mag dit echter geen probleem zijn.

Maxim heeft een hele product-range gebaseerd op de 1Wire, ook een aantal µC's hebben software libraries hiervoor.
Best wel een interessante bus...

Gerolf

1Wire "masteren" lijkt niet zo'n probleem binnen Bascom en zo. Slave is lastiger.
Ik ga eens snuffelen in het gamma van Maxim, Patrick. Bedankt voor de tip  :D
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

Gerolf

Na wat googelen heb ik zelf van een Atmega8 een eenvoudige 1Wire-slave gemaakt.
Ik gebruik hem momenteel om informatie door te geven aan een Atmega8 1Wire-master, die 8 slaves kan bevragen
De verzamelde informatie geeft hij door via RS232 aan een bovenste "trap", ook een Atmega8 
Die kan op zijn beurt tot 8 "tussenstappen" bevragen, en zelf via I2C bevraagd worden.



In het prototype is de onderste trap (hier de onderste printplaat) een 16-kanaals bezetmelder (stroomsensoren)
Later kunnen dat eenvoudiger zaken worden, bvb voor druktoetsen op het synoptisch bord, of wisselterugmeldingen, ...

Even rekenen: 16 kanalen onderaan x 8 1Wire's x 8 RS232 = maximaal 1024 bits, of 128 bytes. Lijkt me genoeg  8)

Voor de die-hards: een scoop-view van een 1Wire communicatie: actief=laag.
Master stuurt een reset, slave een acknowledge, en daarna de 16 databits.
De laatste bits zijn afwijkend, want op ingang 5, 6 en 8 werd de stroomsensor geactiveerd.



Totale tijd voor één overdracht: 2.4ms. Dus 8 1Wires duren ongeveer 20ms.
De RS232 zal asynchroon communiceren, dat kan dus even snel (en ruim snel genoeg, dunkt me)
Voor mij was een totale refreshtijd van 1/4 seconde al genoeg geweest. Ik heb dus nog wat ruimte...

Stap 1 is gezet, nu de bovenste stap van de sandwich proberen ...
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

Frank_N

Misschien domme opmerking van mij: Heb je al eens naar arduino gekeken Gerolf?
Groet van Frank

Gerolf

Arduino is zeker geen slecht platform, maar het is een platform. Centrale module, aan te sluiten andere modules, ...

Ik ga liever voor de basis: een stapje lager, meer werk, maar resultaat op maat, minder kosten.
Eens je enkele toepassingen hebt ontworpen (prints en software) wordt het steeds makkelijker.
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

Steven123

Wel, ik doe er alvast mijn hoedje voor af Gerolf  :D
Ik ben zeer content dat er nog mensen zijn die zelf zulke elektronica in elkaar steken, ondanks alles wat er al op de markt is.   ;)
Vooral blijven doorgaan!

Succes & groeten
Steven
Zelfbouw Loc's:      Goedkoop kan (soms) ook

Gerolf

Bedankt, Steven  ;)

Na wat volgende knoei- en zoekwerk stap 2 kunnen nemen:
De verzamelde 1Wire-informatie kan via RS232 op verzoek van een master "hogerop" doorgestuurd worden:



Bovenaan 32 bytes via RS232, onderaan een reeks 1Wire-datastromen. Die worden vergaard wanneer RS232 niet aktief is.
Nu is dat nog tijdens een programma-pauze, maar later kan dat terwijl de RS232-master elders gegevens opvraagt.
Op deze manier zou ik de maximale 1024 bits kunnen vergaren op 120 milliseconden. Ben ik content mee  :)
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

MickeyMouse

Dat is het hé, communicatie moet je stap voor stap implementeren (= programmeren), zeker de eerste keren.
Later kun je dan uiteindelijk terugvallen op een bibliotheek van (low-level) routines en evt verder uitbouwen...

Suc6 Gerof,

Geert

Steam.N

Indrukwekkend, Gerolf !!!
Al en grote stap gezet, voor je nieuwe communicatie.
Ik blijf duimen voor een totaal succes  ;)
Knutselgroeten !  Jean       TP-I (B) & TP-II (DR) - N - DC - Handbediening - Zelfbouw  { Sedelocus - De Feniks - Pira-N's Crossing - Turnhout NEEB - Scrap Yard }

Gerolf

Bedankt voor de aanmoediging, mensen.

Ditzelfde principe zou ook andersom moeten kunnen werken:
- Een andere RS232-master komt te weten hoe "alle" uitgangen zouden moeten zijn
- en geeft die info door aan wissels, seinen, leds op het besturingspaneel, ...

De belangrijkste tussenstap (de beslissingen) is een andere boterham, maar hoort niet bij dit topic.
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

conducteur

Ik blaas even nieuw leven hierin. In de treinclub zijn we bezig met een nieuwe modulebaan. Ik speel met het idee om onder elke bak een microcontroller te plaatsen die via een soort busnetwerk met elkaar kunnen communiceren.


Bv een trein wordt op een sectie op bak 1 gedetecteerd met stroomdetectie, en dan moet informatie verzonden worden naar de node op bak 3 om daar het sein/wissel te verzetten. Ook een baanbedieningspaneeltje kan op dit netwerk aangesloten zijn.


Ondertussen hier al enkele mogelijkheden gelezen. Zelf al wat ervaring met RS232 voor de verbinding tussen de schaduwstationssturing en de bediening ervoor, maar dat is slechts tussen twee nodes.


CAN? RS485? Welke is het makkelijkst te implementeren, het betrouwbaarst? Als ik goed gekeken heb bestaat er alleszins een JAL bibliotheek voor CAN.
Rian 2-Rail DCC NMBS TPIII
Grote Modeltreinruilbeurs Blankenberge Pasen 2016
Zaal Forum