Ich brauche ein paar Ideen, es fällt mir sehr schwer, bei diesem schwülen Wetter brauchbare Gedanken aufs Papier zu bekommen. Ich habe auf einem Board zwei Controller, die eigentlich unabhängig Aufgaben erledigen. Es findet untereinander keine Kommunikation statt, war bisher nicht nötig und ist HW-seitig auch nicht vorgesehen. Aber beide Controller haben Zugriff auf einen Treiber, der eine LED ansteuert. Im Prinzip sind beide Kontroller über jeweils einen Port-Pin direkt miteinander verbunden. An dieser direkten Verbindung hängt ein Widerstand, der wiederum am Treiber hängt. Die Idee war: Wenn der eine Controller den Treiber ansteuert, kann der zweite "mitlesen". Und umgekehrt. ==> Hat auch funktioniert bzw. funktioniert auch weiterhin. Die neue Herausforderung ist aber allerdings: Am zweiten Controller hängt ein Taster, der, wenn er betätigt wird, den ersten Controller beeinflussen soll. Heißt: Der erste Controller (ATmega) steuert den Treiber für die LED im 4Hz Takt. Wenn der Taster am zweiten Controller (AT90CAN) betätigt wird, soll der erste Controller mit 10Hz blinken. Mein Grundgedanke ist: Während der taktgebende Controller in der Low-Phase ist, soll der "mitlesende" Controller, den Input auf Output wechseln und ein High-Impuls(Peak) senden, der z.B. beim taktgebenden Controller per Interrupt empfangen wird. Kommt also in der Low-Phase ein Impuls (aus Sicht des taktgebenden Controllers), wird die Frequenz gewechselt. Was mich gerade stört, ist die Umschaltung der Ports bzw. der Wechsel zwischen Output und Input auf beiden Seiten. Gibt es da fertige Routinen? Ist eine Umschaltung erforderlich? Kann man in der Low-Phase trotzdem etwas abfragen? Die HW kann nicht geändert werden - sie existiert schon. Es ist auch kein externer Pull-up/Pull-down Widerstand vorhanden. Könnt ihr mir mit Ideen auf die Sprünge helfen? Schwitzige Grüße
Warum lässt du nicht einfach den 2. Controller (der mit dem Taster) die LED in Abhängigkeit der Tasterinformation blinken, und der erste Controller liest die Frequenz mit? Dann benötigst du überhaupt keine Umschaltung. Controller 2: Output Controller 1: Input
> der Wechsel zwischen Output und Input auf beiden Seiten. > Gibt es da fertige Routinen? Das soll ein Scherz sein, oder? Zur Umschaltung der Richtung ändert man ein Bit (jedenfalls bei den meisten Mikrocontrollern). Brauchst du eine vorgefertigte Routine, die ein Bit ändert? Wenn ja, was machst du, wenn mal mehr als diese kleinste denkbare Operation gemacht werden soll? Beauftragst du dann einen Spezialisten? Ich empfehle Dir, ein Programmier-Tutorial durchzuarbeiten. Vorzugsweise nicht von Arduino. Gib nächstes mal an, um welche Bauteile es konkret geht. Bei "Controller" könnte man (wenn man spitzfindig ist) auch an etwas ganz anderes denken, zum Beispiel einen Beruf oder ein Eingabegerät für Videospiele. Und bei "Treiber" fallen mir spontan die Ägypter beim Pyramidenbau ein, die haben Sklaven getrieben. Ich bin mit 41 zwar schon alt, aber ich denke, dass sich die Fachbegriffe in den letzten 20 Jahren nich so plötzlich geändert haben, dass ich es nicht mitbekommen habe. Ansonsten lass uns mal eben schnell die Amper für den Exiter Slayer hochskillen damit der Joule Thief nicht dein Smartphone zockt. :-) Sorry, das musste mal raus.
Mike schrieb: > Die HW kann nicht geändert werden - sie existiert schon. Ist kein Argument. Du glaubst gar nicht, was man mit einem scharfen Messer und mit dünnem Draht (Fädeldraht) an einer bereits 'fertigen' Platine noch alles ändern kann. > Könnt ihr mir mit Ideen auf die Sprünge helfen? Sorg für eine ordentliche eindeutige Verbindung vom 2.ten Controller zum ersten. Deine Idee ist eine Schnapsidee. Zum einen dürfen niemals 2 Ausgänge gegeneinander treiben. Zum anderen sind Interrupts kein Allheilmittel für einen verkorksten Ansatz. Also entweder die Ansteuerung der LED auf den 2.ten Controller verlagern und im 1.ten Controller die Blinkfrequenz (mit einer gewissen Verzögerung) feststellen und darauf reagieren oder die Hardware entsprechend umbauen, wenn noch Pins frei sind.
Joe F. schrieb: > Warum lässt du nicht einfach den 2. Controller (der mit dem Taster) die > LED in Abhängigkeit der Tasterinformation blinken, und der erste > Controller liest die Frequenz mit? > Dann benötigst du überhaupt keine Umschaltung. Der erste Controller wertet analoge Messungen an diversen Sensoren aus und treibt entsprechend die Ausgänge. An diesem ist kein weiterer Pin mehr frei. Der zweite Controller hat bereits einen Taster. Und dieser soll nach Betätigen, Einfluss auf die Blinkfrequenz nehmen bzw. den Ausgang dauerhaft einschalten.
Stefan U. schrieb: > Das soll ein Scherz sein, oder? Zur Umschaltung der Richtung ändert man > ein Bit (jedenfalls bei den meisten Mikrocontrollern). Brauchst du eine > vorgefertigte Routine, die ein Bit ändert? Das bekomme ich noch so gerade hin... Wenn du richtig lesen kannst, bemerkst du, dass die Portpin direkt miteinander verbunden sind. Und wenn der eine Ausgang auf Low ist und ich beim zweiten Controller die Richtung ändere (Input --> Output) und einen Peak darauf gebe, was glaubst du was passiert??? > Gib nächstes mal an, um welche Bauteile es konkret geht. Bei > "Controller" könnte man (wenn man spitzfindig ist) auch an etwas ganz > anderes denken, zum Beispiel einen Beruf oder ein Eingabegerät für > Videospiele. Und bei "Treiber" fallen mir spontan die Ägypter beim > Pyramidenbau ein, die haben Sklaven getrieben. Wer lesen kann ist klar im Vorteil (ATmega und AT90CAN) > Ich bin mit 41 zwar schon alt, aber ich denke, dass sich die > Fachbegriffe in den letzten 20 Jahren nich so plötzlich geändert haben, > dass ich es nicht mitbekommen habe. > > Ansonsten lass uns mal eben schnell die Amper für den Exiter Slayer > hochskillen damit der Joule Thief nicht dein Smartphone zockt. :-) Meine Empfehlung: Wenn man einen Troll-Beitrag abgeben möchte und nicht konkret zur Lösung beiträgt, lässt man den Beitrag besser weg. Er hilft nicht weiter! Alternative Empfehlung: Beitrag lesen und VERSTEHEN und dann einen Beitrag zur Lösung geben. Du hast mir jedenfalls nicht geholfen :(
Karl H. schrieb: >> Die HW kann nicht geändert werden - sie existiert schon. > > Ist kein Argument. > Du glaubst gar nicht, was man mit einem scharfen Messer und mit dünnem > Draht (Fädeldraht) an einer bereits 'fertigen' Platine noch alles ändern > kann. Das stimmt, aber es sind mehrere Platinen, die bereits eingebaut sind (und vergossen). Ein SW-update ist aber - dank Bootloader - relativ einfach möglich
Alles es du in der Richtung machst ist in meinen Augen pfusch. Aber du könntest es so machen das UC 1, der die LED ansteuert in einer lowhigh Phase erst eine Zeit lang auf Eingang mit Pullup geht. Also low, Eingang+Pullup, high. In der Phase trigger er zärtlich auf eine fallende Flanke. Der 2. Controller reagiert immer auf die steigende Flanke (durch den Pullup) mit einem interrupt. Tritt er auf und es soll eine Umschaltung auf 10Hz erfolgen, zieht der 2.UC den Pullup nach unten über ein low. Der UC 1 erfasst diese fallende Flanke durch den interrupt und schaltet beim nächsten Zyklus auf die höhere Frequenz. Oder du sendet gleich ein Protokoll in der Eingangsphase.
Also eine Art "Led Ansteuerung mit überlagerter UART". Mit Symbolbreite 1-x. P.S. Ja ich habe selbst die Schreibfehler gesehen. Verdammte Korrektur :-)
Mike schrieb: > kein externer Pull-up/Pull-down Widerstand Ist nicht tragisch, Der ATmega hat interne Pullups. Frank hat die Lösung skizziert: Du machst die "Datenübertragung" von MCU2 nach MCU1 in der LED-AN-Phase: LED-AN = MCU1 ist auf INPUT mit PULLUP LED-AUS = MCU1 ist auf OUTPUT mit LOW MCU2 kann dann in der LED-AN Phase das Signal (kurz) auf LOW ziehen. Die Triggerung kann man so machen, wie es Frank skizziert hat. Das hat auch den Benutzer-Vorteil, dass bei eingeschalteter LED ein kurzer "Aussetzer" vom Auge nicht so störend wahrgenommen wird, wie umgekehrt. Fertige Routinen gibts dafür natürlich nicht. Die tricksige Lösung musst Du selbst implementieren. Viel Erfolg. Matz. Stefan U. schrieb: > Ich bin mit 41 zwar schon alt... Da hast Du aber was falsch gemacht, wenn Du Dich mit diesen jungen Jahren schon so alt fühlst. Lass Dir das aus Erfahrung sagen... ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.