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

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

    Hallo Leute,

    ich nutze eine 3,3V Board mit dem 2560V bei 8MHZ und einem ILI9341-Display mit 16-Bit-Antsteuerung und dankbar die V13 Lib von Hpinik

    Nun bin ich auf ein Performance-Problem mit RS232 gestossen und hätte gerne euer Feedback dazu. Vielleicht übersehe ich ja etwas.

    Ich komme von einem KS108-Display mit 1284p-Platine mit 8MHZ. Dort funktioniert alles perfekt. Daher bin ich mir sicher, daß "ich" es nicht bin, der das Problem verursacht :/

    ich lese per ttl eine rs232-Botschaft von einem anderen AVR aus. Ganz trivial mit dem bekannten ucxr und udr interrupt. Wenn das Startzeichen empfangen wurde,werden noch 10 Zeichen ausgelesen, in einem String gespeichert und nach 10 Zeichen halt aus gelesen, gelöscht und es geht von vorne los. Startzeichen empfangen, 10 weitere Zeichen, auslesen, löschen. ..

    der Empfang-String hat also nie eine größe 》11. theoretisch. ..

    Praktisch dagegen steigt die Länge vom String an, um so mehr an dem Display ausgegeben wird.
    Ich brauche bloß ein paar Werte und Linien auf dem Display anzuzeigen ( anzeigeroutine wird alle 500ms aufgerufen) und schon steigt die Länge des Empfangstrings auf 30 Zeichen an.

    In der Haupt Do-Loop wird die Länge des Empfangstrings abgefragt, ist er grösser-gleich 11 wird er halt ausgelesen und gelöscht,also auf länge 0 gesetzt.

    ergo "ackert" der 2560 wohl so stark mit der Display-Ausgabe, daß er sozusagen die Länge des Empfangstrings gar nicht prüfen kann :(

    sollte 19200baud und 8MhZ das nicht packen? Wie gesagt, am KS108-Display klappt es problemlos, da ist der Empfangstring nie größer 11, egal was gerade zum Display geschaufelt wird .


    Das Display braucht 3,3v. Mehr als 8mhz gehen aber beim 2560 nicht mit 3,3v.
    und 5V Pegel vom AVR mag das Display sicher nicht. Ich bin also an die 8MHZ gefesselt.

    wie sind denn eure Erfahrungen mit 8mhz, TFT und RS232? Vielen Dank
  • m_herr schrieb:

    code ist halt der übliche Code.
    Mit der Angabe kann man nicht weiterhelfen.

    Muss wohl doch am Code was sein.
    Der 1284p und der 2560 sind ja nicht die gleichen Controller. Vielleicht braucht es eine Anpassung.

    Da du Interrupts zum Empfang verwendest, sehe ich da die Möglichkeit eines Fehlers.
    Kannst ja mal probieren einen Empfangsbuffer einzurichten mit Bytematch auf das Frameende-Zeichen.
  • We häufig wird denn eingelesen?

    m_herr schrieb:

    Zeichen ausgelesen, in einem String gespeichert und nach 10 Zeichen halt aus gelesen, gelöscht und es geht von vorne los. Startzeichen empfangen, 10 weitere Zeichen, auslesen, löschen. ..
    Das klingt ja fast so als würdest du permanent einlesen und versuchen es aus zu geben.
    Du solltest dem Display auch etwas Zeit geben um alles anzeigen zu können.
    Am besten setzt du ein Flag wenn die Anzeige fertig ist und erst dann wieder neu einlesen.
    Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
  • m_herr schrieb:

    Mitch64 vielleicht hilft leider nicht. Welche Anpassung wird denn genau gebraucht?
    Welche Fehler siehst du da denn?
    Wie ich bereits eingangs erwähnte.
    Ohne den Code zu sehen, kann ich nur spekulieren.
    Auch über die Hardware sind lediglich 2 Begriffe gefallen.

    KS108 ist für mich ein Display-Controller.

    Es ist auch völlig unbekannt, welcher Art die Daten sind, die da seriell ausgetauscht werden.
    Ist es ein Protokoll, sind die Daten Ascii oder binär.
    Wie häufig gehen Daten von wo nach wo. Ist es ein Master-Slave Betrieb? Wer ist Master, wer Slave?
    Wie sieht ein Protokoll aus.

    Wie gesagt. Der Fehler kann überall stecken.
    Ohne detaillierte Infos kann dir keiner hier die Ursache nennen.
    Hellsehen können wir hier vermutlich alle nicht - mich eingeschlossen.

    Edit:
    Vielleicht sind auch einfach die Stackwerte falsch oder ungünstig gesetzt.

    Welche Bascom-Version benutzt du denn?
  • schreiben heißt nicht helfen. und wenn du immer themenfremde texte schreibst, wirst du auch keinem helfen, obwohl du ja schreibst..

    es gibt hier übrigens keine Pluspunkte für Beiträge sammeln


    du musst nur dann spekulieren, wenn du keine Erfahrung hast
  • und der nächste spam-beitrag von dir. und genau darauf wollte ich hinaus. keinerlei inhalt, dafür spam und dumme Sprüche. aber nachdem du jetzt auch weg bist, ist der weg frei für die Leute, die wirklich helfen KÖNNEN.

    8MHZ mit Grafikdisplay und RS232. Zu wenig Power? Oder geht es mit richtiger Programmierung? Wer hat da Erfahrungen?
  • Ja das geht (Ich hoffe dir reicht diese Antwort, wie ich im weiteren erkläre).
    Muss aber nicht, das kommt ziemlich auf die Rahmenbedingungen und deine Umsetzung an - da diese der Geheimhaltung unterliegen (naiv gefragt, warum eigentlich?), kann man da nur raten.
    Ich könnte jetzt auch ein Testprogramm schreiben, mit der von mir geschriebenen ILI9341-Library, für den ATXMega, den ich mit der PLL auf 8 MHz takten kann und der mit dem Display hier neben mir auf dem Schreibtisch liegt.
    Das wird aber sicher nicht deine Anforderungen treffen, womit das aus meiner Sicht eine ziemlich sinnlose Übung wäre (außerdem, wie djmsc bereits angemerkt hat, bemerke ich auch bei mir keine Motivation, so etwas zu tun).
  • es geht..muß aber nicht....mh, was soll ich jetzt damit anfangen?

    wie kommst du darauf, daß es der Geheimhaltung unterliegt? Habe doch alles was ich mache erklärt..

    kein Problem, mir fehlt auch die Motivation, wenn ich mir die sinnlosen Beiträge von dem dj anschaue. kann dich da schon verstehen.

    aber was ist es denn für eine 9341-lib genau, von der du da redest? inwiefern ist sie besser als die von hpinik?
  • Unterlasst bitte die persönlichen Anfeindungen. Dies ist und war kein Weg, den wir in diesem Forum beschreiten möchten!



    Der Einwand ist schon berechtigt, das wir keine Ahnung haben von deinem Programm.

    Man muss schon wissen, wie genau du die Serielle bedienst. Dabei hilft es nicht weiter zu erfahren, dass du es "ganz normal" machst oder es vorher mit anderer Hardware auch ging.

    Grundsätzlich, würde ich behaupten, ist es kein Problem, deine Anforderungen mit der von dir geschilderten Hardware zu erfüllen.
    Das wolltest du zwar hören, bringt dich aber nicht weiter.

    Was mich interessieren würde:
    Erkennung neuer Daten von der Seriellen im Schleifendurchlauf, oder Interrupt Verarbeitung?

    Solltest du für den seriellen Empfang keinen Interrupt verwenden, ist mir schon klar, warum es nicht funktioniert.
    Die Zeichnungsroutinen von HKIPNIK benötigen einiges an Zeit, je nachdem wie komplex die Ausgabe ist.

    Als ich die Videoausgabe für AVI Videos programmiert habe, habe ich die Verarbeitungszeiten von jedem Programmteil unter die Lupe genommen. Da hilft keine vage Beschreibung oder Diskussion; da muss man ins Eingemachte gehen.

    Wenn du uns also deinen Programmcode zeigen möchtest, sind hier bestimmt einige, welche dir weitere Tipps geben könnten.


    Hier ein Beispiel, was gehen kann. Ich habe mit einem M128 @8MHZ ein Webradio programmiert, welches auch noch ein ILI Display bedient. Deine Anforderungen sind also im Vergleich dazu eher geringer.

    www.youtube.com/watch?v=hVivi79JadU


    ...und zum Abschluss: Man kann es so machen, wie der junge Mann in dem Video, oder einfach besser :)
    youtube.com/watch?v=EwtbP-0e3jc
    Code first, think later - Natural programmer :D
  • m_herr schrieb:

    ein 20cm Draht
    GND vergessen?

    m_herr schrieb:

    Vielleicht findet sich ja jemand mit Erfahrung auf dem Gebiet, der definitiv bestätigen kann, daß 8Mhz kein Performance-Problem verursacht..oder eben doch.
    Trotzige Anmerkungen machen es nicht besser und jetzt hab ich keine Lust mehr....

    Ohne Programm ist es schwierig.
    Ich schreibe das nur, weil es vermutlich untergegangen ist, da der fehlende Code erst 5 Mal angefragt wurde.
  • six1 wie ich schon mehrfach schrieb, per isr ucrx und direkt aus udr...das ist der code, der oft genug im Forum vor kommt...was ist jetzt nicht verständlich? ich komme mir echt auf den arm genommen vor, wenn ich immer wieder die frage nach code höre, aber er schon längst bekannt ist...

    Michael wie sollte bei vergessenem GND die Datenübertragung überhaupt funktionieren?

    warum machst du denn trotzige aussagen? da ist es doch kein Wunder, daß du keine Lust hast ;)

    ja, vollkommen unnötig wurde 5mal nach dem Code gefragt..alle Infos standen gleich am Anfang da. Aber vielleicht ist auch der Text zu lang...

    Aber ich habe eine andere Idee: Ich benutze AVR Studio 4. Das kennt nur 2560. Ich habe aber einen 2560V. Könnte das vielleicht das Problem sein?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von m_herr ()

  • OK, da du alles richtig gemacht hast, sollte es ja funktionieren.

    Wenn ich nach Quellcode frage und folgendes vor die Füße geworfen bekomme:

    m_herr schrieb:

    six1 wie ich schon mehrfach schrieb, per isr ucrx und direkt aus udr...das ist der code

    dann würde ich deine Leistung eher als sehr gering bewerten.
    Du bist irgendwie der Meinung, alles richtig gemacht zu haben. Wie kann ich dir da helfen?
    Zeige mir auf das Nötige reduzierten Quellcode und ich versuche dir Hilfe zu geben.

    Mit Zynismus kommen wir hier ebenfalls nicht weiter.
    Wie das hier weiter geht, liegt ganz bei dir und deinem Auftreten und Verhalten.
    Code first, think later - Natural programmer :D
  • Mir scheint, dass wir in diesem Thread nicht richtig zueinander finden.
    Die vielen Hilfsbereiten geben Ideen und bitten um Details. Der Threadowner ist der Meinung, es sei alles gesagt. Das passt nicht zusammen und daher sollten wir diesen Thread an dieser Stelle beenden. Das ist kein Fingerpointing in die eine oder andere Richtung. Passt einfach nicht zusammen und Metadiskussion bringt uns nicht fachlich voran.