Kevinoud
Een zak tuinaarde opescheuren
Hallo,
Ik probeer een onderlinge communicatie tussen 2 pics tussen stand te brengen namelijk de 12F675 en de 16F877A
Helaas krijg ik het niet fatsoenlijk werkend met serin en shin en al die ander protocollen(heel veel opgezocht en de code die ik vind wil maar niet werken) dus probeerde ik het DMV
Pulsin en pulsout en een busy lijn zie hieronder mijn code.
Zoals te zien draaien bijde pic's op 20 Mhz
ZENDER
DEVICE 12F675 ;PIC12F675
CONFIG WDT_OFF, PWRTE_ON, MCLRE_OFF, HS_OSC
ALL_DIGITAL TRUE ;Alles digitaal alleen aan of uit
PORTB_PULLUPS = ON
dim VARiabele as byte
symbol BUSY = gpio.1
symbol DAT = gpio.2
clear
goto main
DATAzenden:
high busy
delayms 20
low busy
pulsout dat, variabele
return
Main:
While 1 = 1
delayms 10
gosub datazenden
for variabele = 1 to 255
delayms 50
next
wend
Ontvanger
EVICE 16F877A ;We gebruiken een 16F628A type
CONFIG WDT_OFF, PWRTE_ON, LVP_OFF, HS_OSC
Xtal 20 ;20Mhz kristal
ALL_DIGITAL TRUE ;Alle ingangen digitaal
portb_pullups on ;Alle pullup weerstanden voor de B poorten +5V (aan)
Declare LCD_ENPIN PORTC.7 ;LCD EN pin declareren
Declare LCD_RSPIN PORTC.6 ;LCD RS pin declareren
Declare LCD_DTPIN PORTD.4 ;LCD DT pinnen D4/D5/D6/D7 declareren
Declare SCL_PIN PORTc.5 ;Serial Clock Pin declareren
Declare SDA_PIN PORTc.4 ;Serial Data Pin declareren
symbol BUSY = porta.3
symbol DAT = porta.5
dim DATAbyte as byte
delayms 200
Clear
cls
goto main
DATAontvangen:
while busy = 1 : wend
databyte = pulsin dat, 1
return
Main:
while 1 = 1
if busy = 1 then
gosub dataontvangen
endif
if databyte > 30 then
high portb.5
delayms 300
else
low portb.5
endif
print at 1, 1, @databyte, " "
wend
Ik wil graag weten wat en hoe doe ik het fout en waarom?
Ik kom er niet uit.
Kevinoud
Een zak tuinaarde opescheuren
idd jan ik zie het.
Nieuwe poging volgens commando's uit picbasic:
Ik krijg als ik voor variabele bijv 12 tik perfect 12 eruit.
Echter zodra ik de regel zoals hier onder (for variabele = 1 to 255) dan krijg ik niks meer door naast een paar random getallen 
zender
DEVICE 12F675 ;PIC12F675
CONFIG WDT_OFF, PWRTE_ON, MCLRE_OFF, HS_OSC
ALL_DIGITAL TRUE ;Alles digitaal alleen aan of uit
PORTB_PULLUPS = ON
xtal 20
dim VARiabele as byte
symbol DAT = gpio.2
clear
while 1 = 1
SEROUT dat, 3313, ["WW", Variabele]
for variabele = 1 to 255
wend
ontvanger
DEVICE 16F877A ;We gebruiken een 16F628A type
CONFIG WDT_OFF, PWRTE_ON, LVP_OFF, HS_OSC
Xtal 20 ;20Mhz kristal
ALL_DIGITAL TRUE ;Alle ingangen digitaal
portb_pullups on ;Alle pullup weerstanden voor de B poorten +5V (aan)
Declare LCD_ENPIN PORTC.7 ;LCD EN pin declareren
Declare LCD_RSPIN PORTC.6 ;LCD RS pin declareren
Declare LCD_DTPIN PORTD.4 ;LCD DT pinnen D4/D5/D6/D7 declareren
Declare SCL_PIN PORTc.5 ;Serial Clock Pin declareren
Declare SDA_PIN PORTc.4 ;Serial Data Pin declareren
symbol DAT = porta.5
dim DATAbyte as byte
delayms 200
Clear
cls
Main:
while 1 = 1
SERIN dat, 3313, [WAIT("WW"), databyte]
print at 1, 1, dec databyte, " "
wend
dit daarintegen voor zender werkt perfect
while 1 = 1
SEROUT dat, 3313, ["WW", Variabele]
if gpio.1 = 1 then
variabele = 212
elseif gpio = 0 then
variabele = 38
endif
wend
alleen veel storing bij draden langer dan 10 cm.
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
Kevinoud
Een zak tuinaarde opescheuren