Lithium
Zeg me wat je nodig hebt en ik zal je vertellen hoe je zonder kunt
Ja denk ook wel dat een 7805 handig kan zijn in de kleine uitvoering zoals je al zei.
Ik moet even kijken of ik kan vinden hoe uart in elkaar zit, ik heb het wel ooit gebruikt vorig jaar maar dat was rechtstreeks naar een andere pic.
Ik heb aurt gebruikt in proton ide en wat je daar in kon stellen was de snelheid, wachtwoord, de variabel en nog iets maar wat en hoe weet ik niet meer.
Is dat mogelijk om dit zo in te stellen in proton dat het ook te gebruiken is met de max?
EDIT:
Opgezocht in de datasheet van de pic 16f628a
pagina 80.
Daar zie je een tabel met de bits die hij verstuurt.
De start bit is laag en de stopbit is hoog
En hij heeft 7 tot 8 bits.
Dat zou dan toch gelijk moeten zijn met die max485?
[Bericht gewijzigd door Lithium op (20%)]
wachtwoord, de variabel en nog iets maar wat en hoe weet ik niet meer.
Als ik deze zin zo lees denk ik dat je je eerst beter in de werking van de UART kunt verdiepen. Eerst leren lopen, dan rennen. Nogmaals de MAX BUFFERT alleen, als je UART "gewoon" goed werkt , werkt ie ook bijna (de max485 heeft ook nog een "richting" signaal nodig) met de MAX.
Groeten, Bram
Lithium
Zeg me wat je nodig hebt en ik zal je vertellen hoe je zonder kunt
Ik wacht de onderdelen even af en dan laat ik wel weten of het wel of niet lukt, en wat er aangepast is.
Op wiki staat genoeg over uart, dat lees ik gewoon
http://en.wikipedia.org/wiki/UART
[Bericht gewijzigd door Lithium op (30%)]
dat lees ik gewoon
"The proof of the pudding is in the eating", ik zou gewoon eens een picje programmeren en je PC er via RS232 en hyperterminal aanhangen. Dan kun je precies zien wat er gebeurt.
Groeten, Bram
En als je nu eens gewoon iets als I2C of SPI zou gebruiken? Microcontrollers vinden dat leuke protocollen, en het is makkelijk om foutcorrectie in te bouwen, en je hebt ook meteen wat gemakkelijks om je slaves bij naam te noemen. Als kabel kun je iets gebruiken als een CAT6 kabel.
Op 29 juli 2008 09:41:19 schreef EddyDean:
En als je nu eens gewoon iets als I2C of SPI zou gebruiken? Microcontrollers vinden dat leuke protocollen, en het is makkelijk om foutcorrectie in te bouwen, en je hebt ook meteen wat gemakkelijks om je slaves bij naam te noemen. Als kabel kun je iets gebruiken als een CAT6 kabel.
Beide zijn niet zo geschikt voor communicatie over een afstand van meer dan 1M, en rs458 is veel makkelijker uit te voeren.
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Een eenvoudige, doch niet officiële verbinding staat op www.picbasic.nl/huis-automatisering.htm
Betreft een artikel over domotica met PIC.
Lithium
Zeg me wat je nodig hebt en ik zal je vertellen hoe je zonder kunt
Lithium
Zeg me wat je nodig hebt en ik zal je vertellen hoe je zonder kunt
Frits,
Ik heb uw website gelezen zoals u weet.
Wat ik me dan toch af vraag.
Stel ik heb een pic met die tijd klok erop om de tijd op te halen.
En ik wil bij een andere pic weten hoelaat het is.
Hoe gaat dat in zijn werk? je vraagt de tijd met 1 van de 154 mogelijkheden.
maar hoe stuur je de tijd dan terug? kan je tekst mee sturen of iets?
ik zocht eigenlijk naar zo'n stukje code.
Hoeft niet speciaal gemaakt te worden maar neem aan dat u iets heeft liggen?
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Het klok-IC PCF8583 alsook de DCF77 PIC zitten rechtstreeks verbonden naast de PIC18F452 master PIC.
Het is dus nu niet mogelijk om elke PIC op de bus de tijd op te laten vragen met dit 16-bit pakketje.
Daarvoor moet je dus zelf een protocol verzinnen.
Bij mij hoeft ook alleen de master de tijd te weten omdat in deze PIC de ingestelde tijden staan met bijbehorende opdrachten.
Bijvoorbeeld:
SELECT Tijd
CASE 0400 ;04:00 uur
Opdracht = ResetCancels ;'s Nachts 4:00 alle cancels resetten
GOTO OpdrachtUitvoeren
CASE 0700
IF AnnuleerRamen = FALSE THEN ;Ramen niet geannulleerd? Dan...
IF TempBuiten > 1500 AND NegTemp = FALSE THEN ;Buiten warmer dan 15,00 graden Celsius? Dan...
Opdracht = RaamOpenen ;Open kamerraam
GOSUB ZendBus ;Verzend opdracht via bus
Opdracht = RaamKOpenen ;Open keukenraam
GOTO OpdrachtUitvoeren ;Keukenraam zit aan master zelf
ENDIF
ENDIF
CASE 0800
Opdracht = LuxaflexOpenen ;Luxaflex openen
GOSUB ZendBus ;Verzenden over de bus
IF Dag = Donderdag THEN ;Alleen donderdags (lawaai vuilnisophaler)
IF UitBedTijd > Tijd THEN ;Ligt nog iemand in bed?
Opdracht = RaamSSluiten ;Sluit slaapkamerraam
GOTO OpdrachtUitvoeren ;Slaapkamerraam zit aan master zelf
ENDIF
ENDIF
CASE 2230
Celsius = TempEconomic ;Verwarming lager
GOSUB Nefit ;Verzenden met 300Baud naar thermostaat
Opdracht = RaamSluiten ;Kamerraam sluiten
GOSUB ZendBus ;Zend opdracht over de bus
ENDSELECT
Nu is dit maar een klein stukje uit de lijst.
Elke PIC wordt dus door tijd aangestuurd, maar weet de werkelijke tijd niet, dat weet alleen de master.
Het kan wel, maar dan moet je met je PIC's gezamelijk iets afspreken, oftewel een protocol verzinnen.
Het staat ook bij mij nog in de kinderschoenen.
Het is nu nog statisch, kan tijden nu alleen wijzigen in Proton en de master PIC opnieuw programmeren (maar een wijziging is zelden nodig, ben ik al achter).
Maar ik ben dan ook nog niet klaar met het project, ik werk er nog steeds aan.
Met de Pronto Neo afstandsbediening of een encoder o.i.d. moet ik straks door een menu kunnen wandelen en tijden met opdrachten in kunnen stellen.
De master stuurt ook het display aan waarop continu de tijd wordt weergegeven, het klok-IC wordt elke seconde uitgelezen.
marcob
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
@Frits, mischien voor jouw een interesante link als toevoeging voor je systeem. Een PIC via de seriele aansluiting koppelen met je PC. Kan de PIC commando's en macro's uitvoeren op de PC.
http://www.pcremotecontrol.com/software/pcrcsoft.htm
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Dat van die PC heb ik in overweging gehad.
Ik vind het nadeel dat je dan eerst je PC moet opstarten (heb hem niet de hele dag aan staan).
Maar goed, het is er natuurlijk bij in te bouwen.
Eerst maar eens een menu met encoder toevoegen aan de master PIC.
Lithium
Zeg me wat je nodig hebt en ik zal je vertellen hoe je zonder kunt
in plaats van die master pic kan je ook die afstandsbediening gebruiken, hier is het snel in aan te passen.
ik heb op school een i pronto geprogrammeerd werkt simpel en snel.
wij kunnen er een groot computer lokaal mee besturen.
rolluiken, tl lampen, spotjes, tv scherm, beamer, versterker, radio etc.
je kan bijna elke tl afzonderlijk dimmen en een licht sterkte instellen.
ook wat standaard dingen zoals bioscoop.
dan gaan bepaalde lampen dimmen, rolluiken omlaag beamer naar beneden aan etc.
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Maar het gaat hier om tijden (timers) instellen.
Hoe wil je dat met die afstandsbediening doen?
Als ik wil dat de luxaflex niet om 9:00, maar om 9:30 open gaat, dan moet ik (nu nog) de PIC herprogrammeren.
Ik zie niet in hoe je deze tijd met die afstandsbediening kunt wijzigen.
Lithium
Zeg me wat je nodig hebt en ik zal je vertellen hoe je zonder kunt
je kan die dingen programmeren naar je eigen stijl.
je kan ook instellingen veranderen.
in plaats van de master pic heb je die afstands bediening.
hij moet dan wel altijd aan staan masr die kan bijv om 9:30 een ir of rf codevverzenden naar een pic.
zoals een repeater
Lithium
Zeg me wat je nodig hebt en ik zal je vertellen hoe je zonder kunt
Mijn versie van Proton IDE is binnen.
Ik heb de Lite versie al een aantal jaren en nu heb ik hem maar gewoon gekocht.
Er zit ook een VSM programma in (Proteus ISIS Professional)
Helaas is dit maar een demo, dit is ook een erg mooi programma erg balen dat het een demo is.
Je zou ook een master processor maken die een script inleest van een SD kaartje of zo.
Groeten, Bram
Lithium
Zeg me wat je nodig hebt en ik zal je vertellen hoe je zonder kunt
Frits, of misschien iemand anders.
Ik ben nu deze middag bezig met het verzenden en ontvangen van data.
Het volgende programma lukt bij mij:
Ontvanger
code:
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : Lithium *
'* Notice : Copyright (c) 2008 Lithium'* : All Rights Reserved *
'* Date : 3-3-2008 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
DEVICE 16F628A ;Gebruik een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE ;Alle ingangen digitaal
PORTB_PULLUPS ON ;On-chip pull-up weerstanden actief
CLEAR ;Wis alle RAM geheugen
Dim tekst As dWord
;Logische constanten
SYMBOL AAN = 0 ;Geinverteerd ON
SYMBOL HOOG = 1 ;Signaal met hoog niveau
SYMBOL LAAG = 0 ;Signaal met laag niveau
SYMBOL TRUE = 1 ;Waar
SYMBOL FALSE = 0 ;Niet waar
SYMBOL OFF = 0 ;
SYMBOL ON = 1 ;
SYMBOL UIT = 1 ;Geinverteerd OFF
Symbol baud = 4800 ;baud snelheid communicatie
symbol timeout = 20 ;Timeout tussen communicatie
SYMBOL ingang = PORTA.0 ;Ingang voor seriele communicatie
SYMBOL uitgang = PORTA.1 ;Uitgang voor seriele communicatie
symbol antidender = 25
dim DATAbyte as byte
delayms 200
Clear
cls
Main:
while 1 = 1
SERIN ingang, 3313, [WAIT("WW"), databyte]
if databyte = 255 Then
cls
Print at 1, 1, "Tekst 1"
endif
if databyte = 254 Then
cls
Print at 1, 1, "Tekst 2"
Endif
wend
Zender:
DEVICE 16F628A ;Gebruik een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE ;Alle ingangen digitaal
PORTB_PULLUPS ON ;On-chip pull-up weerstanden actief
CLEAR ;Wis alle RAM geheugen
;Logische constanten
SYMBOL AAN = 0 ;Geinverteerd ON
SYMBOL HOOG = 1 ;Signaal met hoog niveau
SYMBOL LAAG = 0 ;Signaal met laag niveau
SYMBOL TRUE = 1 ;Waar
SYMBOL FALSE = 0 ;Niet waar
SYMBOL OFF = 0 ;
SYMBOL ON = 1 ;
SYMBOL UIT = 1 ;Geinverteerd OFF
Symbol baud = 4800 ;baud snelheid communicatie
symbol timeout = 20 ;Timeout tussen communicatie
SYMBOL ingang = PORTA.0 ;Ingang voor seriele communicatie
SYMBOL uitgang = PORTA.1 ;Uitgang voor seriele communicatie
symbol antidender = 25
SYMBOL Toets = PORTA.2 ;Ingang voor toets
symbol VARiabele = 255
symbol VARiabele2 = 254
GOTO HoofdProgramma ;Spring over de subroutine(s)
HoofdProgramma:
WHILE 1 = 1
SEROUT uitgang, 3313, ["WW", Variabele]
DELAYMS 1000
SEROUT uitgang, 3313, ["WW", Variabele2]
delayms 1000
Wend
goto hoofdprogramma
end
Dit is dezelfde code die ik al eens geprobeerd heb.
Nu had ik als ontvanger uw code gebruikt en wat aan gepast want ik gebruik gewoon RX en TX zonder transistor etc.
Dat lukt maar als ik dan ook de zender die code geef zodat ze alle 2 zenden en ontvangen lukt het me niet meer.
Ik heb me schoop op de RX gezet van de ontvanger en de zender zendt een aantal keer een code maar daarna niet meer.
Als de code verzonden wordt gaat het test ledje niet aan of uit.
Iemand die me uit de brand kan helpen?
deze code zit nu in alle 2 de pic's
DEVICE 16F628A ;Gebruik een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE ;Alle ingangen digitaal
PORTB_PULLUPS ON ;On-chip pull-up weerstanden actief
CLEAR ;Wis alle RAM geheugen
Dim tekst As dWord
;Logische constanten
SYMBOL AAN = 0 ;Geinverteerd ON
SYMBOL HOOG = 1 ;Signaal met hoog niveau
SYMBOL LAAG = 0 ;Signaal met laag niveau
SYMBOL TRUE = 1 ;Waar
SYMBOL FALSE = 0 ;Niet waar
SYMBOL OFF = 0 ;
SYMBOL ON = 1 ;
SYMBOL UIT = 1 ;Geinverteerd OFF
Symbol baud = 2400 ;baud snelheid communicatie
symbol timeout = 20 ;Timeout tussen communicatie
SYMBOL LED = PORTA.0 ;Hierop een LED met serieweerstand aansluiten
SYMBOL ingang = PORTB.1 ;Ingang voor seriele communicatie RX
SYMBOL uitgang = PORTB.2 ;Uitgang voor seriele communicatie TX
symbol antidender = 25
dim Opdracht as byte
DIM Waarde AS BYTE
Clear ;Wis alle ram geheugen
LED = hoog
delayMS 500
LED = Laag
;SUBROUTINE
ZendBus: ;De bus die door het huis loopt
SEROUt uitgang,Baud, [Opdracht, Waarde] ;Zenden van de opdracht
RETURN
;HOOFDPROGRAMMA
HoofdLus:
CLEAR Opdracht ;Opdracht (na uitvoering) wissen
CLEAR Waarde ;Idem voor 'Waarde'
SERIn ingang, baud, 50, verder, [Opdracht, Waarde] ;ontvangen van de data
GOTO OpdrachtUitvoeren ;Voer opdracht uit
Verder: ;In het geval van een time-out van HSERIN, hier verder gaan
Opdracht = 26 ;Verzendt waarde 26 over de bus
GOSUB ZendBus
GOTO HoofdLus
OpdrachtUitvoeren:
SELECT Opdracht ;Deze SELECT lijst bepaalt wat een ontvangen opdracht gaat doen
CASE 26 ;Als de waarde '26' is ontvangen van de bus, dan...
toggle led ;... de LED aan of uitzetten (togglen)
END SELECT
GOTO HoofdLus ;Ga weer naar de oneindige hoofdlus
Lithium
Zeg me wat je nodig hebt en ik zal je vertellen hoe je zonder kunt
Even update.
Dit werkt nu wel:
Dit was zonde max ic en de pic's zaten aan elkaar op RX en TX
Nu de max er tussen zetten en nog een code toevoegen en dan testen.
DEVICE 16F628A ;Gebruik een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE ;Alle ingangen digitaal
PORTB_PULLUPS ON ;On-chip pull-up weerstanden actief
CLEAR ;Wis alle RAM geheugen
;Logische constanten
SYMBOL HOOG = 1 ;Signaal met hoog niveau
SYMBOL LAAG = 0 ;Signaal met laag niveau
Symbol baud = 2400 ;baud snelheid communicatie
symbol timeout = 20 ;Timeout tussen communicatie
SYMBOL LED = PORTA.0 ;Hierop een LED met serieweerstand aansluiten
SYMBOL ingang = PORTB.1 ;Ingang voor seriele communicatie RX
SYMBOL uitgang = PORTB.2 ;Uitgang voor seriele communicatie TX
SYMBOL Toets = PORTB.0 ;Toets voor verzenden van een waarde over de bus
; 76543210
PORTA = %00000000 ;Alle PORTA poorten laag
OUTPUT LED ;Stel led in als ouput
Input Toets ;Stel Toets in als input
symbol antidender = 25 ;Antidender van 25ms
dim Opdracht as byte ;Declareren van Opdracht
DIM Waarde AS BYTE ;Eventueel retour gezonden waarde (zoals gemeten LDR waarde)
Clear ;Wis alle ram geheugen
;Opstart zie je dat de pic aan gaat
LED = hoog
delayMS 500
LED = Laag
;HOOFDPROGRAMMA
HoofdLus:
CLEAR Opdracht ;Opdracht (na uitvoering) wissen
CLEAR Waarde ;Idem voor 'Waarde'
SERIn ingang, baud, 7, verder, [Opdracht, Waarde] ;ontvangen van de data
GOTO OpdrachtUitvoeren ;Voer opdracht uit
Verder: ;In het geval van een time-out van HSERIN, hier verder gaan
IF Toets = LAAG THEN ;Als toets wordt ingedrukt, dan...
Opdracht = 26 ;Verzendt waarde 26 over de bus
GOSUB ZendBus ;Ga naar Subroutine zendbus
DELAYMS 20 ;Antidender voor indrukken van de toets
WHILE Toets = Laag : WEND ;Wacht tot toets wordt losgelaten, anders blijft hij zenden
DELAYMS 20 ;Antidender voor loslaten van de toets
ENDIF
GOTO HoofdLus ; Ga naar hoofdlus
OpdrachtUitvoeren: ;Subroutine opdracht uivoeren
SELECT Opdracht ;Deze SELECT lijst bepaalt wat een ontvangen opdracht gaat doen
CASE 26 ;Als de waarde '26' is ontvangen van de bus, dan...
toggle led ;... de LED aan of uitzetten (togglen)
END SELECT
GOTO HoofdLus ;Ga weer naar de oneindige hoofdlus
;SUBROUTINE(S)
ZendBus: ;De bus die door het huis loopt
SEROUt uitgang,Baud, [Opdracht, Waarde] ;Zenden van de opdracht
RETURN ;Ga terug waar het programma vandaan kwam
Ik heb nu de max ic's er tussen zitten en die werken op 12V
Nu heb ik een 12V voeding met een 7805 erbij gezet om de pic's te voeden.
Als ik nu een knopje in druk om data te verzenden gaat het ledje van de 5V even heel snel dimmen en dan weer aan.
Dat kan ik op de scoop ook zien als een spanning val.
Hoe komt dit en hoe kan ik dit op lossen? grote elco er tussen?
Lithium
Zeg me wat je nodig hebt en ik zal je vertellen hoe je zonder kunt
Ik hoop dat iemand mij hiermee zou kunnen helpen.
Ik heb de code van firts gebruikt met de interrupts.
Die heb ik gepast omdat ik gewoon RX en TX gebruik.
De code staat hieronder, als ik wil verzenden lukt dat wel maar wil ik ontvangen lukt het me niet.
Ik weet niet wat er fout gegaan is, of iets met de interrupts denk ik of met Interrupts afhandeling.
Is er iemand die mij hiermee kan helpen?
DEVICE 16F628A ;Gebruik een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF, BODEN_OFF
ALL_DIGITAL TRUE ;Alle ingangen digitaal
PORTB_PULLUPS ON ;On-chip pull-up weerstanden actief
CLEAR ;Wis alle RAM geheugen
;Logische constanten
SYMBOL HOOG = 1 ;Signaal met hoog niveau
SYMBOL LAAG = 0 ;Signaal met laag niveau
Symbol baud = 2400 ;baud snelheid communicatie
symbol timeout = 20 ;Timeout tussen communicatie
Symbol Uitgang1 = porta.1 ;Hierop zit uitgang 1 aangesloten transistor met led's
SYMBOL LED = PORTA.0 ;Hierop een LED met serieweerstand aansluiten
SYMBOL ingang = PORTB.1 ;Ingang voor seriele communicatie RX
SYMBOL uitgang = PORTB.2 ;Uitgang voor seriele communicatie TX
SYMBOL Toets = PORTB.0 ;Toets voor verzenden van een waarde over de bus
Symbol Zenden = PORTB.3 ;uitgang voor het zenden en ontvangen met de max, laag om te ontvangen en hoog om te zenden
; 76543210
PORTA = %00000000 ;Alle PORTA poorten laag
Output Uitgang1 ;Uitgang instellen
Output zenden ;Stel zenden in als output
OUTPUT LED ;Stel led in als output
Input Toets ;Stel Toets in als input
symbol antidender = 25 ;Antidender van 25ms
;Variabelen declareren
;WORD-ARRAY
DIM Buffer[4] AS WORD ;Ontvangst buffer van de USART (een array)
;WORD
DIM OntvangenData AS WORD ;Bevat de ontvangen 16-bits data vanuit USART
;BYTE
dim Opdracht as byte ;Declareren van Opdracht
DIM Waarde AS BYTE ;Eventueel retour gezonden waarde (zoals gemeten LDR waarde)
DIM BD1 AS BYTE ;Byte Dummy 1
Clear ;Wis alle ram geheugen
Zenden = laag ;Om te ontvangen via uart
;Opstart zie je dat de pic aan gaat
LED = hoog
delayMS 5
LED = Laag
ON_INTERRUPT GOTO InterruptAfhandeling ;Spring naar label als data is ontvangen door de USART
INTCON.7 = 1 ;GIE (Global Interrupt Enable) activeren
INTCON.6 = 1 ;PEIE (PEripheral Interrupt Enable) activeren
PIE1.5 = 1 ;RCIE (USART ReCeive Interrupt Enable) activeren
GOTO HoofdLus ;Spring over subroutine(s)
;SUBROUTINE zendbus is het zenden van de opdracht op de bus--------------------------------------
ZendBus: ;De bus die door het huis loopt
Zenden = hoog ;Maak pin Zenden hoog om te zenden via uart
SEROUt uitgang,Baud, [Opdracht, Waarde] ;Zenden van de opdracht
Zenden = Laag ;Maak zenden weer laag om weer te kunnen ontvangen
RETURN ;Ga terug waar het programma vandaan kwam
;------------------------------------------------------------------------------------------------
;----------------------------------------------------------------------------------------------
;HOOFDPROGRAMMA
HoofdLus:
CLEAR Opdracht ;Opdracht (na uitvoering) wissen
CLEAR Waarde ;Idem voor 'Waarde'
IF Buffer[0] > 0 THEN ;Zolang er zich een opdracht in de buffer bevindt, dan...
Opdracht = Buffer[0] & 255 ;De laagste 8 bits bevatten de Opdrachtbyte
Waarde = Buffer[0] >> 8 ;De hoogste 8 bits bevatten een eventueel meegezonden waarde
Buffer[0] = Buffer[1] ;Schuif de waarden die in de buffer zitten 1 verder door
Buffer[1] = Buffer[2]
Buffer[2] = Buffer[3]
Buffer[3] = 0 ;Maak laatste bufferplaats leeg (opdracht en waarde wissen)
GOTO OpdrachtUitvoeren ;Voer opdracht uit
ENDIF
;-----------------------------------------------------------------------------------------------
;Hoofdlus voor toetsen zenden en andere dingen--------------------------------------------------
IF Toets = LAAG THEN ;Als toets wordt ingedrukt, dan...
Opdracht = 26 ;Verzendt waarde 26 over de bus
GOSUB ZendBus ;Ga naar Subroutine zendbus
DELAYMS 2 ;Antidender voor indrukken van de toets
WHILE Toets = Laag : WEND ;Wacht tot toets wordt losgelaten, anders blijft hij zenden
DELAYMS 2 ;Antidender voor loslaten van de toets
ENDIF
GOTO HoofdLus ; Ga naar hoofdlus
;------------------------------------------------------------------------------------------------
;SUBROUTINE opdrachtuitvoeren, opdracht die binnen gekomen is wordt hier uitgevoerd--------------
OpdrachtUitvoeren: ;Subroutine opdracht uivoeren
SELECT Opdracht ;Deze SELECT lijst bepaalt wat een ontvangen opdracht gaat doen
CASE 26 ;Als de waarde '26' is ontvangen van de bus, dan...
Toggle uitgang1 ;... de LED aan of uitzetten (togglen)
END SELECT
GOTO HoofdLus ;Ga weer naar de oneindige hoofdlus
;------------------------------------------------------------------------------------------------
;SUBROUTINE interruptafhandelen, als er data binnen komt wordt het hier afgehandeld--------------
InterruptAfhandeling: ;Uitlezen en leegschuiven van buffer gebeurt in hoofdprogramma
SERIn ingang, baud, 7, verder, [OntvangenData] ;ontvangen van de data
FOR BD1 = 0 TO 3 ;Buffer met plaats voor maximaal 4 WORD arrays (0...3)
IF Buffer[BD1] = 0 THEN ;Bufferplaats nog leeg? Dan...
Buffer[BD1] = OntvangenData ;...hierin de ontvangen data plaatsen, en...
BREAK ;...uit de FOR...NEXT lus springen
ENDIF
NEXT
Verder: ;In het geval van een time-out, hier verder gaan
CONTEXT RESTORE ;Restore registers, ga terug naar plek waar interrupt ontstond
GOTO HoofdLus ;Zekerheid, eigenlijk staat dit er overbodig
[Bericht gewijzigd door Lithium op (88%)]
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Als je beide PIC's precies hetzelfde hebt aangesloten en beide PIC's hebben hetzelfde programma dan móet het in beide richtingen werken.
Er zit iets scheef bij je schakeling.
Lithium
Zeg me wat je nodig hebt en ik zal je vertellen hoe je zonder kunt
Even een update,
De test opstelling werkt prima, kan netjes een led togglen door een andere pic.
Heb ook al een grafisch lcd scherm aangesloten op mijn master pic (16f877a)
Nu ben ik met de laatste fase bezig om een DCF-77 klok op me pic aan te sluiten samen met de licht sterkte en temperatuur op een display te zetten.
Ook elke minuut wordt de tijd, lichtsterkte en temperatuur door verzonden.
Moet alleen nog even kijken of dat allemaal lukt.
Hier een plaatje van mijn test print...
Ik gebruik het zend gedeelte via een transistor zoals frits die ook gebruikt.
Verder gebruik ik me eigen inbreng op andere spullen.
Zat te werken en had mijn module buiten gehanden om de tijd binnen te krijgen.
Lekker gaan eten en toen begon het te regenen en ik ben vergeten de module binnen te hangen.
helaas is hij nu overleden 
Plaatje:
Dit is een test printje dat ik heb laten etsen.
Kijken of het geheel netjes werkt op printje en daar kan ik mooi mee verder testen.
helaas herkent het programma niet alle onderdelen zoals hier de condensator...
Wel ideaal om eens te bekijken hoe het eruit gaat zien.
Lithium
Zeg me wat je nodig hebt en ik zal je vertellen hoe je zonder kunt
Ik heb vandaag de S202S01 en 02 binnen gekregen.
Deze wil ik gaan gebruiken om een lamp te schakelen.
Ik heb ze alle 2 besteld omdat ik 1 lamp wil laten dimmen en de ander is een tl lamp dus dat is niet nodig.
De vraag is, kan ik dat ic in een wand doos zetten? (grijs vierkante lasdoos) of wordt hij daar te warm voor?
Zonder koelplaat enzo?
Ik heb ook een lamp met een trafo + 2 spotjes van 12 hangen.
Kan ik die trafo gewoon dimmen om mijn licht te dimmen of is dat niet goed voor mijn trafo?
Lithium
Zeg me wat je nodig hebt en ik zal je vertellen hoe je zonder kunt
Het is even geleden dat ik hiermee verder gegaan ben.
Ik wil alles nu weer netjes op pakken.
Wegens omstandigheden en werk is het niet snel gelopen.
Ik heb weekend na gedacht hoe ik alles aan ga pakken en heb alles nu netjes op een rijtje.
De bedoeling is om mijn schakelaar te vervangen door een printje, daarin domotica verwerkt.
Een pic master, het hoofd ic dat zorgt voor de goede aansturing.
Stel ik druk op de schakelaar gaat er een signaal naar de hoofd pic waar die vervolgens weer een signaal door stuurt.
Waarom ik dit zo bedacht heb is omdat ik op deze manier makkelijk dingen in mijn programma kan wijzigen, en hoef dus niet meer mijn schakelaar open te maken om opnieuw te programmeren.
Vervolgens heb ik een 4 tal felle witte leds boven op me balk zitten die sfeer licht moeten geven als het donker is.
Verder nog een gewone tl lamp en een 2 tal spotjes op 12V die ik wil kunnen dimmen.
Ook heb ik een pic-web gekocht van olimex.
Deze gaat ook een rol spelen in de domotica.
Omdat ik in C niet weet hoe ik de communicatie tot stand kan brengen ga ik het anders doen.
Zoals de parallelle printer poort.
1 bit om aan te geven dat er data is en 7 andere bits voor de data.
Dit ook andersom, zodat ik op internet kan zien wat er precies aan en uit is.
Verder kan ik dus alles gaan besturen via internet en gewoon met schakelaars.
Ook kan ik mijn computer etc. aan zetten enzo.
Alles staat nog in de test planken.
Hier onder enkele foto's zijn niet altijd even scherp sorry daarvoor.
Pic-web:
Printje 1, deze kan ik overal in me kamer neerleggen, heeft standaard 8 I/O poorten kan hem dus bijna overal voor gebruiken.(onscherp)
Print voor in de schakelaar:
Dan nog me werk plekje, er staat niet zoveel op bordje dat heb ik er pas af gehaald:
Rechts onder in beeld nog de printjes, de grote is de test print.
De andere ga ik gebruiken.
Verder heb ik de sharp even op een bordje gezet.
Daar een oude wekker aangesloten om het even te testen 
Lithium
Zeg me wat je nodig hebt en ik zal je vertellen hoe je zonder kunt
Vandaag ben ik begonnen om de boel te installeren.
De schakelaar + TL schakeling zitten.
Morgen ga ik verder met de spotjes en led verlichting.
Ik zal kijken of ik foto's kan maken, er valt niks van te zien:P
Alles zit netjes weg gewerkt en ingebouwd.