- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 17

Thema: SHIFTOUT mit AVR-Clock

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von hardware.bas Beitrag anzeigen
    Mit einer 800kHz-Timerinterrupt- routine sollte die Spiceerzeugung und das Rausshiften der 24 BIT dann kein Problem mehr sein.
    Ich komme nicht auf 24 Bit sondern auf 8*24, also 192 Bits pro Digit. Und da sehe ich in der Spec auch keine Pause. Ich glaube auch nicht, daß ein 800kHz Timmerinterrupt funktionieren wird. 1,2 µs werden nicht mal für einen leeren Interrupthandler reichen.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.10.2008
    Ort
    Kehnert
    Beiträge
    1.159
    Der Datasheet der RGBDIGITs entspricht genau dem Datasheet der
    offensichtlich dort verbauten hintereinandergeschalteten intelligenten
    RGB-LEDs, darum ist korrekt, dass für die Ansteuerung eines Digits
    8x24 BITs gebraucht werden. Das Protokoll für eine 8-stellige Anzeige
    besteht also in 64 Datenpaketen - Dauer mit Pause knapp 100 Mikro-
    sekunden - also insgesamt für die Komplette Anzeigenaktualisierung
    weit weniger als 10 ms. Die Interuptroutine von 1250ns muss reichen,
    einen einzigen Spike zu senden und Longvariable um eine Stelle in
    einen Ausgangspin zu schieben. Die 50 Mikrosekunden-Pause dient
    dazu, die Longvariable (obwohl nur 3 Byte benötigt werden) neu
    zu beschreiben. und einen Zeiger zu incrementieren.
    Alle anderen Berechnungen befinden sich in der Hauptroutine.
    Als Chip ist ein ATMega162 vorgesehen, wo genügend Speicher-
    arrays etabliert werden können.
    VG Micha

    - - - Aktualisiert - - -

    PS. In die Interruptroutine muss natürlich die Timervoreinstellung
    noch rein. Ansonsten kann ich natürlich die Taktfrequenz noch
    erhöhen, der genaue Wert ist für die im Projekt genutzten 2 UARTs
    jeweils nur 1200 BAUD für RS232 und RS485.
    VG Micha
    Was brauche ich für Werkzeug - in dieser Reihenfolge seht ihr es:
    Vorschlaghammer, Notebook, BASCOM, Lötequipment, Rohrzange, Bolzenschneider ...

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von hardware.bas Beitrag anzeigen
    Der Datasheet der RGBDIGITs entspricht genau dem Datasheet der offensichtlich dort verbauten hintereinandergeschalteten intelligenten RGB-LEDs, darum ist korrekt, dass für die Ansteuerung eines Digits 8x24 BITs gebraucht werden.
    Da gibt es aber keine Pause. Die 192 Bits müssen am Stück raus. Kommt da eine Pause drin vor, wird wieder die erste LED angesteuert.

    Das Protokoll für eine 8-stellige Anzeige besteht also in 64 Datenpaketen
    Wenn man die Digits einzeln ansteuert, sind es 8 Datenpakete, eins pro Digit, mit einer Länge von 192 Bits.

    Eigentlich macht man das aber anders. Man schaltet die Digits einfach hintereinander. Es sind ja "nur" 64 LEDs für die 8 Digits. In anderen Projekten werden 100 oder auch 200 LEDs so gesteuert. Ich hab eine Matrix mit 144 (12*12) LEDs in Betrieb, aber mit einer fertigen Library, deren innere Funktion ich nicht kenne. Das entspricht einer Anzeige mit 18 Digits.

    Die Interuptroutine von 1250ns muss reichen, einen einzigen Spike zu senden und Longvariable um eine Stelle in einen Ausgangspin zu schieben. Die 50 Mikrosekunden-Pause dient dazu, die Longvariable (obwohl nur 3 Byte benötigt werden) neu zu beschreiben. und einen Zeiger zu incrementieren.
    Auf einem 8-Bitter werden aus einem Shift eines Longs 4 Shifts eines Bytes. Dazu braucht man noch einen Zähler, der die 24 Bit abzählt. Und da es diese "50 Mikrosekunden-Pause" nicht gibt, muß man sich in den 1250ns alle 24 Bits noch um das Nachladen kümmern. Dazu werden am Anfang des Interrupts noch einige Register gerettet, die am Ende wieder hergestellt werden müssen. Die Neopixel-Libraries schieben 1000 und mehr Bits in einem Rutsch raus.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.10.2008
    Ort
    Kehnert
    Beiträge
    1.159
    Ich sehe - bis jetzt - im Datasheet immer noch die Pause
    alle 24 BITs. Die einzelnen Segment-RGB-LEDs müsste
    daher schaltungstechnisch als Einzelbauelemente
    betrachtet werden. Also 64 Sendeprozeduren bei
    8 DIGITs. Offensichtlich erfolgt die Adressierung so,
    dass jede LED nur das erste 24 BIT-Datenpaket auswertet,
    dann ausblendet und nur die restlichen weitersendet usw .
    Meine neue Idee währe jetzt, während der Displayansteuerung
    sämtliche Interrupts abzuschalten und wie folgt zu verfahren:
    DIM IMPULS AS BIT(24)
    .
    FOR SEGMENT = 1 TO 24
    PORTA.1 = BIT(SEGMENT) : Ausgabe der H/L-Torsteuerung
    NOP : oder mehrere NOPs
    TOGGLE PORTA.0 : Spike für die MMVs
    TOGGLE PORTA.0 : gibt wohl dafür einen extra Befehl
    NOP : oder mehrere NOPs
    NEXT SEGMENT

    VG Micha

    werde
    Was brauche ich für Werkzeug - in dieser Reihenfolge seht ihr es:
    Vorschlaghammer, Notebook, BASCOM, Lötequipment, Rohrzange, Bolzenschneider ...

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.10.2008
    Ort
    Kehnert
    Beiträge
    1.159
    Muss leider zugestehen, dass BIT-Arrays nicht compiliert werden.
    Das variablenbezoge Auslesen von LONG-BIT akzeptiert jedoch
    der Compiler. Um die die og FOR-NEXT-Schleife umzuschreiben,
    wollte ich im Vorfeld mittels Bascom-Simulator, die notwendigen
    Taktzeiten ermitteln. Leider weiss ich nicht, wie das dort lösbar
    ist, irgendwelche "clocks" zeigen 0 an, laufen jedoch biem Bewegen
    des Mauszeigers auch nach dem Ende der Simulatin weiter.
    Gibts da einen Trick? Im BASCOM-Help wurde ich nicht fündig.
    VG Micha

    - - - Aktualisiert - - -

    Hab jetzt versucht, die Realtimevorgänge im BASCOM-Simulator
    mit Auslesen des TIMER1 in etwa rauszukriegen. Scheint für
    Zeitsimulationen ungeeignet zu sein. Wird wohl für weitere
    Aussagen hierzu die Hardware besser entscheiden, sprich,
    das ATMega8-Experimentier-Board.
    VG Micha
    Was brauche ich für Werkzeug - in dieser Reihenfolge seht ihr es:
    Vorschlaghammer, Notebook, BASCOM, Lötequipment, Rohrzange, Bolzenschneider ...

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.10.2008
    Ort
    Kehnert
    Beiträge
    1.159
    Ohne Programmänderung hat bei meinem BASCOM-Simulator heute plötzlich
    die Timerfunktion funktioniert. Leider war die Wiederholgenauigkeit teilweise
    nicht akzeptabel. Heraugekommen sind jedenfalls Werte, welche eine viel
    zu hohe Taktzahl für alle bisher avisierten Lösungen zur Ansteuerung der
    RGB-DIGITs zur Folge haben (Jenseits von Gut und Böse). Ich verzichte aus
    Zeigründen daher auf einen Hardwaretest und die Nutzung (trotz anfänglicher
    Euphorie) der RGB-DGITs. Werde eine andere effektvolle Anzeigenform finden
    VG Micha
    Was brauche ich für Werkzeug - in dieser Reihenfolge seht ihr es:
    Vorschlaghammer, Notebook, BASCOM, Lötequipment, Rohrzange, Bolzenschneider ...

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Wenn du selber mit dem Timing nicht zurechtkommst, dann würde ich mir mal die Rainbow-Lib (RB_...) ab Bascom Version 2.0.8.0 ansehen. Die ist von einem cleveren Programmierer genau für die WS2812 Chips gemacht worden.
    Ist zwar eigentlich für RGB Stripes gedacht, wird aber mit deinen RGB Digits genau so funktionieren.

Ähnliche Themen

  1. Probleme mit Shiftout
    Von rauf81 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 22.05.2011, 16:31
  2. SHIFTOUT mit externem Takt möglich?
    Von stefan_Z im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 27.11.2007, 12:10
  3. ShiftOut und ShiftIn in Assembler einbinden
    Von Ruppi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 31.12.2005, 17:37
  4. Verständnisfrage shiftout / HC595
    Von Jürgen200 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 10.01.2005, 13:25
  5. Shiftout geht nicht?
    Von x-ryder im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 01.12.2004, 16:05

Berechtigungen

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

12V Akku bauen