Hallo Burki,
werde mal die Schaltung, wie in meinen vorherige Beitrag gezeichnet habe, aufbauen und anschließend ein Listing dazu schreiben.
Damit ich auch sehe, ob es funktioniert...
![]()
Weiß aber nicht, ob ich heute noch dazu komme.
Hallo Burki,
werde mal die Schaltung, wie in meinen vorherige Beitrag gezeichnet habe, aufbauen und anschließend ein Listing dazu schreiben.
Damit ich auch sehe, ob es funktioniert...
![]()
Weiß aber nicht, ob ich heute noch dazu komme.
### Silvio ###
Danke Silivio - es muss nicht heut oder morgen sein bin da flexibel und nicht unter Druck - siehst eh, man muss immer probieren und viel denken aber da bist du mir schon um ein paar Galaxien voraus - vielleicht machts bei mir auch mal klick bin immer am lesen und studieren wenn ich mal ne freie minute hab - hast Du die ICs schon ? für Lichtschranke - stehe zu meinem Angebot wenn Du die brauchen kannst - damit muss ich mich dann auch noch beschäftigen - hi --- freu mich schon bis Deine Tests und Info hi- also bis dann gruß Burki
Hallo Burki,
habe schnell was in den Editor getippt....
Leider nicht testen können
![]()
edit:
so funktioniert es bei mir
mit Interrupt schaut es etwas kompliziert aus...
Schicks mal durch den Bascom-Compiler...Code:'****************************************************************************** 'Abfrage der Eingänge Port3 und Port4 am RNBFRA-Board, wenn Interrupt Int2 durch Eingang ausgelöst wird 'Powerport wird auf High geschalten, wenn Port3(Taste1) betätigt 'Powerport wird auf Low geschalten, wenn Port4(Taste2) betätigt 'Unterprogramme(Relais_on/ off schalten Power-Port $regfile = "m32def.dat" $baud = 9600 $crystal = 8000000 'Quarzfrequenz Config Scl = Portc.0 'Ports fuer I2C-Bus Config Sda = Portc.1 Config Pinb.2 = Input 'Interrupt Int2 (Pinb.2 als Eingang) Portb.2 = 1 'PullIp ein (Potential am Pin ist High) 'Eingangs-Port Const Writeeingabeport_adr = &H7E 'I2C Adr PCF 2 (Schreibadresse) Const Readeingabeport_adr = &H7F 'I2C Adr PCF 2 (Leseadresse) 'Power-Port Const Writepowerport_adr = &H72 'I2C Adr PCF 1 (Schreibadresse) Const Readpowerport_adr = &H73 'I2C Adr PCF 1 (Leseadresse) Dim I2cdaten As Byte 'Datenbyte aus PCF8574 Dim Taste1 As Byte 'Taste 1 (Eingangsport-Port3) Dim Taste2 As Byte 'Taste 2 (Eingangsport-Port4) Dim V As Byte 'Variable wird nur für Ausgabe benötigt Dim Flag As Bit I2cinit 'I2C Initialisieren I2cstart 'I2C START I2cwbyte &H74 'Schreibbefehl an PCF3 schicken 'Led´s ein ,Motorendstufen ein, Port-Peripherie ein, RBN-Bus Sleep Modus aus (also Peripherie aktiv) I2cwbyte &B00000010 'Datenbyte an PCF3 I2cstop 'I2C STOP Config Int2 = Falling Enable Int2 Enable Interrupts On Int2 Int2_isr Portd.6 = 0 'Schrittmotoren erst mal ausschalten I2cdaten = 0 'Variablen auf definierte Zustände setzen Flag = 0 V = 0 Taste1 = 247 '247 entspricht Port3 Taste2 = 251 '251 entspricht Port4 '******************** Hauptprogramm ******************************************** Do If Flag = 1 Then Gosub Relais_on 'Ist Flag=1 dann Unterprogramm "Relais_on" If Flag = 0 Then Gosub Relais_off 'Ist Flag=0 dann Unterprogramm "Relais_off" Waitms 200 Loop '********************* Unterprogramme ****************************************** Relais_on: I2cstart 'I2C START I2cwbyte Writepowerport_adr 'Schreibbefehl an PCF1 schicken I2cwbyte &B11111111 'Datenbyte an PCF1 -> PowerPort 5 einschalten 'binäre Darstellung, Port 6 auf High geschaltet I2cstop 'I2C STOP Return 'Rücksprung Relais_off: I2cstart 'I2C START I2cwbyte Writepowerport_adr 'Schreibbefehl an PCF1 schicken I2cwbyte &B00000000 'Datenbyte an PCF1 -> PowerPort 5 ausschalten 'binäre Darstellung, wenn Ports 1-8 auf Low geschaltet I2cstop 'I2C STOP Return 'Rücksprung Int2_isr: Disable Int2 'Interrupt Int2 ausschalten I2cstart 'I2C START I2cwbyte Readeingabeport_adr 'Lesebefehl an PCF schicken I2crbyte I2cdaten , Nack 'Datenbyte von PCF lesen, lese letztes Byte I2cstop 'I2C STOP V = I2cdaten 'Datenübergabe an Variable V If I2cdaten = Taste1 Then Flag = 1 'Auswertung von Eingangsdaten(I2cdaten) und setzen von Flag If I2cdaten = Taste2 Then Flag = 0 If V = 247 Then Print "letzter Eingangswert= " ; V ; " Relais= On " 'Vergleich-> ist V =247 dann geben an RS232 Werte aus Print " " 'Leerzeile Incr V 'Erhöhe V um 1, damit Anfangsbedingung nicht mehr erfüllt(sonst permanente Ausgabe) End If If V = 251 Then Print "letzter Eingangswert= " ; V ; " Relais= Off " 'Vergleich-> ist V =251 dann geben an RS232 Werte aus Print " " 'Leerzeile Incr V 'Erhöhe V um 1, damit Anfangsbedingung nicht mehr erfüllt(sonst permanente Ausgabe) End If Enable Int2 'Interrupt Int2 einschalten Return 'Rücksprung
### Silvio ###
Hallo Burki,
hab es noch einmal ganz einfach zusammen geschrieben.
Das erste Listing war einfach nur aus Codeschnipsel zusammenkopiert.
Schau es Dir mal an!
Sieht doch etwas übersichtlicher aus.Code:'****************************************************************************** $regfile = "m32def.dat" $baud = 9600 $crystal = 8000000 'Quarzfrequenz Config Scl = Portc.0 'Ports fuer I2C-Bus Config Sda = Portc.1 'Eingänge Const Writeeingabeport_adr = &H7E 'I2C Adr PCF 2 Const Readeingabeport_adr = &H7F 'I2C Adr PCF 2 'Power-Port Const Writepowerport_adr = &H72 'I2C Adr PCF 1 Const Readpowerport_adr = &H73 'I2C Adr PCF 1 Dim I2cdaten As Byte 'Datenbyte aus PCF8574 Dim Taste1 As Byte 'Größe für Variable festlegen Dim Taste2 As Byte 'Größe für Variable festlegen I2cinit I2cstart I2cwbyte &H74 'Schreibbefehl an PCF3 schicken 'Led´s ein ,Motorendstufen ein, Port-Peripherie ein, RBN-Bus Sleep Modus aus (also Peripherie aktiv) I2cwbyte &B00000010 'Datenbyte an PCF3 I2cstop Portd.6 = 0 'Schrittmotoren erst mal ausschalten(vorsichtshalber :-) ) Taste1 = 247 'Taste 1 (Eingangsport-Port3) Variable für den Eingang Taste2 = 251 'Taste 2 (Eingangsport-Port4) Variable für den Eingang '******************** Hauptprogramm ******************************************** Do I2cstart I2cwbyte Readeingabeport_adr 'Lesebefehl an PCF schicken I2crbyte I2cdaten , Nack 'Datenbyte von PCF lesen I2cstop 'I2C STOP If I2cdaten = Taste1 Then Goto Relais_on 'Vergleich-> ist Taste1 dann gehe zu Unterprogramm Relais_on If I2cdaten = Taste2 Then Goto Relais_off 'Vergleich-> ist Taste2 dann gehe zu Unterprogramm Relais_off Loop '********************* Unterprogramme ****************************************** Relais_on: I2cinit 'I2C Initilisieren I2cstart 'I2C START I2cwbyte Writepowerport_adr 'Schreibbefehl an PCF1 schicken I2cwbyte &B00100000 'Datenbyte an PCF1 -> PowerPort 6 einschalten 'binäre Darstellung, Port 6 auf High geschaltet I2cstop 'I2C STOP Return 'Rücksprung in Hauptprogramm Relais_off: I2cinit 'I2C Initilisieren I2cstart 'I2C START I2cwbyte Writepowerport_adr 'Schreibbefehl an PCF1 schicken I2cwbyte &B00000000 'Datenbyte an PCF1 -> PowerPort ausschalten 'binäre Darstellung, wenn Ports 1-8 auf Low geschaltet I2cstop 'I2C STOP Return 'Rücksprung in Hauptprogramm![]()
Beim RNBFRA-Board mußt man bei den Eingängen und Ausgängen alles über I2C-Routinen machen.
Aber wenn man mal das Ganze vereinfacht anschaut, fragt man in der Hauptschleife die Eingänge ab, vergleicht sie und stößt ein Unterprogamm an.
Nach dem Abarbeiten des Unterprogrammes, erfolgt ein Rücksprung in die Hauptschleife.
### Silvio ###
Hallo Silvio - Danke für Deine Mühe - bin die nächsten Tage geschäftlich unterwegs und bin die n. 10 Tage voll belegt - werde erst danach dazukommen es zu probieren - ist Super da sollte ich dann schon etwas weiter kommen - die liebe Zeit aber ja irgendwann wurde auch Rom erbaut hi
Burki
Hallo Silvio
entschuldige dass ich mich erst jetzt wieder melde - wir haben zur Zeit schwere gesundheitliche Probleme in der Familie (Eltern + Schwiegeretlern) weswegen ich die nächste Zeit passen muss und nur sporadisch oder Stundenweise dazukomme. Ich wollte das nur kurz mitteilen nicht dass Du mich für unhöflich hälst - es wäre schön wenn Du mir da es ja nicht eilt und Du mit deinem Projekt ja vielleicht weiterkommst ein Info das mir mal weiterhelfen könnte schickst - danke im voraus - möchte hier das Forum nicht missbrauchen - also meld mich dann mal wieder oder wenn Du was neues hast was ich ev. verwenden oder als weiterhilfe brauchen könnte. Danke.
liebe grüße Burki![]()
Lesezeichen