- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 39

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

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

    Praxistest und DIY Projekte
    wäre super.
    Danke Dir schon mal.

    Silvio

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    so sorry, hab das ganz vergessen, ahb viel zu tun ^^ schule, ähnliches

    aber hier der code:

    Code:
    '###################################################
    'Testprogramm 6
    'für
    'RoboterNetz Standard-Roboter Board RBNFRA 1.2
    '
    'Aufgabe:
    'Testet Eingangsport indem Wert über RS232
    'übermittelt wird (9600 Baud einstellen)
    '
    'Autor: Frank
    'Weitere Beispiele und Beschreibung der Hardware
    'unter http://www.Roboternetz.de
    '###################################################
    
    $regfile = "m32def.dat"                                     ' oder bei Mega16 $regfile = "m16def.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 Int1 = Rising
    Enable Interrupts
    On Int1 Int1_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 I As Byte
    Dim J As Word
    Dim A As Word
    Dim B 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 = 1
    
    B = 251                                                     'Taste 2    (Port4)
    A = 247                                                     'Taste 1    (Port3)
    I = 0
    
    Do
       If I2cdaten = A Then Gosub Motor1_2
       If I2cdaten = B 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
    Portc.3 = 0
    Waitms 1
    Portc.2 = 1
    Portc.3 = 1
    Waitms 1
    Portd.6 = 0
    Return
    
    Read_data:
    Return
    
    
    Motoren_aus:
    Portd.6 = 0
    Return
    
    Int1_isr:
       I2cstart
       I2cwbyte Readeingabeport_adr                             'Lesebefehl an PCF schicken
       I2crbyte I2cdaten , Nack                                 'Datenbyte von PCF lesen
       I2cstop
       Waitms 50
       Print I ; " Eingangsport Wert" ; I2cdaten
       Incr I
    Return
    bitte, sollte so funzen, jedes mal wenn der int vom pcf kommt, lies die taste ein

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

  3. #13
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    Hallo Martin,
    erst mal vielen Dank für die Mühe.
    Werde es heute Abend testen und mich noch mal melden.
    Gruß Silvio

  4. #14
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    hallo Martin,
    leider funktioniert das Programm so nicht.
    Konnte es zwar übertragen, aber es reagiert auf keine Taste.

    Config Int1 = Rising
    Enable Interrupts
    On Int1 Int1_isr

    Kann es vielleicht sein, dass der AVR mit "= Rising" auf einen Highpegel warte. Habe die Tasten gegen GND schalten lassen. ???

    Was ist eigentlich mit "On Int1 Int1_isr" gemeint?
    Du weißt doch ->Neuling

    Gruß Silvio

  5. #15
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    also, erstens musst du natürlich den int-ausgang vom pdc an den int1 dranpaggn, dann sollte das falling sein, du hast recht, aber nur weil der int vom pcf low-active ist...

    und mit on int1 int1_isr ist gemeint: wenn int1 anspringt, und sacht: du ich hab da was bekommen, dann springe in die subroutine int1_isr (dabei setzt sich isr aus Interrupt Service Routine zusammen)

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

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

    ? kannst du mir das übersetzen ?

    Hallo Martin,
    leider kann ich damit nicht all so viel anfangen.
    Zitat Zitat von x-ryder
    also, erstens musst du natürlich den int-ausgang vom pdc an den int1 dranpaggn, dann sollte das falling sein, du hast recht, aber nur weil der int vom pcf low-active ist...
    den int-ausgang vom pdc an den int1 dranpaggn

    der int vom pcf low-active ist

    Kannst du mir das noch mal eindeutschen?
    (ich weiss, es nervt schon )

    Gruß Silvio

  7. #17
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    also, der AVR hat dochn port namens int1 richtig, das iss ne sekundäre funktion von sonem pin... der muss an den INT ausgang vom pcf.
    dann sollteste den eben nich als rising sondern als falling configurieren

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

  8. #18
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    langt es also wenn ich deinen Code
    von Config Int1 = Rising
    auf Config Int1 = Falling
    umschreibe?

    Gruß Silvio

  9. #19
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    japp, aber du musst den int auch noch anschließen
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

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

    leider funktioniert es nicht

    so nun habe ich das Prgramm auf den Interrupt Int2 umgeschrieben.
    Code:
    '******************************************************************************
    'über die Tasten 1[Porteingang 3] und 2[Porteingang 4] am rnbfra-Board sollen die beiden Schrittmotoren durch einen Interrupt gesteuert werden ein aus
    '******************************************************************************
    
    $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 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 = 1
    
    
    Taste1 = 247                                                'Taste 1    (Eingangsport-Port3)
    Taste2 = 251                                                'Taste 2    (Eingangsport-Port4)
    I = 200
    
    '******************** 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
       Incr I
    Return
    Nur leider funktioniert es noch immer nicht.

    Nochmal zur Funktionsweise:
    An den Eingangsport 3 und 4 des rnbfra-Board habe ich je einen Taster der auf GND schaltet. Die Tasten geben Werte von 247 und 251 zurück.
    Durch drücken einer Taste soll das Hauptprogramm(die Schleife) unterbrochen werden und den Wert in den I2cdaten schreiben. Damit zurück ins Hauptprogramm springen und den Wert entsprechend auswerten und das entsprechend Unterprogramm(Motoren1_2 bzw. Motoren_aus) aufrufen.

    Habe ich irgendwo einen Denkfehler drin oder muß ich anders an das Problem ran...?

    Gruß Silvio

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress