2 micro controllers met weinig draden verbinden

hoi jongens, ik ben het weer ^^
ik heb ff een kort vraagje aangezien ik na een half uur googlelen ik nog niks vind dat ook maar in de buurt komt.
http://www.uploadarchief.net/files/download/simpel_uitgelegd.JPG
dit is mijn setup, 2 controllers die over 2draadjes met elkaar comuniceren ZONDER RS232 protocol. interupts krijg ik aan de praat maar ben bang dat als ik rs232 ga onderzoeken ik teveel tijd kwijt ben. deze setup werkt alleen had ik last van storingen in het net. als ik mijn soldeerbout uit het stopcontact haalde gind de interupt ook af. moet er persé een derde draadbij als ik geen rs232 gebruik?
het gaat later nog draadloos worden...

De GND van beide deelschakelingen hangt wel stevig aan elkaar ?

Als je last hebt van relatief kleine common-mode storingen zou je een tweerichtings sy verbinding toe kunnen passen, met tranceivers als de SN75176.

Of een eendraads-tweerichtings verbinding met gnd en dan zorgen dat de gnd van minstens een van de schakelingen verder zweeft.

Wat is de afstand tussen de controllers?
Gebruiken ze nu een gemeenschappelijke gnd?
Zijn de datalijnen ontkoppeld dmv 100nF?
zijn de poorten via een 1n4148 gekoppeld aan 5v en gnd om over en onder spanning te voorkomen?
Hoe denk je over 1-wire protocol?
hoe denk je over een I2C bus?
welke controllers gebruik je?
Hoe ziet je protocol er nu uit?

hm ikdenk dat ik me heb laten mislijden.rs232 gerbuikt rx en tx geen ground te bekennen dus. de 2 grounds zijn dus niet verbonden. het is full duplex. ik gebruik uiteindelijk een transceiver er400 trs die is half duplex.
argh ik denk at ik wat ernstige fouten gemaakt heb bij dit idee. als de transceiver half duplex is kan ik geen gnd+ signaal versturen huh?

Op 1 mei 2006 15:10:43 schreef The Headhunter:
Wat is de afstand tussen de controllers?
Gebruiken ze nu een gemeenschappelijke gnd?
Zijn de datalijnen ontkoppeld dmv 100nF?
zijn de poorten via een 1n4148 gekoppeld aan 5v en gnd om over en onder spanning te voorkomen?
Hoe denk je over 1-wire protocol?
hoe denk je over een I2C bus?
welke controllers gebruik je?
Hoe ziet je protocol er nu uit?

:-S
1de afstand is kort,gewoon 2 draadjes op een breadboard
2de controllers hadden geen gemeenschappelijke gnd
3ik heb een 10K weerstand tussen de controllers gezet, geen condensatoren.
4ik heb geen diodes gebruikt. . nog niet eerdervan gehoord, als er echt over/onder spanning ontstaan kan kan ik die er wel tussen zetten. thx
5 1 wire protocol begin ik nu idd aan te denken
6 I2C bus heb ik niet eerder mee gewerkt, is het in 2dagen te leren?(16-18uur serieus werken)
7mijn uc zijn 16f628
mijn protocol zijn gewoon hoog/laag die worden vergeleken doormiddel van een timer waardoor ik weet welk lampje aan moet.

[Bericht gewijzigd door gohan127 op maandag 1 mei 2006 15:25:07

Hier heb je nog geen antwoord op gegeven.

Op 1 mei 2006 15:10:43 schreef The Headhunter:
Wat is de afstand tussen de controllers?
Gebruiken ze nu een gemeenschappelijke gnd?
Zijn de datalijnen ontkoppeld dmv 100nF?
zijn de poorten via een 1n4148 gekoppeld aan 5v en gnd om over en onder spanning te voorkomen?
Hoe denk je over 1-wire protocol?
hoe denk je over een I2C bus?
welke controllers gebruik je?
Hoe ziet je protocol er nu uit?

RS232 werkt wel met ground, icm met RX (Receive) en TX (Transmit).
Heb je al geprobeerd om de lange kabels te twisten / af te schermen?

rs232 heeft dus 3 signalen?
op dit moment zit alles nog gewoon met (korte) draadjes aan elkaar met maar2 standen, geen hf. .
srry zo snel kon ik niettypen: )
als jullie het nodig vinden kan ik een compleet schema van mijn test opstelling maken met de asmfile die ik gebruik, duurt alleen ff. zou dat helpen?

[Bericht gewijzigd door gohan127 op maandag 1 mei 2006 15:30:34

Doe eerst maar eens een schema want zo te horen gaat het daar fout.

free_electron

Silicon Member

1 grond en 1 bidirectionele lijn
je rx poot komt van een pull up.
je tx poot gaat naar de gate van een mos die rx naar grond kan trekken.

die knoop mos/pullup wordt je verbindingsdraad samen met de grond

Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM

thx free_electron, eigenlijk heel stom van me, ik heb vaak genoeg serieele kabels voor me neus gehad en zelf gesoldeerd.
de er400 trs zal dan wel vanwelf de gnd doorsturen.
ik heb het schema wat ik gebruikt heb, net te groot om als meteen te laten vertonen dus her isie:
http://www.uploadarchief.net/files/download/wireless_1.JPG

zorg iig dat de potentialen van je data vastliggen met een paar 1n4841 van gnd naar de datalijn en van datalijn naar 5v.
Leg ook een paar 100nF naar gnd op je datalijn zo houd je piekjes(interupttrigger) buiten de deur.

okay, hartstikke bedankt, ik zal dat proberen zodra ik kan (morgen pas).

Wat je nu hebt (als je schema klopt) zijn gewoon je UARTs aan elkaar. Dat heeft dus geen zak met RS232 te maken...

Zorg dat je NOOIT, NOOIT, NOOIT wat met Versatel Tele2 te maken krijgt!

ja. . .
als ik uiteindelijk toch over kanalen moet verzenden/ontvangen waarom niet meteen de interupt/rx en tx pinnen pakken? kan ik later nog overschakelen als het moet. maar aangezien de hele uart setup mij koppijn heeft gegeven en ik er niet veel wijs uit kan maken heb ik dat laten schieten.
het zal hier weer ff stil zijn als ik vooruitgang hebt geboekt zal ik het laten weten.
9 mei:
ik ga toch de usart poort gebruiken als uart, de er400 trs kan niet met mijn hoog/laag signaaltjes overweg, ik heb hem getest maar krijg er niks uit. ik las wel ergens in de datasheet dat het voor uart comunicatie gemaakt, maar ze waren er vaag over.
ik heb de transceiver wel al aan mijn pc gehangen, dat werkte wel.

[Bericht gewijzigd door gohan127 op woensdag 10 mei 2006 09:17:01

hey jongens srry dat ik zolang niks heb laten horen.
ik ben druk bezig geweest en heb mijn eerste prog geschreven waarbij de uart gebruikt word, alleen blijftie haken. wat het prog hoort te doen: bij uc1 druk je op de knop en bij uc2gaat het ledje aan/uit (flipflop).
wat het prog doet: eenmaal de knop ingedrukt bij uc1 dan gaat bij uc2 het ledje 3keer aan/uit, bij de derde bijftie aanstaan. ik heb het idee dat het door rcif bit komt maar zelfs na 3x flushen toe te voegen doetie het nog niet. maak ik weer een domme fout hier?

code:

;*******************************************************************
; Function:  testprog uart comunicatie tusen 2 uc
; Processor: PIC16F628 at 20 MHz
; Hardware:  ra0=lampje1, rb0=schakelaar, rx&tx zijn draadloos verbonden
; Filename:  famous_vb.asm
; Author:    gohan candela gohan127@gmail.com
; Website:   www.qsl.net/oz1bxm/PIC/pic.htm
; Credit:    Lars Petersen, oz1bxm@qsl.net
;			 Tony Nixon's test program at
;            www.piclist.com/techref/microchip/16f877/setup.htm
;
;ook de poortenmoet op gelet worden.
;ra zijn allemaal outputs, ra0=lampje1
;FLIPFLOP bijwerken met schaduw register?
;
;*******************************************************************

        LIST P=16F628, R=DEC    ; Use the PIC16F628 and decimal system

        #include "P16F628.INC"  ; Include header file

        __config  _INTRC_OSC_NOCLKOUT & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON

        CBLOCK 0x20             ; Declare variable addresses starting at 0x20
        dataL
	TIMER1
	TIMER2
	TIMER3
		

        ENDC

        ORG    0x000            ; Program starts at 0x000
;
; --------------------------------
; SET ANALOG/DIGITAL INPUTS PORT A
; --------------------------------
;
        movlw 7
        movwf CMCON             ; CMCON=7 set comperators off
;
; ----------------
; INITIALIZE PORTS
; ----------------
;
        movlw 	b'00000000'       ; set up portA
        movwf 	PORTA

        movlw 	b'00000100'       ; RB2(TX)=1 others are 0 waarom hier al hoog?
        movwf 	PORTB

        bsf 	STATUS,RP0          ; RAM PAGE 1

        movlw 	0x00
        movwf 	TRISA             ; portA all pins output, 1=input

        movlw 	b'11110011'       ; RB7-RB4 and RB1(RX)=input,RB0=input, others output
        movwf 	TRISB

; ------------------------------------
; SET BAUD RATE TO COMMUNICATE WITH PC
; ------------------------------------
; Boot Baud Rate = 19200, No Parity, 1 Stop Bit
;
        movlw 0x40              ; 0x40=19200 bps,20mhz
        movwf SPBRG
        movlw b'00100100'       ; brgh = high (2)
        movwf TXSTA             ; enable Async Transmission, set brgh

        bcf STATUS,RP0          ; RAM PAGE 0

        movlw b'10010000'       ; enable Async Reception
        movwf RCSTA
;
; ------------------------------------
; PROVIDE A SETTLING TIME FOR START UP
; ------------------------------------
;
        clrf dataL
settle  decfsz dataL,F
        goto settle

        movf RCREG,0
        movf RCREG,0
        movf RCREG,0            ; flush receive buffer
;
; ---------
; MAIN LOOP
; ---------
;


MENU	BTFSC	PIR1,RCIF		;als data binnen is
		GOTO	EFFECT_1		;ga je naar effect1
		BTFSC	PORTB,0X00		;als RB0 hoog is
		GOTO	SEND			;ga je data zenden
		GOTO	MENU			;anders ga je terug naar menu
				

EFFECT_1	movf 	RCREG,0     ; save received data in W
TIMER		MOVLW	D'70'
			MOVWF	TIMER3
DEL_LOOP0	MOVLW   D'10'         ;54 Generate approx 10mS delay at 4Mhz CLK
                MOVWF   TIMER2
DEL_LOOP1       MOVLW   D'100'	       ;60	
                MOVWF   TIMER1
DEL_LOOP2	DECFSZ  TIMER1,F
                GOTO    DEL_LOOP2
                DECFSZ  TIMER2,F
                GOTO    DEL_LOOP1
		DECFSZ	TIMER3,F
		GOTO	DEL_LOOP0
		BTFSS	PORTA,0X00		;als lampje aan is..
		GOTO	LAMPJE_AAN	;deze instructie overslaan
		BTFSC	PORTA,0X00		;als lampje uit is...
		GOTO	LAMPJE_UIT	;zal deze instructie overgeslagen worden

LAMPJE_AAN	BSF		PORTA, 0x00
		GOTO	MENU

LAMPJE_UIT	BCF		PORTA, 0x00
		GOTO	TIMER
		movf 	RCREG,0     ; save received data in W
		movf 	RCREG,0     ; save received data in W
		GOTO	MENU
		

;
; -------------------------------------------------------------
; SEND CHARACTER IN W VIA RS232 AND WAIT UNTIL FINISHED SENDING
; -------------------------------------------------------------
;
send    movlw	'a'
		movwf 	TXREG             ; send data in W

TransWt bsf 	STATUS,RP0        ; RAM PAGE 1
WtHere  btfss 	TXSTA,TRMT        ; (1) transmission is complete if hi
        goto 	WtHere

        bcf 	STATUS,RP0          ; RAM PAGE 0
        goto 	MENU
		RETURN

        END