Beiträge von Elite

    Ein leichtes Flimmern ist ok und liegt schätzungsweise an der Berechnung von Atmowin.

    Code
    1. Dim Kanal As Word

    sollte das Flackern der ersten LED beheben.
    So wie der Neni das in Post 24 beschreibt, funktionierts. Bleib doch bei soft-SPI. Alles was funktioniert ist recht.

    Bei stehendem Bild darf nichts flackern. Bei bewegtem Bild kann es durch Atmowin zu einem leichten Flimmrern kommen. Flackert's auch bei stehendem Bild, so könnte die Spannungsversorgung schuld sein.
    Wie setzt du mDMX nach WS2801 um/ welchen Code nimmst du dazu? Das mit dem ersten Pixel tritt bei falscher Anwendung meiner Firmware auch auf; wäre hier der Überlauf eines Bytes.
    Masse hast du durchverbunden?

    hey Irrlicht,


    ich wüsste nicht, wie ich beim Flashen falsch gemacht haben könnte. Das MyAVR ProgTool lässt einem denke ich mal auch nicht so viele Möglichkeiten. Die drei Platinen welche nicht so recht wollen, habe ich in einem Rutsch programmiert, die "Gute" war der Layouttest vorab. Welchen Bootloader ich da nun einsetzte, ist mir eigentlich egal, solange es ein GUI dazu gibt. Zum Testen auch gerne eine Konsolenvariante.


    Nun zur Neuauflage der Platine:
    Leider spielt der Platz nicht mit, alle Bauteile auf eine Seite zu packen. Vielleicht klappt es mit der Rationalisierung der Bauteile, aber ich denke eher nicht. Der Reedkontakt ist nur zum Toggeln des Betriebszustands geschlossen, dessen Stromhunger also irrelevant. Durch deine Einwände sind nun einige Bauteile weggefallen, auch den ADC-Teil spare ich mir nun und aktiviere im RFM12 die brown-out-detection, die sparsamer ist als die des Controllers und ihn über PD3 schlafen legen soll. PC1 sollte diese Aufgabe im letzten Layout übernehmen, um die Schaltung von der Batterie zu trennen, solbald deren Ladezustand kritisch wird. Der Reset des RFM12 ist intern beschalten und fungiert als IO, damit kann man sowohl das Modul auf Reset ziehen als auch den Controller; je nach Beschaltung und Programmierung.


    Deine Ansprüche an den Schaltplan habe ich auch umgesetzt. Beim Letzten war nicht geplant, dass ihn jemand ausser mir zu sehen bekommt. Da kommts dann halt nur aufs Layout an und nicht dass man sich gut darin zurecht findet.
    Gibts noch was zu verbessern oder kann ich mit dem Layouten anfangen?

    Habe jetzt mal den FT232 komplett vom Controller getrennt und PortD.0 gegen GND und gegen VCC des Controllers geschalten und es haben sich keine Besserungen ergeben.;( Aus lauter Selbstzweifel habe ich dann nochmal das Programm ohne Bootloader geflasht und das tut. Ich würde gerne mit einem neuen Layout und frischen Bauteilen nochmal "neu anfangen". Irrlicht : hast du noch eine Idee oder darf ich dich um deine Verbesserungsvorschläge bitten?
    Mit den Bildern wird man wohl nichts anfangen können. Die Platine sieht durch das Modifizieren schon aus wie Sau.
    [Blockierte Grafik: http://www.abload.de/thumb/imag0363hcb44.jpg][Blockierte Grafik: http://www.abload.de/thumb/imag0364iaf7p.jpg]

    Der Bootloader bleibt in sich hängen, so dass das eigentliche Programm nicht aufgerufen wird.
    Wahrscheinlich lauert der auf irgendwas (serielle Daten) das nicht so kommt, wie er es erwartet.

    Ja, in die Richtung habe ich auch schon gedacht. Meine USB-Buchse ist nämlich mit 15cm Kupferlackdraht ausgelagert. Habe ich aber noch vor dem Erstellen des Threads ausprobiert und den Kupferlackdraht und damit die Antenne vom 232 entfernt, ohne Veränderung natürlich.
    Aus dem Layout wird wohl kaum einer schlau werden. Wie gesagt sind die USB Buchse und ausserdem der Reedkontakt ausgelagert. Masseflächen habe ich ausgeblendet. Ein Bild des Aufbaus und Änderungen kann ich frühestens morgen wieder machen.

    Dateien

    • Layout.png.txt

      (40,12 kB, 131 Mal heruntergeladen, zuletzt: )

    Dieser Bootloader wird bei jedem Start aufgerufen und wartet dann kurz, ob man versucht sich seriell zu verbinden. Findet kein Verbindungsversuch statt, wird im Optimalfall der Programmcode gestartet. Mehr weiß ich auch nicht. Das einzigste was ich machen kann, ist das Programm ohne Bootloader zu brennen, anderen Einfluss habe ich nicht, da ich den Quellcode der Bootloaders nicht kenne.
    Oben rechts der NUD4001 ist eigentlich ein MAX1811 und an dem hängt ein Li-Akku (mit VBAT gekennzeichnet).
    Nach dem Erhöhen der Stacks hab ich nach 10 Versuchen aufgehört.
    Der Brutalo-Test geht auch nur sporadisch.
    Manchmal sollte man das Zeug einfach in die Ecke werfen. Normalerweise gibts immer eine logische Erklärung, auch für solche sporadischen Sachen. Schade, dass in der Elektronik Gewalt meist nicht hilft.

    Softwaremaßnahmne bringt keine Veränderung; geht nur sporadisch.
    Auch durch den Reset nach ungeglücktem Starten läuft nichts. Was aber geht: Wenn die Schaltung erstmal läuft den Controller bei betätigtem Reedkontakt zu resetten. Dann läuft das Programm nach der Bootpause und den zusätzlichen 500ms wieder.
    Pesi hatte mal gefragt, ob denn die Kommunikation gut funktioniert. Zeitweise bekomme ich die Meldung im GUI dass ein falscher Bootloader gefunden wurde.

    Danke für den Input, habe jetzt auf 4,7µF und 8,2R umgebaut, war sowieso schon auf Keramisch. Damit ist Tau kleiner als bei 2,2µF und 45R.
    Mit VCC meine ich am Controller, also nach T4. Da hat sich dann auch ein Vorzeichenfehler eingeschlichen. Es sind natürlich 100nF keramisch. An VBAT (vor T4) ist nur C11 mit 10µF.
    CE-Streke von T4 habe ich eben 10 mal überbrückt und die Saelbsthaltung hat nicht gegriffen.
    Die Dioden sind fürs Auslesen des Reedkontakts. Habe ich so aus einer Selbsthalteschaltung übernommen. Deine Erklärung macht Sinn, nur keinen Effekt. Nach überbrücken der Dioden habe ich nicht mal mehr sporadisch eine Funktion.
    Die 3,3V im Schaltplan sind die des FT232RL, werden aber nicht verwendet.


    Edit: Manchmal startet die Schaltung, wenn ich das USB Kabel einstecke. Das sollte doch eigentlich nicht möglich sein.? Auch ist es unmöglich die Schaltung zu starten, wenn das USB Kabel eingesteckt ist. Waaahhhh bahnbrechende Entdeckung: eben mal bei angesteckter Schaltung das GUI gestartet und auf Connect und dann ohne den Reedkontakt zu betätigen wieder Disconnect geklickt und daraufhin hat sich die immer noch angesteckte Schaltung per Reedkontakt jedes Mal starten lassen. Beim Versuch das zu wiederholen geht allerdings wieder gar nichts.
    nochmal Edit: hatte die Schaltung eben mal ein paar Minuten eingesteckt und siehe da, sie lässt sich jedes Mal per Reedkontakt starten.???? Nur ganz kurz ausgesteckt und wieder eingesteckt und schon gehts nicht mehr. Ich wette in einer Minute gehts wieder.
    Und nochmal: Auch nach 3 Minuten gehts nicht. Wenns denn mal mit eingestecktem Kabel geht, dann dauerhaft bis mal ausgesteckt wurde.

    So, habe eben mal alle Vorschläge umgesetzt. Aktueller Stand ist damit:
    10µF + 56R parallel zum Reedkontakt S1
    PORTC.2 zuerst aktivieren
    C4 + R1 (Resetbeschltung) verdoppelt
    zweiter 100µF an VCC
    Pullups aktiviert (wie Konfiguriert man SPI und Xtal richtig?)


    PIND.5 hängt an VCC, J1 ist also geschlossen.
    PIND.2 sollte ja nun der Pullup aktiv sein.


    Zitat

    Probiere auch mal, dem C2 noch 'nen Elko parallel zu schalten


    du meinst bestimmt C1? Ich habe eben mal nen 4,7µF Elko parallel zu C1 angelötet, damit gehts nicht mal mehr sporadisch.
    Waaaaahhhhhhh so langsam könnts dann aber auch mal funktionieren.


    BTW: mein Pegel an CLK liegt bei 3,7V VCC bei 2,8V high und 0,95V low. Nice, ne? funktioniert aber.^^

    Ja klar!

    das hatte ich erwartet. So war die Frage nicht gemeint. Hast du auch nen Link oder ein Bild oder eine Beschreibung?
    Pullups sind natürlich nicht gesetzt, war noch nie notwendig. Bin mal gespannt, obs ne Veränderung bringt. Klingt ja vielversprechend.


    >>Du bist definitiv außerhalb der Spec!
    Alles was funktioniert ist recht.^^


    >>Greift die Selbsthaltung nicht (das wäre ein klarer Indikator), oder woran macht Du das fest?
    siehe Post 14
    zum Anderen erinnere ich mich an ein ähnliches Layout mit Bootloader (dem Sender, die hier diskutierte Platine ist der Empfänger), bei dem der Controller auf externen Quarz gefused war und ich kein Einschwingen messen konnte. Muss ich hier auch mal machen; Taktausgabe fusen und messen bzw. Layout mit Quarz und dann messen.


    Den geheimen Code hab ich angehängt.

    Dateien

    • Kot.bas.txt

      (5,08 kB, 154 Mal heruntergeladen, zuletzt: )

    Naja, gut. Das kann ich ja alles beim nächsten Layout berücksichtigen. Nur liegt hier nicht das Problem.?
    Die Kommunikation mit den WS2801 läuft problemlos auch wenn die jetzige Transistorlösung nicht optimal ist. Hatte damals gegoogelt und die verwendete Schaltung als logisches UND aus Transistoren gefunden. Gibts denn eine bessere Lösung, welche einen kleineren Drop verursacht?
    Viel wichtiger wäre mir zu wissen, warum der Controller nur sporadisch startet.

    Wieso sollte der Kondensator parallel zum Relais nennenswerten Stromverbrauch generieren, das verstehe ich nicht so ganz?
    Was meinst du mit: "hält sich der Controller selbst und führt das Programm aus"?

    bei Akkubetrieb ist jeder Standbyverbraucher ungewollt, deshalb war eine Vorgängervariante ja auch mit bistabilem Relais.
    Die Schaltung ist so konzipiert, dass durch betätigen des Reedkontaktes der Mikrocontroller mit Spannung versorgt wird, der dann den Ausgang C.2 schaltet, wodurch der Reedkontakt überbrückt wird; er hält sich selbst. Daraufhin folgt der eigentliche Programmcode, also das empfangen von Daten vom RFM12 und der Ausgabe an die WS2801.


    Heute bzw. gestern bin ich dazu gekommen die Punkte von Irrlicht abzuarbeiten: Reedkontakt entprellen, PortC.2 zuerst aktivieren, C4 sowie den R1, zweiten Kondi zur Pufferung der Versorgungsspannung. Hat alles keine merkliche Veränderung gebracht.

    Danke für den Input Irrlicht.
    Die Posts schließen sich nicht gegeneinander aus, mir wird nun bewusst, dass der Anfang etwas unvorteilhaft ausgeführt ist. Das Problem findet sich überall wieder, nur ist das für einen Unbeteiligten schwierig zu verstehen. Bitte entschuldigt das, für mich erschien das selbstverständlich aber ich sitz ja auch davor.


    >>Das Programmieren über USB erfolgt doch sicherlich über den Bootloader, oder?
    Ja


    >>Was hat das denn nun mit dem Bootloader zu tun?
    na ohne Bootloader hält sich der Controller selbst und führt das Programm aus, deshalb der Threadtitel.


    >>Dein Problem liegt also offenbar nicht im Starten des Bootloaders, sondern im Starten des eigentlichen Programms, sehe ich das richtig?
    Jein; dadurch, dass das Programm danach nicht gestartet wird bzw. der Controller sich nicht selbst hält, gehe ich davon aus, dass das Problem im Zusammenhang mit dem Bootloader entsteht.


    bei den Fusebits bin ich schon auf 65ms. Geht da noch mehr, nee oder?


    Den C Parallel zum Reedkontakt (der selbstverständlich ein Schließer ist^^) habe ich aus Stromspargründen wegrationalisiert. Deine Anmerkungen machen Sinn, werde ich bei Gelegenheit so umsetzen.

    Ok, dann hol ich mal etwas weiter aus.
    Die Platinen sind für autarke Anwendung und ein Li-Akku versorgt das Ganze mit Spannung. Geladen und Programmiert wird lediglich über die USB-Buchse. Um das Gehäuse möglichst wenig zu beschädigen wird die Schaltung über einen Reedkontakt S1 eingeschaltet und soll sich nach der Wartezeit des Bootloaders über den Controller selbst halten. In Post 1 markiert VBAT den Pluspol des Akkus. Um zu programmieren stecke ich also das USB- Kabel ein und betätige daraufhin den Reedkontakt bis verbunden und neu programmiert ist. Das funktioniert auch bestens. Stecke ich nun aber das USB- Kabel ab und versuche durch erneutes Betätigen des Reedkontaktes S1 die Schaltung zu starten, so ergeben sich die beschriebenen Probleme, die übrigens auch bei direktem Starten durch das GUI nach dem Programmieren auftreten.
    Dieser Bootloader braucht keinen Aufruf sondern verhält sich wie das Bios am Rechner. Knöppsche drücken und warten, dann startet er das Betriebsystem oder du unterbrichst ihn mit [entf]
    Vor dem eigentlichen Programm schalte ich eben Portc.2 high, damit sich die Schaltung selbst hält und ich den Magneten wieder entfernen kann; so ist zumindest der Plan.
    Dass das Ganze nur sporadisch funktioniert, deutet für mich darauf hin, dass ich mich irgendwo in einem Grenzbereich befinde. Allerdings sind es zwei verschiedene Punkte: S1 wird betätigt, der Programmcode abgearbeitet, die Selbsthaltung funktioniert allerdings nicht (bzw. nur in warmer und trockener Umgebung); oder man muss S1 sehr oft betätigen, bis die Schaltung anspringt, dann aber funktioniert wie gewünscht. Wenn ich mir das gerade so anschaue, erscheint mir R20 überdimensioniert bzw. im Verhältnis zu R21 zu groß.?

    So, dann will ich mal etwas Dunkel ins Licht bringen.
    Gestern und Vorgestern hatte ich "funktionierend" und "sporadisch" im Einsatz. Bei einer Luftfeuchtigkeit über 100% und unter 0°C wurde dann aus "funktionierend" tot und "sporadisch" verhielt sich gleich wie bei Zimmerbedingungen. "Funktionierend" hat zwar zuverlässig gestartet, ging aber aus, sobald S1 geöffnet wurde. Das hat jetzt zwar nur mittelbar mit dem Problem zu tun, könnte aber einen Hinweis leisten.


    Nun zu euren Antworten (vielen Dank dafür!):
    Das ist nicht die erste Version dieser Anwendung. Eine der Vorgängerversionen ohne Bootloader hat auch ohne externen Takt problemlos und zuverlässig funktioniert. Die Übertragung des Programmcodes funktioniert laut ChipBoot45 GUI auch problemlos. Wenn der Code also erstmal läuft, dann gibts auch keine Timingprobleme. Kann ich davon ausgehen, dass die Taktgenauigkeit während der Startphase irrelevant sind?. Beim nächsten Layout wird jedenfalls der Takt des RFM12 mitverwendet um sicher zu gehen; gerade bei noch größeren Minusgraden.
    Alle Platinen sind auf 1024k boot block und aktiviertem boot reset vector gefused (1/8 ist auch deaktiviert). Bei "funktionierend" könnten andere Fuses von den "Werkseinstellungen" abweichen, muss ich aber erst noch überprüfen. Der Code belegt mit 2,6k 32% des Speichers.
    Turi und Irrlich schlagen ja beide in die Kerbe, dass die Übertragung des Programmcodes das Problem darstellt, nicht das Starten danach.? Da ich keine Probleme bei der Übertragung feststellen kann und der Code ja nach unterschiedlichsten Startproblemen läuft, vermute ich den Fehler eher in der externen Beschaltung, wie anfangs beschrieben. Ob der Bootloader während der Startphase Lebenszeichen gibt, wäre mir nicht bewusst.


    Ich meine mich erinnern zu können, dass es mit der direkten Vorgängerversion keine bootloaderspezifischen Probleme gegeben hat. Da war die Selbsthaltung noch mit einem bistabilen Relais realisiert. Den entsprechenden Plan hänge ich mit an.
    Eine tote der vier Platinen, welche ich nun direkt gebrannt habe, zeigt auch sonderbares Verhalten: sie startet das Programm beim Einstecken des USB-Kabels ohne dass S1 betätigt wurde. (Dazu gehört dann wieder der in Thread 1 angehängte Schaltplan, nicht der hier)

    Da mein Problem im TTT untergegangen ist, aber weiterhin besteht, mache ich hier nen Thread dazu auf.
    Zum Problem:
    Ich habe vier Platinen, Layout identisch. Alle sind gleich bestückt, gefused, und mit dem Bootloader von Chip45 bespielt. Nachdem ich nun alle in Betrieb nehmen wollte, musste ich feststellen, dass nur eine funktioniert wie gewünscht. Eine Zweite startet sporadisch und nicht reproduzierbar und die anderen Beiden lassen sich gar nicht beleben. Da es sich meiner Meinung nach um vier identische Platinen handelt, weiss ich nicht wirklich wo ich ansetzen soll. Eine, welche keine Funktion zeigt, habe ich komplett entstückt, überprüft und wieder bestückt -> funktioniert immer noch nicht. Was extrem komisch ist: flashe ich das Programm direkt auf den Chip funktionierts. Der einzigste Unterschied, der sich optisch ergibt: die Massefläche der funktionierenden Platine ist etwas üppiger. Die funktionierende Platine wurde komplett händisch gelötet, bei den anderen Dreien das Hühnerfutter mit Heißluft. Aber wie gesagt: direkt geflasht funktionieren sie alle.
    Relevante Bauteile sind: Mega88, RFM12, FT232RL, WS2801, MAX1811 (linearer Laderegler für Li-Ion an USB)
    Ein komplett anderes Layout mit Mega88, RFM12, FT232RL, MAX1811, BTM222 (Bluetoothmodul) zeigte Besserung, wenn statt dem Labornetzteil ein Akku zur Spannungsversorgung verwendet wurde.???
    Kondensatoren sind meiner Meinung nach da wo sie sein sollten und Welligkeit in der Versorgungsspannung kann bei dem aktuellen Layout nur durch die LEDs an den WS2801 entstehen und so weit kommts gar nicht.
    Damit stellt sich die Frage, was an den Platinen den Start des Bootloaders verhindert.?