Forum: Mikrocontroller und Digitale Elektronik Zwei AVR-Mikrocontroller parallel = bis zu 16 Bit?


von Frank B. (jeanluc7)


Lesenswert?

Salut,
wir basteln gerade an einer digitalen Ansteuerung einer Bildröhre. Um 
dort ein Raster zu erzeugen, werden zwei Sägezahngeneratoren benötigt, 
einer für die horizontale und einer für die vertikale Ablenkung. Unser 
Wunsch ist nun, das ganze möglichst in einem weiten Frequenzbereich zu 
ermöglichen, so dass die Bildröhre (eine kleine Oszilloskopröhre) sowohl 
PAL (15.625 kHz/ 50Hz) als auch VGA und SVGA (38,5 kHz/ 60 Hz) 
verarbeitet. Das kann man analog mit Kondensatoren machen, aber dann 
wird die Amplitude von der Frequenz abhängig. Vor allem aber hat man 
immer ein Problem mit der Linearität. Also kamen wir auf die Idee, das 
ganze per MC und Widerstandsnetzwerk zu realisieren, siehe hier 
Beitrag "Einfacher R2R-DAC".

Soweit ist das auch alles kein Problem. Für SVGA braucht man aber in 
horizontaler Richtung 1024 Linien (Pixel), also eine Auflösung von 10 
Bit und das mit einer Aktualisierungsfrequenz von 40 MHz (38 kHz Takt 
und dazwischen 1024 Stufen).

Nun kann man das mit höherwertigen MCs bewerkstelligen - allerdings kann 
man die - nach meiner Kenntnis - nicht mehr so richtig gut einbauen, 
weil sie in nicht-handlötbaren Gehäusen verkauft werden.

Also kam uns die Idee, zwei einfache 8-Bit-AVR über einen 40MHz 
Taktgenerator und einen Teiler durch 2 im Wechsel zu betreiben. Der eine 
AVR schaltet dann, wenn der andere gerade Pause hat. Beide verarbeiten 
das gleiche Programm und stellen an einem Port mit jeweils 5 Bit die 
benötigten Spannungswechsel zur Verfügung. Mischt man das über das 
Widerstandsnetzwerk des A/D-Wandlers, sollte ein schneller und sehr 
linearer 10-Bit-Sägezahn in der nötigen Frequenz möglich sein.

Und da das bisher nur Theorie ist: geht sowas überhaupt? Hat das schon 
mal jemand probiert? Oder ist das Unsinn?

Es grüßt herzlich
JL7

von Falk B. (falk)


Lesenswert?

@ Frank Brennecke (jeanluc7)

>wir basteln gerade an einer digitalen Ansteuerung einer Bildröhre.

Dazu gibt es diverse Projekt im Netz und auf Youtube.

http://www.youtube.com/watch?v=TDiPibnHgW4

>verarbeitet. Das kann man analog mit Kondensatoren machen, aber dann
>wird die Amplitude von der Frequenz abhängig.

Das hat man vor über 50 Jahren auch schon so gemacht, und es hat 
funktioniert.

>ganze per MC und Widerstandsnetzwerk zu realisieren, siehe hier
>Beitrag "Einfacher R2R-DAC".

Kann man machen.

>Soweit ist das auch alles kein Problem. Für SVGA braucht man aber in
>horizontaler Richtung 1024 Linien (Pixel), also eine Auflösung von 10
>Bit und das mit einer Aktualisierungsfrequenz von 40 MHz (38 kHz Takt
>und dazwischen 1024 Stufen).

Back erstmal kleiner Brötchen und bleib bei QVGA 320x240.

>Nun kann man das mit höherwertigen MCs bewerkstelligen - allerdings kann
>man die - nach meiner Kenntnis - nicht mehr so richtig gut einbauen,
>weil sie in nicht-handlötbaren Gehäusen verkauft werden.

Dafür gibt es Steckmodule.

>Also kam uns die Idee, zwei einfache 8-Bit-AVR über einen 40MHz
>Taktgenerator und einen Teiler durch 2 im Wechsel zu betreiben.

Nicht sinnvoll.

>Widerstandsnetzwerk des A/D-Wandlers, sollte ein schneller und sehr
>linearer 10-Bit-Sägezahn in der nötigen Frequenz möglich sein.

Ins Knie schießen ist lustiger ;-)

>Und da das bisher nur Theorie ist: geht sowas überhaupt? Hat das schon
>mal jemand probiert? Oder ist das Unsinn?

Oder.

von Frank B. (jeanluc7)


Lesenswert?

Salut,
danke - ich kenne das Scopeclock-Projekt. Dort wird allerdings kein 
Raster erzeugt, sondern Vektoren abgearbeitet - die machen folglich 
etwas anderes.

PAL und VGA müssen allerdings schon sein - analog mit 
MC-Synchronsteuerung haben wir das ganze schon einmal realisiert, aber 
man müsste dort noch eine Menge Arbeit in den linearen Verlauf der 
Generatoren stecken.

Dann also die Variante mit den Steckmodulen. Gibt's da etwas besonders 
empfehlenswertes? Müsste dann ja ein MC mit > 40 MHz Takt sein und wohl 
32-bittig?

Grüße, JL7

von Johannes E. (cpt_nemo)


Lesenswert?

Frank Brennecke schrieb:
> Nun kann man das mit höherwertigen MCs bewerkstelligen - allerdings kann
> man die - nach meiner Kenntnis - nicht mehr so richtig gut einbauen,
> weil sie in nicht-handlötbaren Gehäusen verkauft werden.

Bei einer Schaltung mit 40 MHz Pixeltakt geht sowieso nichts mehr mit 
Lochraster und Fädeln. Bei einer richtigen Platine ist es auch kein 
Problem, einen Controller im SMD-Gehäuse einzulöten; das geht auch von 
Hand.

Ein AVR ist für so eine Anwendung absolut nicht geeignet!

Auch mit zwei Stück parallel klappt es vermutlich nicht, weil du dann ja 
mit jedem Takt-Zyklus einen Pin am Ausgang verändern musst. Für so eine 
Aktion braucht man aber mehr als einen CPU-Zyklus, du kommst damit 
niemals auf 40 MHz.

Was vielleicht eher gehen könnte wäre ein Zähler, der mit 40 MHz 
getaktet wird und mit jedem Takt um 1 hochzählt; allerdings ist dann der 
maximalwert nicht mehr so einfach änderbar.

Das ist eigentlich eine typische Anwendung für einen FPGA.

von Michael G. (mjgraf)


Lesenswert?

Wenn's Dir nur um einen 10bit-Sägezahn geht: Was spricht gegen einen 
Zähler, der vom µC angesteuert wird? HC4040?

von Frank B. (jeanluc7)


Lesenswert?

Salut,

danke auch dir - das geht ja echt fix hier! Klasse!

OK, insbesondere die Frage, wieviel Takte die Änderung braucht, ist 
natürlich ein No-Go.

An den Zähler hatte ich auch schon gedacht - da hängt es dann auch noch 
am Sync. Also schaue ich mich erst mal weiter um und kümmere mich nicht 
mehr weiter um diese Dual-Idee.

Danke und Grüße

JL7

von Icke ®. (49636b65)


Lesenswert?

Frank Brennecke schrieb:
> Also kam uns die Idee, zwei einfache 8-Bit-AVR über einen 40MHz
> Taktgenerator und einen Teiler durch 2 im Wechsel zu betreiben.

Meines Wissens nach arbeiten die schnellsten im DIL/DIP-Gehäuse 
verfügbaren AVRs mit 20MHz. Einige XMEGAs im TQFP-Gehäuse schaffen 
32MHz. Da das Programm aber auch ein paar Taktzyklen in Anspruch nimmt, 
würde sich selbst mit 40MHz-Modellen die Aktualisierungsrate nicht 
erreichen lassen.

von Michael G. (mjgraf)


Lesenswert?

Oops, sorry, habe die 40Mhz nicht so recht wahrgenommen... Da müsste es, 
wenn man über den Binärzähler geht, schon ein synchroner (nicht: ripple) 
sein, mit einem externen Digital-Komparator für's Reset. Und dann kann 
man gleich ein FPGA oder CPLD nehmen.

von Frank B. (jeanluc7)


Lesenswert?

Michael Graf schrieb:
> Wenn's Dir nur um einen 10bit-Sägezahn geht: Was spricht gegen
> einen
> Zähler, der vom µC angesteuert wird? HC4040?

Geht der mit 40 MHz? Nun ja, man müsste dann dessen Takt anpassen 
können, damit man bei jeder Eingangsfrequenz eine möglichst optimale 
Ausnutzung der 10 Bit erreicht. Der Sync kommt ja aus dem Eingangssignal 
- PAL, VGA... Wobei man den Sync auch mit einem MC verarbeiten könnte; 
so funktioniert ja die halbanaloge Variante dessen, was wir hier 
vorhaben.

Mit ein wenig Logik liesse es sich aber machen - es sollen ja nur 3 
Frequenzen unterstützt werden und nicht alle ;-)

Grüße, JL7

Edit - geht mit 40Mhz offenbar nicht, danke für den Hinweis.

: Bearbeitet durch User
von Christian H. (Gast)


Lesenswert?

Hallo Frank,

erst einmal die Frage,

geht es darum, das Muster zu erzeugen, oder darum,
dass es mit AVRs und Handlötechnik bewerkstelligt werden muss?

Wenn es um das Muster geht, nimm einfach ein FPGA, es gibt genügend
kostenfreie Entwicklungsboards dazu und freie Entwicklungsumgebungen.

Wenn Du das Projekt konkreter beschreiben könntest, wären die Antworten
auch präziser. Du merkst ja, dass hier im Forum einige Profis helfen
wollen aber ohne Infos können sie das nicht.

LG Christian

von Rainer Z. (razi)


Lesenswert?

Hai!

Frank Brennecke schrieb:

> Um dort [auf der Bildröhre - RZ] ein Raster zu erzeugen,
> werden zwei Sägezahngeneratoren benötigt, einer für die
> horizontale und einer für die vertikale Ablenkung.

Ja.

> Unser Wunsch ist nun, das ganze möglichst in einem weiten
> Frequenzbereich zu ermöglichen, so dass die Bildröhre (eine
> kleine Oszilloskopröhre) sowohl PAL (15.625 kHz/ 50Hz) als
> auch VGA und SVGA (38,5 kHz/ 60 Hz) verarbeitet.

Okay.

> Das kann man analog mit Kondensatoren machen,

Jein.

> aber dann wird die Amplitude von der Frequenz abhängig.

Nö. Nicht, wenn man es richtig macht.

> Vor allem aber hat man immer ein Problem mit der Linearität.

Nein, auch nicht.

Du weisst, wie ein Dual-Slope-Umsetzer funktioniert?
Du weisst, wie ein klassischer Funktionsgenerator arbeitet?

Der Trick ist der Integrator - den man am einfachsten mit
einem entsprechend beschalteten Operationsverstärker aufbaut.
(Es gibt auch noch andere Lösungen.) Der Integrator enthält
Deinen Kondensator.

Der klassische Dreieck-Rechteck-Generator ist i.d.R.
spannungsgesteuert - hohe Spannung gibt hohe Frequenz,
niedrige Spannung gibt niedrige Frequenz. Ein Stellbereich
von 1:1000 ist kein Problem; einen NF-Generator 10Hz bis
10kHz in einem Bereich habe ich mir vor Jahren mal selbst
gebaut - aus Standard-Bauteilen wohlgemerkt, also TL084,
1N4148 und ein paar Widerstände.
Mit besseren OPV sollte man auch bis über 50kHz vordringen
können. Die Ablenkspannungen rein analog zu erzeugen ist
also kein Problem.

Soviel nur mal aus der guten alten Zeit, als der passive
RC-Tiefpass 1. Ordnung noch nicht der Gipfelpunkt der
Analogtechnik war... ;-)

Grusz,
Rainer

von Frank B. (jeanluc7)


Lesenswert?

Christian H. schrieb:
> Wenn Du das Projekt konkreter beschreiben könntest, wären die Antworten
> auch präziser. Du merkst ja, dass hier im Forum einige Profis helfen
> wollen aber ohne Infos können sie das nicht.


Rainer Ziegenbein schrieb:
> Der Trick ist der Integrator - den man am einfachsten mit
> einem entsprechend beschalteten Operationsverstärker aufbaut.
> (Es gibt auch noch andere Lösungen.) Der Integrator enthält
> Deinen Kondensator.

Salut,
ok, dann will ich das ganze einmal konkreter beschreiben. Grundsätzlich 
handelt es sich um ein Retro-Projekt aus der Zeit, als 
Elektronik-Experimentierkästen noch hoch im Kurs standen. Seinerzeit hat 
Philips eine Oszillographenröhre zusammen mit der notwendigen 
Grundschaltung in ein Acrylgehäuse gesteckt und das ganze als 
"Bildröhreneinheit" verkauft. Seinerzeit konnte man damit ein einfaches 
Oszilloskop und sogar einen Fernseher bauen.

Man kann diese Teile heute noch für eine Menge Geld bei ebay ersteigern. 
In unserem Projekt wollen wir eine solche Einheit mit aktuell 
verfügbaren Mitteln bauen, wobei wir diesmal bei der Auswahl der Röhren 
flexibler sein wollen als beim Original.

Und nachdem diese Idee inzwischen erste Formen annimmt, sollte das ganze 
noch als Option bereits einige sinnvolle Eingänge mitbringen, also nicht 
bloß x-y und die z-Austastung, sondern Composite Video und eben VGA. Es 
ist klar, dass man die kleinen Röhren nicht dauerhaft als Monitor nutzen 
wird wollen, aber man kann darauf mit der richtigen Beschaltung durchaus 
einige Zeilen (größeren) Text ausgeben. Wir haben so etwas für die 
Bildröhreneinheiten aus den 70ern schon einmal gemacht, siehe hier: 
http://www.brennecke.org/?page_id=1842 - da wird die Ablenkung analog 
bewerkstelligt, während zwei Mikrocontroller die Generierung der 
Sync-Impulse übernehmen und auch eine Bildlagekorrektur ermöglichen.

Seinerzeit kamen statt OpAmps Transistoren zum Einsatz, die als 
Konstantstromquellen die Kondensatoren laden, aus denen letztlich die 
beiden Sägezähne stammen. Das funktionierte leidlich, aber eben nicht so 
linear, wie gewünscht (wobei es horizontal bei hohen Frequenzen besser 
aussieht als bei der vertikalen mit 50/60 Hz).

Ich hoffe, das erklärt das Vorhaben besser. Wir sind also nicht wirklich 
fixiert auf die digitale Generierung der Sägezähne - nur möglichst 
linear sollte das ganze sein. Und ich sehe aus Euren Antworten, dass der 
analoge Weg eben doch nicht der schlechteste ist und möglicherweise 
einfach nur verbessert werden muss. Vielleicht ist auch ein Mix sinnvoll 
- horizontal bleibt das ganze analog, aber vertikal stellt man um, und 
das sollte bei 60 Hz und ca 800 Zeilen auch ein kleiner AVR-MC gut 
schaffen.

Grüße, Frank

von Markus H. (dasrotemopped)


Lesenswert?

die VGA Steuersignale schnell genug erzeugen geht mit einem kleinen CPLD 
wunderbar.

http://www.dasrotemopped.de/bilder/ATmegaExtender_VGA.jpg

Kann man natürlich auch diskret mit Logikbausteinen erzeugen.
Gibts Millionen von Bastelprojekten im Netz, z.B.
http://www.pyroelectro.com/projects/masochists_video_card/

ein kleiner uC wie Atmega kann dann die Bildinhalte in reduzierter 
Auflösung beisteuern.

Um die Röhrensteuerung mit DA-Wandlern und OpAmps aufzubauen braucht es 
auch nicht viel, nur viele IO-Leitungen am CPLD für einen schnellen und 
simplen R2R Wandler braucht man.

Gruß,

dasrotemopped.

von Rainer Z. (razi)


Lesenswert?

Hai!

Frank Brennecke schrieb:

> Wir haben so etwas für die Bildröhreneinheiten aus
> den 70ern schon einmal gemacht, siehe hier:
> http://www.brennecke.org/?page_id=1842 - da wird
> die Ablenkung analog bewerkstelligt, während zwei
> Mikrocontroller die Generierung der Sync-Impulse
> übernehmen und auch eine Bildlagekorrektur ermöglichen.

Ahh. Sehr coole Sache.

Ich nehme meinen Seitenhieb über den RC-Tiefpass mit dem
Ausdruck tiefster Befriedigung zurück... ;-)

> Seinerzeit kamen statt OpAmps Transistoren zum Einsatz,
> die als Konstantstromquellen die Kondensatoren laden,
> aus denen letztlich die beiden Sägezähne stammen.

Ja; habe den Schaltplan gesehen.
Auf den ersten Blick sieht die Schaltung auch ganz
vernünftig aus.

> Das funktionierte leidlich, aber eben nicht so linear,
> wie gewünscht (wobei es horizontal bei hohen Frequenzen
> besser aussieht als bei der vertikalen mit 50/60 Hz).

Hmmm... die Schaltung hat ein paar Fußangeln, bei denen
ich noch nicht weiß, ob ich nur den Trick nicht verstanden
habe oder die Lösung wirklich nicht optimal ist...

Mal sehen.

> Und ich sehe aus Euren Antworten, dass der analoge Weg eben
> doch nicht der schlechteste ist und möglicherweise einfach
> nur verbessert werden muss.

Davon gehe ich aus. Der Bipolartransistor wird als Stromquelle
normalerweise unterschätzt.

Grusz,
Rainer

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

es geht durchaus digital: da die Pixel von links nach rechts einfach 
hochgezählt werden, genügt ein Binärzähler, kein Grund einen Prozessor 
zu missbrauchen. Lediglich die Taktfrequenz muss variabel sein, aber das 
Problem stellt sich bei einem Prozessor in verschärfter Form.

Bei Verwendung von 2 Prozessoren abwechselnd kommt sowieso nicht 
8+8=16bit heraus, sondern die Auflösung erhöht sich lediglich um ein 
Bit.

Gruss Reinhard

von Frank B. (jeanluc7)


Angehängte Dateien:

Lesenswert?

Reinhard Kern schrieb:
> Hallo,

> Bei Verwendung von 2 Prozessoren abwechselnd kommt sowieso nicht
> 8+8=16bit heraus, sondern die Auflösung erhöht sich lediglich um ein
> Bit.
>
> Gruss Reinhard

Salut Reinhard und Rainer,

dem Argument kann ich leider nur zustimmen. Zwei 256er Zähle, um eins 
versetzt, können keinen 16-Bit-Zähler ersetzen, man gewinnt nur ein Bit. 
Allein das ist schon ein Totschlagsargument für die Idee - da hätte ich 
aber auch selbst und früher drauf kommen müssen >:(

Ich neige inzwischen dazu, die Horizontalablenkung analog zu lassen und 
vielleicht nur bei der vertikalen Ablenkung - wo die Nichtlinearität 
auch stärker in Erscheinung tritt - mit einer Widerstandskaskade zu 
machen.

Rainer Ziegenbein schrieb:
> Hmmm... die Schaltung hat ein paar Fußangeln, bei denen
> ich noch nicht weiß, ob ich nur den Trick nicht verstanden
> habe oder die Lösung wirklich nicht optimal ist...

Ich habe das Schaltbild einmal direkt angehängt. Horizontal- und 
Vertikalkreis der Schaltung sind weitgehend baugleich, aber gespiegelt 
(NPN- bzw. PNP-Transistoren), weil der horizontale Sägezahn ein 
fallender und der vertikale ein steigender ist. Im Horizontalkreis kann 
außerdem der resultierende Gesamtwert des Ladekondensators über einen 
Transistor variiert werden, damit PAL (15,625 KHz) und VGA/SVGA (31,5 
kHz, 35 kHz) in etwa gleiche Bildhöhen haben.

Die beiden OpAmps am jeweiligen Ausgang sind als Inverter geschaltet und 
sollen die Einstellung der Bildbreite und -höhe vereinfachen. Am Ausgang 
stehen dann zwei Sägezähne mit horizontal steigender und vertikal 
fallender Flanke. Die Generatoren benötigen ein Rücklauf-Synchronsignal 
- ohne dieses laufen sie nicht an. Das Sync-Signal stammt aus zwei MCs 
(ATMega88), die es aus den Original-Syncsignalen gewinnen und außerdem 
noch ein paar zusätzliche synchrone höherfrequente Signale zur Verfügung 
stellen.

Wenn da noch Potenzial für Verbesserungen drin ist, umso besser. Wie 
bereits gesagt, mein Problem ist eher der Vertikalgenerator.

Grüße, Frank

von Wurzelmann (Gast)


Lesenswert?

Hallo,

bei Ebay wird zur Zeit ein Projekt versteigert, welches die Bildröhre 
D5-100 Telefunken mit Videospeichen (Bildspeicher) beinhaltet.

Auf meiner Nachfrage hin wurde mir mitgeteilt, dass Bilder abgespeichert 
und wieder abgerufen werden können.

Auch soll dort ein Testbildgenerator integiert sein, dass Testbild sieht 
vielversprechend aus.

Vielleicht kann Dir dieses Projekt weiterhelfen.


Der Link lautet: 
www.ebay.de/itm/261357247666?ssPageName=STRK:MESELX:IT&_trksid=p3984.m15 
58.l2649


Diese stellt keine Reklame oder Werbung dar, ich wollte hiermit nur 
mitteilen, was ich so gefunden habe.

von Frank B. (jeanluc7)


Angehängte Dateien:

Lesenswert?

Salut,

es gehört ja zum guten Ton, einen Thread abzuschließen, wenn man ein 
Projekt beendet hat. Hier ist das nun der Fall.

Wir haben das eigentliche Problem, den Betrieb zweier 
Sägezahngeneratoren für die Ablenkunk eines Elektronenstrahls und die 
Darstellung eines Videobilds, nun folgendermaßen gelöst:

Der Mikrocontroller nimmt horizontale und vertikale Sync-Signale aus 
einem LM1881 entgegen. Beim horizontalen Sync auf INT0 (15.625 kHz) wird 
ein Sync-impuls an einem Ausgang erzeugt, außerdem wird ein Zeilenzähler 
hochgezählt und dessen Wert per SPI einem D/A-Wandler vom Typ MCP4921 
zugestellt. Dessen Ausgangssignal ist dann bereits sägezahnförmig mit 
625 Stufen, die man allerdings nicht sieht, weil sie außerhalb des 
Bildes liegen. Das vertikale Sync-Signal an INT1 setzt den Zeilenzähler 
auf null zurück.

Der horizontale Sägezahngenerator wird durch Transistoren und einen 
Kondensator auf konventionelle Weise gebildet. Wenn man ihn hinreichend 
groß und die Amplitude gering genug wählt, ist das Signal hinreichend 
linear.

Beide Signale durchlaufen noch zwei OpAmp-Stufen (NE5532) mit dualer 
Stromversorgung, um das Signal ein wenig zu verstärken und belastbar zu 
machen. Außerdem kann der Nullpunkt verschoben werden, damit das Bild 
auch mittig auf dem Bildschirm sitzt.

Außerdem an Bord:
- Ein Ablaufzähler, der einspringt, wenn die externe Quelle nicht 
angeschlossen ist und der LM1881 kein Signal liefert. Er erzeugt dann 
ein Raster, dessen Frequenz leicht unterhalb der Standard-PAL-Frequenz 
liegt. Wenn ein Sync vorhanden ist, wird der Timer des Ablaufzählers 
rechtzeitig zurückgesetzt.
- Ein Austastsignal, das die Bildbereiche des Rasters dunkel tastet, die 
keine Information enthalten. Das sind die Rückläufe der Sägezähne sowie 
weitere schmale Zonen am Rande des Bildschirms.

Weitere Infos stelle ich bei Interesse gerne zur  Verfügung - eine 
Online-Doku gibts hier: http://www.brennecke.org/?page_id=2795.

Viele Grüße, JL7

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
Noch kein Account? Hier anmelden.