- 3D-Druck Einstieg und Tipps         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 26 von 26

Thema: RNFRA Board Lichtschranke

  1. #21
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    Anzeige

    E-Bike
    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 ###

  2. #22
    Neuer Benutzer Öfters hier
    Registriert seit
    31.10.2005
    Beiträge
    22
    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

  3. #23
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    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...


    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
    Schicks mal durch den Bascom-Compiler...
    ### Silvio ###

  4. #24
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    Hallo Burki,
    hab es noch einmal ganz einfach zusammen geschrieben.
    Das erste Listing war einfach nur aus Codeschnipsel zusammenkopiert.
    Schau es Dir mal an!
    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
    Sieht doch etwas übersichtlicher aus.

    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 ###

  5. #25
    Neuer Benutzer Öfters hier
    Registriert seit
    31.10.2005
    Beiträge
    22
    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

  6. #26
    Neuer Benutzer Öfters hier
    Registriert seit
    31.10.2005
    Beiträge
    22
    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

Seite 3 von 3 ErsteErste 123

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress