ik zou graag data overdragen van pic naar een andere pic wat zijn de moglijkheden allemaal in picbasic
ik heb 2 losse systemen (schakelingen) die verplaatsbaar zijn (meestal op de zelfde plaats staan) en ik zou die graag op 1 display willen krijgen doormiddel van een derde pic die los gekoppelt kunnen worden

Via SPI of I2C. Maak de display-PIC de master en laat hem een data-aquire commando naar de 2 PIC's zenden.

Welke PIC gebruikje? Je kan i2c gebruiken als de PICs een SSP slave module hebben. Als er steeds maar 2 PICs met elkaar moeten communiceren voldoet rs232 (zonder level converter) misschien ook.

Hoeveel gegevens moeten er uitgewisseld worden? Moet het een bus systeem worden of steeds pic-to-pic?

1*16f648A en 1*16f684 zenden naar 16f684 met display

hoe moet je die dan aanspreken soms zal er maar 2/dag een data doorgestuurt worden

Dacht niet dat de 648 een SSP module heeft.

Voorbeeldje:
De display module stuurt een commando connect over I2C. Zodra hij 'true' ontvangt weet hij dat er een slave aanwezig is. Krijgt hij gelijk info over de slave (serienummer, type enzo) doorgestuurd. Vervolgens kan hij een lees-command sturen en dit verwerken.

De slave hoeft weinig te doen, daar zet je gewoon een interrupt op het ontvangen van data over I2C.

maar die "slaves" regelen van alles en nog wat en het is om die veranderingen te vizualizeren op een display

Die PICs hebben beide geen SSP module. Als je hier i2c zou willen gebruiken zou je dit protocol helemaal in software moeten implementeren. Het geheel implementeren van i2c in software is echter heel moeilijk om op een PIC te doen, vooral als je de normale i2c snelheden wil halen.

Wat je beter kunt doen is een simpel eigen protocol bedenken (of afkijken van andere protocollen) dat je over twee lijntjes stuurt (DATA en CLK).

Idd, gewoon erin schuiven dan, elke PIC zijn eigen 2 lijntjes.

hoe schuif je der iets in en uit met pic basic
want dit lijkt mij het beste gewoon een paar bytes en een word er doorschuiven en ik ben gesteld

Dit is een taak voor de UART. Normaal gebruik je die met een MAX232 om met de PC te praten via RS-232, maar je kan die perfect als bus (mis)bruiken.
Verzin iets om te bepalen wie wanneer mag zenden (een master, antwoorden alleen als dat door de master op je adres werd gevraagd, of via een extra I/O lijn ofzo). Tx van master aan de Rx'en van alle slaves, en Rx van master aan de Tx'en van alle slaves, eventueel weerstandjes tussen om bij fout van een slave de andere nog te laten werken.

Maar misschien mag het nog simpeler, als je gewoon een beetje data in de ander PIC wil schieten (altijd in dezelfde richting), kan je een clock, data en startlijn maken, de verzendende maakt een kloksignaal en zet de datalijnen nadat ie de startlijn heeft hoog gezet, de ontvangende ontvangt dit en doet er zijn goesting mee, daarna gaat de startlijn weer laag, en kan de ontvangende rustig verder doen waarmee ie bezig was.

Stel eens goed je eisen op, teken wat datalijntjes, probeer wat te denken als een PIC, en het zal wel lukken.

dit had ik in gedachten
http://www.website-bouwen.nl/images/fierens/2picstegen1pic
maar ik vraag mij af hoe ik die data moet versturen met basic

Je zou Emlowww eens kunnen vragen.
Die heeft mij hier en daar wat tips gegeven over HRSin en HRSout. 2 draads communicatie tussen 2 PIC's.
Ik ben er alleen achter gekomen dat voor alleen het zenden 1 draad volstaat. (dat is natuurlijk meteen de ontvanger van de andere PIC)
Stel nu dat je 3 PIC's hebt, waarvan de TX (transmit) poort van de eerste met de RX (recieve) poort van de tweede verbonden zit. Vervolgens de TX van de tweede naar de RX van de derde, die zijn TX weer met de RX van de eerste verbonden heeft.
Zo kun je je data van de een naar de ander sturen.
Is de data van PIC A bestemd voor PIC C die achter B zit, Kun je PIC B als repeater laten werken, wanneer de data herkend wordt als zijnde niet voor B bestemd.

Ik zou met een interrupt werken, maar gezien je een "toelating tot verzenden" draad voorziet is dat zelfs niet nodig. Effe snel een opzet voor de ontvanger, de zender moet iets vergelijkbaars doen, maar ook de klok zetten.


sub procedure ontvangen
"toelating tot verzenden" = 1
n=0
 for n 0 to 8
 << variabele 'dit verschuift de bits in variabele naar links
 while "clock" = 0
 variabele.0 = "data" 'LSB van variabele wordt waarde van data
 wend
 next n
"toelating tot verzenden" = 0
'eventueel herhalen om meerdere bytes te ontvangen
end sub

if "aanvraag verzenden" = 1 then
ontvangen
end if

Kijk ook eens in de help van je compiler, ik gebruik mikroBasic, en daarin kan je een softwaremtige UART gebruiken, dus kan je nog veel gemakkelijker werken.

[Bericht gewijzigd door Videomodulator op ]

http://www.pjrc.com/tech/mp3/lcd_protocol.html
kijk hier eens, misschien heb je er wat aan.

Ik zit nlk. met een soortgelijk probleem.
PC«-»PIC«-»433Mhz~~~~433Mhz«-»PIC.

Ik had met 1 USART het idee om zo te doen, dat die gene die het eerst zn scheur opentrekt mag zn zegje doen(PC of HF433Mhz van PIC).
De signalen van de ander word dan door een schakeling die door een extra poort van de pic word aangestuurd niet ondvangen tot de ene kaar is met(onderling) geblaat.

Al zat ik ook te denken aan een pic met 2 USART(bv PIC18F8520/PIC18F6520 Wisp compatible)
En Picbasic heeft handige functe voor een 2e USART, dan zou het probleem opgelost kunnen zijn, mocht je uiteraard niet vast zitten aan de PIC's die je nu hebt.

wat je eigenlijk wil is een bussysteem met CSMA-CD oftewel Carrier Sense Multiple Access - Collision Detection.
Dit is de methode die door Ethernet ook wordt gebruikt!

Heel simpel komt het op het volgende neer:

- 1 wired-OR datalijn, waar alle zend en ontvangstmodules op zijn aangesloten (zie definities CAN bus)

- Ieder die iets te vertellen heeft aan de anderen (broadcasting) luistert of het stil is op de bus, wacht hiern a een tijdje (lengte = random) en start de transmissie. Hierbij luisteren of je 'jezelf correct hoort'. Indien niet,dan zendt er iemand anders op dat moment. Stoppen, wachten (random tijd) en weer opnieuw proberen.

De truuk zit hem in de wired-OR opstelling en het terugluisteren van je eigen data..

Denk er maar over na.. het is zo simpel dat het briljant is!

Ik heb het in ieder geval niet bedacht... maar CAN en Ethernet werken op deze wijze (niet 100% maar alla)

just my two cents!

Da fripster