-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Virtueller megaxx uC

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.07.2004
    Ort
    Mammendorf
    Alter
    61
    Beiträge
    1.058

    Virtueller megaxx uC

    Anzeige

    Hallo Freunde

    Im Rahmen meines Projektes basierend auf stupsis Motorregler Know-How einen Motorregler zu entwickeln der die Funktion einer Winde mit Positionssteuerung übernehmen kann komme ich an die Grenzen eines mega8. Aus diesem Grund möchte ich auf einem Entwicklungsboard welches die diskrete Endstufe von stupsis Motorrregler einsetzt 2 mega8 parallel einbauen und über die Bits einiger Ports kommunizieren lassen. Die beiden mega8 sind dann mein "virtueller uC"!

    Die beiden mega8 müssen die PWM für die Endstufe des Motorreglers erzeugen, sollen den Steuerimpuls vom RC-Empfänger auswerten, sowie das Impulstripel vom Inkrementtalwertgeber RE30 der eingesetzten Dunkermotoren auswerten. Aus der Auswertung der Impulse vom RC-Empfänger und des Inkrementalwertgebers pflegen sie Steuerungsdatentabellen die eine auf ihnen laufende Applikation in die Lage versetzen "intelligent" z.B. eine Winsch zu steuern um das Hauptsegel, oder das Genua an meinem Modellsegelboot zu betreiben.

    Hier die Fragen:

    1. Kann ich einen Ausgang eines mega8 1:1 direkt mit einem Eingang eines 2. mega8 verbinden?.

    Meine Sorge basiert auf den Gedanken das beim Einschalten, oder nach einem Reset, oder nach einer Neu-Programmierung einzelne Ports vielleicht in einem undefinierten Zustand sind und die beiden verbundenen Port.pins dann auf Ausgang geschaltet sein könnten?

    2. Ich würde gerne beide mega8 vom gleichen externen 16MHz Quarz takten lassen. In diesem Fall müsste ich doch die entsprechenden Anschlüsse, XTAL1 und XTAL2, parallel an den Quarz direkt anschliessen.
    Geht das und wenn ja sind dann die zwei 22pF Keramikkondenstatoren dann noch die geeigneten?

    Ich möchte die beiden mega8 parallel an einen Quarz anschliessen damit beide synchron getaktet werden.

    Mit freundlichem Gruß

    Hellmut
    MfG

    Hellmut

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.04.2005
    Beiträge
    181
    Hallo,

    1)
    Überhaupt kein Problem. Nach dem Einschalten gehen alle Pins per Default auf Ausgang, d.h. die Treiber kämpfen nicht gegeneinander.

    Sollte es dir mal wegen Softwarefehler passiern, geht auch nichts kaput. Nu der Stromverbrauch steigt in dieser Zeit.

    2) Das kannst Du nicht machen.
    Lass doch einen der beiden Controller mit dem Quarz die Frequenz erzeugen. Den anderen Schaltest Du mittels Fuse auf externen Takt und speist ein (Fusesetup und Pin im Manual beschrieben).
    Ich glaube man muß auch Controller 1 auf große Signalamplitude am Oszillator schalten

    Bernhard

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.07.2004
    Ort
    Mammendorf
    Alter
    61
    Beiträge
    1.058
    Hallo Bernhard

    Danke für deine Auskunft. Ich habe befürchtet wenn ich 2 Ausgänge aufeinander schalte das die Pins einen Schaden erleiden könnten. Gute Nachrichten!

    Betreff meiner Frage 2 meine Problemstellung aus einer anderen Perspektive. Ist es überhaupt von Vorteil wenn ich die beiden mega8 über Pins kommunzieren lassen will das sie beide synchron mit dem 16MHz Takt versorgt werden?
    MfG

    Hellmut

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Den gleichen Takt für beide kann man mit einem Quarzosszilator viel besser erzeugen als das einer mit einem Quarz getaktet wird und der andere dann einen Takt erzeugt.
    Der Quarzoszi ist etwas größer und etwas teurer als ein Quarz und zwei Kondensatoren, aber dafür auch genauer und kann mehrere AVRs versorgen.

    Zur Kommunikation: Es ist nicht nötig, das beide die gleiche Amplutide haben, wenn es um I²C oder RS232 oder so geht.
    Diese Protokolle lesen das Signal mit einer x-fachen Auflösung von der eingestellten ein und erkennen damit sicher die Signale.
    Dein PC ist ja auch nicht übers Netzwerkkabel mit dem Internet synchronisiert

    Wenn du aber softwaremässig Daten übertragen willst und die Rate sehr schnell sein soll (vier Millionen Bits pro Sekunde), ist das fast nur möglich, wenn beide den gleichen Takt haben.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Sorry für's Doppelpost!

    Danke für deine Auskunft. Ich habe befürchtet wenn ich 2 Ausgänge aufeinander schalte das die Pins einen Schaden erleiden könnten. Gute Nachrichten!
    einen oder keinen?
    Schalte doch einfachen sicherheitshalben einen Widerstand in Reihe. Der Strom ist so klein, das es kaum einen Spannungsfall gibt und wenn es zu einer Feststellung der Parameter gekommen ist, wird der Strom begrenzt.
    4,7kOhm sollten da ok sein.

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.07.2004
    Ort
    Mammendorf
    Alter
    61
    Beiträge
    1.058
    Hallo Marco

    zur Kommunikation. Ich möchte diese zwischen den 2 mega8 nicht über I2C, RS232, usw. ausführen, sondern indem ein I/O Pin des einen mega8 direkt mit dem I/0 Pin des zweiten mega8 verbunden ist. Ausgetauscht werden keine Daten, sondern nur Signale! Hierfür muß der eine mega8 nur den Pegel an dem Pin ändern, der andere mega8 erkennt den neuen Pegel, bzw. die Flanke an seinem I/O Pin und ist damit informiert. So wird die schnellst möglich Reaktion erreicht. Bei RS232 oder I2C, usw. ist der ganze Protokollaufwand erfoderlich. Hier ein Beispiel. Der Inkrementalwertgeber meines Dunkermotors gibt 512 Impulstripel pro Umdrehung. Bei 60 Umdrehungen pro Sekunde 30720 Impulstripel pro Sekunde! Da bleiben zwischen Impulstripel und Impulstripel 520 Takte bei 16MHz. In dieser Zeit die Impulstripel auswerten, die internen Datentabellen pflegen und eine RS232 oder I2C Datenübertragung ausführen. Dann beim 2. mega8 die erhaltenen Daten auswerten und darauf hin die notwendige Reaktion auszuführen ist sicher nicht möglich.

    Nach meiner Methode muß der erste mega8 statt eine RS232 oder I2C Kommunikation auszuführen nur den einen Befehl ausführen den Pegel am Pin z.B. von Low auf High zu setzen. Beim anderen mega8 kann ich entweder im Kode eine regelmäßige Abfrage einbauen, oder ich löse auf den Pegelwechsel ein Interrupt aus. Dieses Interrupt weiss dann weshalb es ausgeführt wurde und löst die gewünschte Aktion aus!

    Da beide mega8 physikalisch auf einer Platine nah bei einander sind entsteht so der "virtuelle super mega8" mit wesentlich mehr I/O´s, 2 Ausführungseinheiten, usw! Klingt das schlüssig?
    MfG

    Hellmut

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.11.2005
    Beiträge
    321
    Es geht so.
    Die Sofwareuarts laufen genauso ab.
    Mit einem Interrupt abfragen und fertig.

    Castle

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801

    Re: Virtueller megaxx uC

    Zitat Zitat von Hellmut
    2. Ich würde gerne beide mega8 vom gleichen externen 16MHz Quarz takten lassen. In diesem Fall müsste ich doch die entsprechenden Anschlüsse, XTAL1 und XTAL2, parallel an den Quarz direkt anschliessen.
    Geht das und wenn ja sind dann die zwei 22pF Keramikkondenstatoren dann noch die geeigneten?

    Ich möchte die beiden mega8 parallel an einen Quarz anschliessen damit beide synchron getaktet werden.
    Dazu wird ein AVR auf Quarz eigestellt wie gewohnt und die Fuses auf 'noisy', um die XTAL-Treiberstufe mit höherer Leistung zu fahren.
    Der zweite AVR bekommt als XTAL1 das XTAL2 des ersten und wird auf external clock eingestellt.

    Um die Ports gegen Kurzschluss (bei Softwarefehlern) zu schützen, kannst du Widerstände dazwischen hängen, die tun den Signalen nicht weh. Nimm einfach 10kOhm. Wenn deine Software korrekt arbeitet geht die direkte Verbindung, weil die Ports nach RESET alle hochohmig sind.
    Disclaimer: none. Sue me.

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.07.2004
    Ort
    Mammendorf
    Alter
    61
    Beiträge
    1.058
    Hallo SprinterSB

    Die 10kOhm in Serie in die Verbindungsleitung einfügen, da die Leitung ja weder zu vcc noch gnd gezogen werden soll, richtig?
    MfG

    Hellmut

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Ja, einfach ein R in die Signalleitung.

    Falls tatsächlich Daten zu übertragen sind, ist SPI am schnellsten und einfachsten.

    Wenn ein AVR nix zu tun hat während der andere arbeitet und nur auf das Handshake vom andern wartet bzw die Kontrolle abgibt und danach idle ist, hast du nicht viel gewonnen durch die Parallelisierung... Mehr Ports kannst du auch mit nem grösseren Bruder haben.
    Disclaimer: none. Sue me.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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