- fchao-Sinus-Wechselrichter AliExpress         
Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 39 von 39

Thema: Eingänge an RNBFRA-Board überwachen - Neuling

  1. #31
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    Anzeige

    LiFePo4 Akku selber bauen - Video
    ne, das kann man auch auf variablenänderung machen, heißt irgendwie "ON var GOSUB soundso" musst mal inner Bascom help nachschauen
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  2. #32
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    habe die Bascom-Hilfe mal durchsucht.
    Du meinst wohl so...

    On I2cdaten Gosub Motor1_2 , Motoren_aus

    Silvio

  3. #33
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    oha, scheint doch schwerer zu sein, als ich gedacht hab... das geht doch gar nicht mit on... das on muss auch immer da sein, wo man auch abfragen muss, also bringts da nen if vermutlich weiter ^^

    ich muss noch weiter überlegen... *seufz*

    Martin
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  4. #34
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310

    oder vielleicht doch etwas anders?

    Hallo Martin,
    habe nun mal einen Hardware-Pull-up an Int2 gezogen.
    -> wenn Taste gedrückt ist, unterbricht er die Schleife und springt zur Int2_isr, macht eine Print-Ausgabe im Terminal mit dem entsprechenden Eingangsdaten und springt zurück zum Do Loop Schleife von wo er dann in das entsprechende Unterprogramm springt und dieses Abarbeitet. Aber nur solange wie die Taste gedrückt bleibt. Nach dem Auslassen der Taste befindet er sich dann wieder in der Do Loop.

    soweit so gut. Aber keine Selbsthaltuung

    ###############################################

    Man müßte die Eingangsdaten sichern und mit der Do Loop Vergleichen und beim Drücken der Austaste den gesicherten Wert resetten.
    Geht doch mit Registern oder so?
    Also Taste "Ein" gedrückt ->Register mit Wert der Taste belegen.(Behält das Register den Wert?)
    Mit der Taste "Aus" den Register erneut mit dem Wert der Taste "Aus" belegen. Den Wert in der Do Loop entsprechend vergleichen.
    Was meinst du geht so was ???
    Wenn ja, kannst du mich dahin gehend noch ein wenig helfen?


    ### Silvio ###

  5. #35
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    lol, ja du hastes ja schon, warum machstes dann nich, fauler hund ^^

    wart ma, ich schreibs um, aber hatte ich irgendwie nich bedacht, dass dabei ja das rauskommen soll ^^

    schick nochmal deine jetzige sauce (den sourcecode)

    Martin
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  6. #36
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310

    aktuelle Sourcecode

    Hallo Martin,
    hier der letzte Stand:

    Code:
    '******************************************************************************
    
    $regfile = "m32def.dat"
    $baud = 9600
    $crystal = 8000000                                          'Quarzfrequenz
    
    Config Scl = Portc.0                                        'Ports fuer I2C-Bus
    Config Sda = Portc.1
    
    Config Pind.6 = Output                                      'Schrittmotoren Ein/Aus
    Config Pinc.5 = Output                                      'Schrittmotor Links Richtung
    Config Pinc.3 = Output                                      'Schrittmotor Links Step
    Config Pinc.4 = Output                                      'Schrittmotor Rechts Richtung
    Config Pinc.2 = Output                                      'Schrittmotor Rechts Step
    
    Config Pinb.2 = Input                                       'Interrupt Int2
    Config Portb.2 = 0
    Config Portd.3 = 1
    
    Config Int2 = Falling
    Enable Int2
    Enable Interrupts
    On Int2 Int2_isr
    
    
    Const Writeeingabeport_adr = &H7E                           'I2C Adr PCF 2
    Const Readeingabeport_adr = &H7F                            'I2C Adr PCF 2
    
    Dim I2cdaten As Byte                                        'Datenbyte aus PCF8574
    Dim Taste1 As Word
    Dim Taste2 As Word
    Dim I As Word
    
    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
    
    I2cdaten = 0
    
    
    Taste1 = 247                                                'Taste 1    (Eingangsport-Port3)
    Taste2 = 251                                                'Taste 2    (Eingangsport-Port4)
    I = 0
    
    '******************** Hauptprogramm ********************************************
    
    Do
       If I2cdaten = Taste1 Then Gosub Motor1_2
       If I2cdaten = Taste2 Then Gosub Motoren_aus
    
    Loop
    
    
    '********************* Unterprogramme ******************************************
    
    Motor1_2:
    Portc.5 = 0                                                 'Richtung  Motor 1
    Portc.4 = 1                                                 'Richtung  Motor 2
    Portd.6 = 1                                                 'Motoren einschalten
    
    Portc.2 = 0                                                 'Step rechts
    Portc.3 = 0                                                 'Step links
    Waitms 1
    Portc.2 = 1                                                 'Step rechts
    Portc.3 = 1                                                 'Step links
    Waitms 1
    Portd.6 = 0                                                 'Motoren ausschalten
    Return
    
    Read_data:
    Return
    
    
    Motoren_aus:
    Portd.6 = 0                                                 'Motoren ausschalten
    Return
    
    Int2_isr:
       I2cstart
       I2cwbyte Readeingabeport_adr                             'Lesebefehl an PCF schicken
       I2crbyte I2cdaten , Nack                                 'Datenbyte von PCF lesen
       I2cstop
       Waitms 50
       Print I ; " Eingangsport Wert " ; I2cdaten ; " war beim Int2"
       Incr I
    Return
    Wie ich deine Reaktion deute, ist es mit dem Speichern in Registern doch möglich und könnte funktionieren.
    Denkansatz demach richtig, aber mit der Umsetzung haberts halt...
    Wenn es dir nicht so viel Arbeit macht...?vielleicht kannst du deine Schritte mit ein paar Worten dokumentieren -> will ja was von Dir lernen

    ### Silvio ###

  7. #37
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    Code:
    '******************************************************************************
    
    $regfile = "m32def.dat"
    $baud = 9600
    $crystal = 8000000                                          'Quarzfrequenz
    
    Config Scl = Portc.0                                        'Ports fuer I2C-Bus
    Config Sda = Portc.1
    
    Config Pind.6 = Output                                      'Schrittmotoren Ein/Aus
    Config Pinc.5 = Output                                      'Schrittmotor Links Richtung
    Config Pinc.3 = Output                                      'Schrittmotor Links Step
    Config Pinc.4 = Output                                      'Schrittmotor Rechts Richtung
    Config Pinc.2 = Output                                      'Schrittmotor Rechts Step
    
    Config Pinb.2 = Input                                       'Interrupt Int2
    Config Portb.2 = 0
    Config Portd.3 = 1
    
    Config Int2 = Falling
    Enable Int2
    Enable Interrupts
    On Int2 Int2_isr
    
    
    Const Writeeingabeport_adr = &H7E                           'I2C Adr PCF 2
    Const Readeingabeport_adr = &H7F                            'I2C Adr PCF 2
    
    Dim I2cdaten As Byte                                        'Datenbyte aus PCF8574
    Dim Taste1 As Word
    Dim Taste2 As Word
    Dim I As Word
    Dim Flag As Bit
    
    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
    
    I2cdaten = 0
    Flag = 0
    
    Taste1 = 247                                                'Taste 1    (Eingangsport-Port3)
    Taste2 = 251                                                'Taste 2    (Eingangsport-Port4)
    I = 0
    
    '******************** Hauptprogramm ********************************************
    
    Do
       If Flag = 1 Then Gosub Motor1_2
       If Flag = 0 Then Gosub Motoren_aus
    Loop
    
    
    '********************* Unterprogramme ******************************************
    
    Motor1_2:
    Portc.5 = 0                                                 'Richtung  Motor 1
    Portc.4 = 1                                                 'Richtung  Motor 2
    Portd.6 = 1                                                 'Motoren einschalten
    
    Portc.2 = 0                                                 'Step rechts
    Portc.3 = 0                                                 'Step links
    Waitms 1
    Portc.2 = 1                                                 'Step rechts
    Portc.3 = 1                                                 'Step links
    Waitms 1
    Portd.6 = 0                                                 'Motoren ausschalten
    Return
    
    Read_data:
    Return
    
    
    Motoren_aus:
    Portd.6 = 0                                                 'Motoren ausschalten
    Return
    
    Int2_isr:
       I2cstart
       I2cwbyte Readeingabeport_adr                             'Lesebefehl an PCF schicken
       I2crbyte I2cdaten , Nack                                 'Datenbyte von PCF lesen
       I2cstop
       Waitms 50
       Print I ; " Eingangsport Wert " ; I2cdaten ; " war beim Int2"
       Incr I
       If I2cdaten = Taste1 Then Flag = 1
       If I2cdaten = Taste2 Then Flag = 0
    Return
    so, das berühmte flag iss jetz doch drinne, also das läuft jetzt so ab: wenn die erste taste gedrückt wurde, springter in int2_isr, und überprüft dort, welche taste gedrückt wurde, wenns taste 1 war, dann sollers flag auf 1 setzen, ansonsten auf 0.
    dann springter ja wie gewöhnlich wieder ins hauptprogramm, und sieht: aha, flag ist = 1, also lassen wa mal die motoren einmal drehen... das widerholt er bei dieser verion aber ja so lange bis das flag wieder auf 0 iss, und das geschieht erst, wenn die andere taste, also taste 2 gedrückt wurde.

    so solltes wundabar funzen... wie immer :-P

    Martin
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  8. #38
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310

    joooo

    Hallo Martin,
    so tut er es. SUPER IDEE mit dem Flag.
    \/ DANKE für die Hilfe. \/

    ### Silvio ###

    Ps. werde sicher auf noch viele neue Probleme stoßen und Fragen haben

  9. #39
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    unter umständen kannste mich dann ja mal bei dir in icq hinzufügen, das iss nen ganzes stückln leichter, und ausserdem vergesse ich nicht, irgendwas zu ändern ^^

    wie man sieht helfe ich ja immer gern weiter... manchmal leider...

    Martin
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

Seite 4 von 4 ErsteErste ... 234

Berechtigungen

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

LiFePO4 Speicher Test