Performance-Probleme beim 2560/8MHZ mit ILI9341 und RS232 2ter Versuch

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

Hinweis kann nach Kenntnisnahme deaktiviert werden!

  • Performance-Probleme beim 2560/8MHZ mit ILI9341 und RS232 2ter Versuch

    Hallo Leute,

    da mein 1 Beitrag von Trolls zugespammt wurde und so geschlossen werden musste,
    probiere ich es erneut. Vielleicht könnten die Moderatoren erst die Antworten auf diesen Beitrag freischalten, so erspart man sich
    passierte..

    Ich habe per privatnachricht einige interessante Ideen bekommen, da besagter Beitrag zugespammt wurde.

    Konsens ist, daß der Code nur dann nicht funktioniert, wenn es Interrupt-Unterschiede/Inkompatibilitäten zwischen mega16/32/1284p und 2560/2560V gibt.

    Jetzt die Frage an die Experten : Ich nutze die bekannte ISR UCXR. Sobald also ein Zeichen an der Schnittstelle ankommt, wird der ISR ausgelöst und das Zeichen aus UDR ausgelesen und einem String zugeordnet.

    In der Hauptschleife wird die Zeichenlänge dieses Empfangstrings "gemessen" und ab Länge x in einen anderen String kopiert und gelösch, und es geht von vorne los

    das funktioniert problemlos seit jahren auf einigen mega16/32/1284p-Systemen. In meiner Naivität habe ich die paar Zeichen Code auch in das neue 2560V System kopiert und es funktioniert. Zeichen werden eingelesen.

    Hier mal grob der Code:

    On Urxc Onrxd
    Enable Urxc
    Enable Interrupts

    Onrxd:
    Inchar = UDR

    If Inchar = 33 then ' Startzeichen = 33
    Aktiv =1 'Startzeichen vorhanden
    Incr Zaehler ' 5 Zaehler=ca. 500ms
    end if

    If Aktiv = 1 then
    Empfang_String= Empfang_String + CHR (Inchar)
    end if
    return


    In der Hauptschleife passiert dann das

    do

    if len (Empfang_String) >= 12
    Disable Urxc
    Arbeits_String =Empfangs_String
    Empfangs_String =0
    Aktiv =0 ' Bereit für neues Startzeichen
    Enable Urxc
    end if

    loop

    ist das jetzt 100% 2560V-Kompatibel? Wie gesagt, die richtigen Zeichen kommen in der richtigen Menge an und werden richtig ausgelesen .

    Weitere Idee: Ich benutze Bascom 2.075 von 2015 und Avr Studio 4. Jetzt nicht das neueste, aber bei 16/32/1284p vollkommen ausreichend. Für den 2560V zu alt?

    Vielen Dank
  • m_herr schrieb:

    da mein 1 Beitrag von Trolls zugespammt wurde und so geschlossen werden musste,
    probiere ich es erneut. Vielleicht könnten die Moderatoren erst die Antworten auf diesen Beitrag freischalten, so erspart man sich
    passierte..
    Hier möchte ich dich bitten, einen anderen Ton anzuschlagen.
    Im ersten Thread:
    Performance-Probleme beim 2560/8MHZ mit ILI9341 und RS232
    gab es keine Trollerei, im Gegenteil, man konnte annehmen, dass du derjenige warst, dermit dem falschen Bein aufgestanden ist.

    Ich bitte dich deswegen hier als Moderator, versuche uns mal als Helfer wahrzunenehmen, nicht als Feinde.
    Wenn du im ersten Post gleich einen Verbalangriff fährst, ist das kein guter Einstieg.

    Gruß, Michael
  • 1) wieso werden Zeichen gelesen, während die "alten" noch gar nicht abgearbeitet wurden?
    2) wieso wird das Display in festen Abständen von 500ms neu gezeichnet und nicht nur dann, wenn es neue Daten gibt?

    zu 1): dies deutet auf einen fehlerhaften Code hin. Aufgrund der schnelleren Displayroutinen für ein KS108 kann das dort funktioniert haben.
    Die Logik des Einlesen ist unvollständig.
    Code first, think later - Natural programmer :D
  • wir drehen uns im Kreis.
    Ja; ich kann meine "Behauptungen" belegen:
    youtube.com/watch?v=hVivi79JadU

    immerhin 8 KByte/s plus Verarbeitung des Internetstreams und Displayausgabe bei 8MHz Takt, was funktioniert.

    Ich sehe immer noch keinen Quellcode...


    Wenn dein Programm mehr als die geforderten 10 Zeichen einliest, dann ist strukturell etwas falsch in deinem Programm. Soviel wage ich zu behaupten, auch ohne deinen Quellcode gesehen zu haben.
    Code first, think later - Natural programmer :D
  • six1 interessantes Video. soll ich daraus deuten, daß dein 2560v-System genau so funktioniert, wie ich es gerne bei mir hätte?

    Aber ich sehe jetzt keinen Beleg auf meinen Code bezogen. Irre ich mich, du hast doch meinen Code als fehlerhaft betitelt...aber nun sagst du, du siehst keinen Code, obwohl ich ihn schon gepostet habe. Alles etwas mysteriös.

    Was nutzt du denn für einen PC etc für das Forum? Vielleicht irgendwie ein Virenscanner? Kannst dich ja mal an einen Moderator wenden, der hilft dir bei deinem Anzeige-Problem bestimmt.
  • m_herr schrieb:

    In der Hauptschleife passiert dann das

    do

    if len (Empfang_String) >= 12
    Disable Urxc
    Arbeits_String =Empfangs_String
    Empfangs_String =0
    Aktiv =0 ' Bereit für neues Startzeichen
    Enable Urxc
    end if

    loop


    ok, hatte ich tatsächlich ausgeblendet :)

    Wobei der Code nicht dem tatsächlichen Stand deiner Software entspricht, da er Fehler enthält und so nicht funktioniert.

    Im Übrigen muss ich dir nichts beweisen und mir schon gar nicht.
    Vielleicht möchten dir andere helfen, ich bin da im Moment weniger motiviert.
    Code first, think later - Natural programmer :D
  • @m_herr: Vorschlag: Ergänze einmal den Code zu einem compilierbaren Programm mit $regfile, Stacks, DIMs usw., setze das in eine Codebox und schreib, was daran nicht wie gewünscht funktioniert.

    BASCOM-Quellcode

    1. ......
    2. .......
    3. On Urxc Onrxd
    4. Enable Urxc
    5. Enable Interrupts
    6. Onrxd:
    7. Inchar = UDR
    8. If Inchar = 33 then ' Startzeichen = 33
    9. Aktiv =1 'Startzeichen vorhanden
    10. Incr Zaehler ' 5 Zaehler=ca. 500ms
    11. end if
    12. If Aktiv = 1 then
    13. Empfang_String= Empfang_String + CHR (Inchar)
    14. end if
    15. return
    16. ' Hauptschleife
    17. do
    18. if len (Empfang_String) >= 12
    19. Disable Urxc
    20. Arbeits_String =Empfangs_String
    21. Empfangs_String =0
    22. Aktiv =0 ' Bereit für neues Startzeichen
    23. Enable Urxc
    24. end if
    25. loop
    Alles anzeigen


    Dann können andere das bei sich in einer eigenen Umgebung nachstellen.
  • six1 welche Fehler enthält er denn? Wenn du nicht motiviert bist zu helfen, warum schreibst du denn?


    stefanhamburg hast du das von six1 gelesen ? bin ich jetzt auch wieder "unsachlich"?

    der code ist komplett.
    aber es bringt hier bis jetzt nichts. alles wird zerredet, getrollt oder schlichtweg ausgeblendet. bestes Beispiel ist six1. behauptet, daß der code falsch ist. belegt seine Behauptung nicht, stattdessen kommen dumme Sprüche...tut mir nicht leid, aber ich bekomme Nachrichten von usern,die mir sinnvoll helfen wollen,aber nicht hier posten wollen. ..woran liegt das? an meiner "unsachlichkeit"?

    also, wo ist der Fehler in meinem Code für die Rs232-Auswertung? Wie gesagt, in viele anderen Systemen läuft es. Von daher kann ich da nur mit den Schultern zucken. Ich finde keinen Fehler...