- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 32

Thema: RNB FRA 1.22 oder RN Control über I2C ansprechen

  1. #11
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Da stimme ich dir schon voll zu Robert. Ich hatte das Beispiel nur mal rausgesucht um zu zeigen wie man RS232-Int mit Bascom Befehlen ausnutzt.
    Um nur einen Buffer zu realisieren sind die internen Befehle sicher besser. Jedoch gibt es eventuell auch Aufgaben wo unmittelbar auf RS232 reagiert werden muss, dann kommt sowas in Betracht. Es ist dann auch leicht möglich ASM-Code im Interrupt zu nutzen, wenn man es optimieren will. Aber das wären wohl Ausnahmeanwendungen.

  2. #12
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Klaro, spezial ist spezial, und je Event, desto ISR. Aber du siehst ja schon im Beispiel oben, wie anfällig das ist, daß sich ISR u. Non-ISR gegenseitig die Daten massakrieren. Verkaufen könnt man das nicht, außer, man hat eine gut Hotline eingerichtet.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    09.04.2005
    Ort
    47608 Geldern
    Alter
    67
    Beiträge
    55
    Hallo Frank, hallo Robert,
    danke für euren kleinen Austausch - dadurch habe ich wieder ein bisschen mehr gelernt. Noch eine kleine Frage: Mit dem "inkey" Befehl kann ich doch nur ein Zeichen auslesen - oder? Wie übertrage ich aber eine ganze Zahl wie z.B. 222 ? Da brauch ich doch den "Input" Befehl, wenn ich mich nicht irre.
    Und noch ne Frage: Es ist doch sicher möglich mit den Mega32 mit mehr als 9600Baud zu übertragen? Kann ich außerdem den 8Mhz-Quartz auf der RNB-FRA gegen einen mit 16MHz austauschen? Macht das Sinn?
    Grüße,
    Ulli

    Wenn jemand sucht, hat er einen Blick nur für das, was er sucht - alles andere entgeht ihm (vielleicht auch die Lösung)! (frei nach Hermann Hesse - Siddharta)

  4. #14
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Dottore, die HW-Uart geht auch einiges schneller, das kann man beim Einzelfall dann austesten. Es taucht dann nur ein anderes Problem auf: Das Inter-character-delay (Zeit zwischen zwei Zeichen). Viel mehr als ein Bit hat man nicht. In dieser Zeit muß ein Zeichen irgendwie verarbeitet worden sein. Und das darf man bei hohen Baudraten nicht unterschätzen. Und Framing- und Overflow-Errors zu handeln, macht auch nicht so viel spaß, dann geht's nämlich Richtung Protokoll und data-link-layer.
    Weise Aussage (stimmt immer): es kommt eben drauf an, was zu geschehen hat.

    EDIT: die Sache mit input: Wenn diese Zahl dann auch mit <enter> abgeschlossen wird, bist du mit input gut dran. Wenn nicht--> dann mußt du dich selbst um das kümmern, leider,leider
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    09.04.2005
    Ort
    47608 Geldern
    Alter
    67
    Beiträge
    55
    Hi Robert,
    vielen Dank erst einmal für deine Ausdauer bei diesem Thema. =D>
    Wenn ich´s richtig verstehe, muss ich wohl ein wenig testen, ob ich die Daten vernünftig mit mehr als 9600Baud übertragen kann. Das ist dann meine Aufgabe für dieses Wochenende. Wenn ich dann mit meiner Laserkiste soweit bin, werde ich als Dankeschön mal ein paar Bildchen von den "Laser-Zuckeleien" posten. kann aber noch ein paar Wochen dauern, da ich jetzt gerade erst mal mit der Hardware soweit bin (z.Zt 6 Laser drin (3grün, 3rot, alle gemischt zu gelb - 6 Schrittmotoren als xy-Pärchen und und und... Scanner sind mir im Augenblick noch zu teuer).
    Schönes Wochenende wünscht:
    Ulli

    Wenn jemand sucht, hat er einen Blick nur für das, was er sucht - alles andere entgeht ihm (vielleicht auch die Lösung)! (frei nach Hermann Hesse - Siddharta)

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    09.04.2005
    Ort
    47608 Geldern
    Alter
    67
    Beiträge
    55
    Hallo alle Interessierten!
    habe das Wochenende genutzt und die beiden Varianten, die RS232 interruptmäßig abzufragen, getestet.
    Variante 1:
    config serialin=buffered, size=nn
    mach Bascom den Input mit Interrupt, mit der Frage
    if ischarwaiting() = 1 then
    databyte = inkey()
    end if
    Geht ganz gut, aber man muss ja dauernd die if...then Schleife durchlaufen um zu erfahren, ob was angekommen ist.

    Daher bevorzuge ich:
    Dim Gerät as Byte
    Enable Interrupts
    Enable Int0 (Pin0, Port D für RS232)
    On Int0 Subroutine
    End

    Sub Subroutine()
    gerät = inkey()
    if gerät=A then
    for i=1 to AnzahlBytes
    Nachricht=inkey()
    wort=wort & Nachricht
    next
    else
    schicke weiter zum Gerät B
    end if
    Return
    end

    Damit kann der Controller in jedem beliebigen Unterprogramm sein. Wenn was ankommt wird sofort unterbrochen und die neue Anweisung ausgeführt.
    Klappt bei mir prima.
    Viele Grüße,
    Ulli

    Wenn jemand sucht, hat er einen Blick nur für das, was er sucht - alles andere entgeht ihm (vielleicht auch die Lösung)! (frei nach Hermann Hesse - Siddharta)

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    09.04.2005
    Ort
    47608 Geldern
    Alter
    67
    Beiträge
    55
    Noch was:
    Gibts in Bascom einen Befehl so wie Mscomm.input in VB, mit dem man direkt alles auslesen kann, oder muss mann immer Byte für Byte auslesen?

    Außerdem: Habe höhere Taktraten (bisher bis 57500Baud) ausgetestet,
    funktionierte tadellos, sogar ohne Buffer.

    Grüße,
    Ulli

    Wenn jemand sucht, hat er einen Blick nur für das, was er sucht - alles andere entgeht ihm (vielleicht auch die Lösung)! (frei nach Hermann Hesse - Siddharta)

  8. #18
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Zitat Zitat von Dr.U.Bianchi
    Daher bevorzuge ich:
    Code:
    Dim Gerät as Byte
    Enable Interrupts 
    Enable Int0 (Pin0, Port D für RS232) 
    On Int0 Subroutine 
    End 
    
    Sub Subroutine() 
      gerät = inkey()
      if gerät=A then 
        for i=1 to AnzahlBytes
          Nachricht=inkey()
          wort=wort & Nachricht
        next
      else 
         schicke weiter zum Gerät B
      end if 
    Return 
    
    End
    Ähm, da sind einige Sache, die ich nicht kapier:
    1. Die Variable Gerät wird als Byte definiert und dann mit "A" verglichen?
    Bei mir gibts das ein "Source variable doesnt match the target variable"
    2. Enable Int0 (Pin0, Port D für RS232) hier kann doch was nicht stimmen oder? Was muss in die Klammer? Nur "Pin0" wahrscheinlich oder? Also wenn ich das richtig verstehe muss da praktisch der des Eingangs des RS232 genommen werden und wenn der sich ändert with Subroutine aufgerufen, seh ich das richtig?
    3. Muss die Variable AnzahlBytes auf z.B. 8 von mir festgelegt werden? Schon oder?
    4. Was soll das eigenlich mit dem Gerät? Gerät ist doch dann das erste empfangene Zeichen vom RS232 oder?





    Hallo Frank !
    Ich halte das für overkill und würd es nicht empfehlen.
    die Config serialin=buffer .... - Angabe generiert bei einer ausreichenden Buffergröße eine tadellose, asynchrone Ringbuffer-routine. Mit dem "ischarwaiting" werden write- und read pointer verglichen, bei "=" wird null, sonst 1 zurückgegeben. dadurch kann ein folgendes inkey() auch für transparente daten (inclusive &00) verwendet werden.
    Beim Beispiel ist das "print" in der ISR auch nur akzeptabel, wenn gleichzeitig config serialout= ( output ringbuffer) verwendet wird.
    Blocking functions in einer ISR sind absolut "pfui"
    Das Einzige, was man sich vorstellen könnte, wäre eine Terminator-definition, dh "On CR gosub .. " oder " on fill=70 gosub..." (overflow)
    Weil aber der Buffer u. die Pointer eh definiert sind, kann man das auch selbst machen
    (sich periodisch um seine Kinderchen zu kümmern, ist im Grunde die einzige Aufgabe der Haupt Do..LOOP Schleife)
    *schnauf*
    Is des schlimm wenn ich davon kein Wort verstehe???

    mfg
    jagdfalke

  9. #19
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Is des schlimm wenn ich davon kein Wort verstehe???
    überhaupt nicht schlimm, es sei denn, du bist Programmierer, dann schon.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #20
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Nee bin ich zum Glück nicht, jedenfalls wenn du professioneller Programmierer meinst.

    Kannst du mir dann erklären was das mit dem "Gerät" soll?

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests