Forum: Mikrocontroller und Digitale Elektronik Mehrere Signale über eine Leitung


von Pascal (Gast)


Lesenswert?

Hallo,

ich möchte für eine Anlage eine abgesetzte Bedienstation aufbauen. Dazu 
habe ich allerdings nur eine 7 adrige Leitung zur Verfügung, wobei da 
schon drei Adern für +24V, GND und +24V geschaltet belegt sind, d.h. 
(ohne PE) bleiben mir noch drei freie Adern die ich verwenden darf.
Jetzt möchte ich gerne mehrere Taster und einige Leuchtmelder ansteuern.

Dazu schwebt mir vor, dass ich irgendwie aus der Steuerung die Signale 
auf die maximal drei Leitungen "verpacken" kann und dann am anderen Ende 
wieder entpacke, und dann entsprechend auf die Taster und Leuchtmelder 
führe.

Habe da auch schon rausgefunden, dass das Zauberwort scheinbar 
"Multiplexing" ist, jedoch kann ich im Forum und mit Google bisher 
nichts brauchbares finden. Überall ist gleich die Rede von 
Mikrokontrollern. Gibt es denn da nicht einfach zwei IC's die das machen 
können? Ich möchte keinen so großen Aufwand deswegen betreiben müssen...

Grüße Pascal

von Gast (Gast)


Lesenswert?

Für 8 Taster können die De-/Multiplexbausteine U6050B/U6052B verwendet 
werden.

von Pascal (Gast)


Lesenswert?

Danke für die Info, ich habe mal das Datenblatt mir angesehen, leider 
geht da nirgendwo raus hervor, wieviel Meter lang die Datenleitung sein 
darf? Meine Strecke wären ca. 60 Meter.
Wo gibt es diese IC? Bei Reichelt, Conrad und Bürklin finde ich die 
nicht?

Grüße

von Manuel (Gast)


Lesenswert?

Mit Multiplexen wird das wahrscheinlich nix. Ich würde eine serielle 
Verbindung verwenden (RS485) und mit dann ein hübsches Protokoll 
ausdenken. Brauchst dann natürlich auf beiden Seiten einen Controller.

von Pascal (Gast)


Lesenswert?

Tja, und wenn man mit Mikrokontrollern noch nie was gemacht hat, dann 
ist das eine Aufgabe die man nicht lösen kann. Das ist mein Problem. 
Eine LED an einem Pin zum Leuchten bringen traue ich mir ja noch zu, 
aber ein Protokoll ausdenken!? Hilfe... Ich bin kein uC-Freak ;-)

Oder hat jemand ein Protokoll für RS485, solche Maxim-IC's für RS485 mit 
sogar Optokopplern drin habe ich einige da.... Der elektrische Aufbau 
und auch die Platine mit z.B. einem ATmega32 sollen nicht das Problem 
sein, wohl aber das Programm (also die Software). Da müsste ich was 
fertiges bekommen...

Pascal

von Matthias L. (Gast)


Lesenswert?

Wenns maximal 8Ein/Ausgänge sind, dann machs nach dem Prinzip der 
abgesetzten E/As:

Du schickst ein Byte von A nach B. Das Byte wird ausgegeben und sind 
deine Ausgänge.
Weiterhin schickst du ein Byte von B nach A zurück. Das sind deine 
Eingänge. Fertig.

DAs machst du zB (je nach Änderungsrate der E/As) zehn mal je Sekunde...

Voala.. Protokoll fertig..

Skoll

von Michael H* (Gast)


Lesenswert?

Pascal wrote:
> Gibt es denn da nicht einfach zwei IC's die das machen
> können?
schieberegister setzen dir serielle daten in parallele um und umgekehrt. 
wenn du die mit einem genügend schnellen takt (mindestens 
wortbreite/bedienfrequenz * 2) betreibst, geht das über deine leitungen.

von Pascal (Gast)


Lesenswert?

@holli:
>> schon drei Adern für +24V, GND und +24V geschaltet belegt sind, d.h.
>sinnlos. der strom muss nicht nur hin, sondern auch zurück.

was ist da sinnlos? +24V hin, Verbraucher und nach GND zurück. Da kann 
dann abgesetzt z.B. ein 7805 dran, dann hab ich für die Logik und uC 
meine 5V. GND bleibt GND, ist doch sowieso geerdet am Netzteil. Und die 
geschalteten +24V mit denen schalte ich die Steuerung (Hauptschütz) an.

>> Gibt es denn da nicht einfach zwei IC's die das machen
>> können?
>schieberegister setzen dir serielle daten in parallele um und umgekehrt.
>wenn du die mit einem genügend schnellen takt (mindestens
>wortbreite/bedienfrequenz * 2) betreibst, geht das über deine leitungen.

Hört sich ja alles super an - aber siehst das das riesige Fragezeichen 
über meinem Kopf. Ich weiß zwar was Schieberegister sind, aber wie ich 
sowas auf einen Mikrocontroller bringe... ähm, ja genau, ne....


@lippy:
Gibt es denn irgendwo einen Codeschnipsel für sowas? Also sollte ich 
irgendwie dann nur in mein AVR Studio einfügen und mit WinAVR compilen 
müssen... Die Ports kann ich noch anpassen, aber der Rest ist wirklich 
ein Problem. Und ich muss ehrlich gestehen, dass ich lediglich für das 
nicht die Mikrokontrollerprogrammierung bis ins Detail (zumindest 
momentan nicht, da ich beruflich sehr eingespannt bin) derzeit lernen 
möchte. Später gerne, jetzt nicht....


Grüße Pascal

von Michael H* (Gast)


Angehängte Dateien:

Lesenswert?

Pascal wrote:
> @holli:
>>> schon drei Adern für +24V, GND und +24V geschaltet belegt sind, d.h.
                                            ^^^^^^^^^^
>>sinnlos. der strom muss nicht nur hin, sondern auch zurück.
das "geschaltet" hab ich überlesen, sorry.

> Hört sich ja alles super an - aber siehst das das riesige Fragezeichen
> über meinem Kopf. Ich weiß zwar was Schieberegister sind, aber wie ich
> sowas auf einen Mikrocontroller bringe... ähm, ja genau, ne....
die gibts diskret.

von Pascal (Gast)


Lesenswert?

Diskret... man, das hört sich mal toll an, ich mag es wenn man es 
anfassen kann :-)

Jetzt muss ich aber mal meine grauen Zellen anstrengen, denn ich blicke 
noch nicht so ganz wie ich nun mit den drei Adern dich ich habe nun 
meine Ein-/Ausgänge verpacken soll und wieder auspacke...

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

@ Pascal (Gast)

>Mikrokontrollern. Gibt es denn da nicht einfach zwei IC's die das machen
>können? Ich möchte keinen so großen Aufwand deswegen betreiben müssen...

Da wirst du wohl nicht wirklich drum herum kommen.

Siehe Anhang. Das ist die Minimalschaltung. Bau sie auf, die 
Programmierung ist schnell gemacht, mach ich für dich wenn die Hardware 
steht. Alle freien Pins können beliebig als Ein- oder Ausgang genutzt 
werden.

MFg
Falk

von Pascal (Gast)


Lesenswert?

@falk:

Und das Programm senden dann über PD0/PD1 (RXD/TXD)? Das ist dann eine 
Art RS485 Protokoll oder wie? Und das würde auch über zwei Adern mit 
Querschnitt 0,75mm² und 60 Meter länge laufen. Achso, ich muss erwähnen, 
dass da auch ein wenig Hochfrequenz in der Luft ist und da durchaus noch 
ein paar Abblockkondensatoren dran müssen. Also wenn die Taster und die 
Leuchtmelder ca. alle 250ms aktualisiert bzw. abgefragt werden, dann 
reicht das völlig...

Wäre das denn dann ein Programmschnipsel in C, so dass ich dann (wenn 
ich mal alt und grau werden solle) damit weitermachen könnte? Aber bis 
dahin gibt es sicher eh die Eierlegende Wollmilchsau...

Danke und Grüße Pascal

von Falk B. (falk)


Lesenswert?

@  Pascal (Gast)

>Und das Programm senden dann über PD0/PD1 (RXD/TXD)?

Ja.

> Das ist dann eine
>Art RS485 Protokoll oder wie?

RS232, kanpp danaben.

> Und das würde auch über zwei Adern mit
>Querschnitt 0,75mm² und 60 Meter länge laufen.

Sicher, muss ja nicht rasend schnell sein.

>Leuchtmelder ca. alle 250ms aktualisiert bzw. abgefragt werden, dann
>reicht das völlig...

Sollte gerade noch machbar sein, wenn zwischendurch der AVR nicht 
einschläft . . . ;-)

Wieviel Taster und Leuchtmelder sollen es denn sein?

>Wäre das denn dann ein Programmschnipsel in C, so dass ich dann (wenn
>ich mal alt und grau werden solle) damit weitermachen könnte?

Kriegst du frei Haus geliefert.

> Aber bis dahin gibt es sicher eh die Eierlegende Wollmilchsau...

Das befürchte ich auch ;-)

MFG
Falk

von Matthias L. (Gast)


Lesenswert?

YO. Falk war eher. Sonst hätte ich dir was zusammenprogrammiert ;-)

von Pascal (Gast)


Lesenswert?

Also das sollen gerade mal 4 oder 5 Taster und 5 Leuchtmelder maximal 
sein.

Kann ich denn auch einen ATmega32 auf jeder Seite nehmen? Da hab ich 
nämlich welche da. Für die Schnittstelle: Ich habe wie gesagt neben den 
MAX232 (hatte ich ganz übersehen) auch diverse 485er von Maxim und 
Linear Technologies hier. Damit könnte man evt. noch besser was machen? 
Aber ist dann sicher wieder zum programmieren viel zu kompliziert?

Werde mal am Wochenende die beiden ATmega32 (wenns recht ist) auf eine 
Streifenrasterplatine bringen, muss nur mal sehen ob meine Kiste noch 
zwei MAX232 hergibt...
Dann melde ich mich auch wieder zurück... Oder auch gern per Mail: 
pascal(dot)grabe(at)gmx(dot)net.

Grüße

von Pascal (Gast)


Lesenswert?

>YO. Falk war eher. Sonst hätte ich dir was zusammenprogrammiert ;-)

Soviel Angebote :-) Mensch, echt super Service hier :-)

von Pascal (Gast)


Lesenswert?

Achso... ich hatte mir schonmal vor langer Zeit so ein ich glaube STK200 
Board von Atmel irgendwo günstig besorgt, damit habe ich auch schonmal 
mit AVRSTudio und WinAVR eine LED ein und ausgeschaltet... Also damit 
könnte ich dann die ATMegas auch programmieren.... Würde dann einfach 
einen Quarz auf die Platine, den uC, 5 V und GND dran und den MAX232, 
dann noch eine Schraubklemme für die RS232 und die Taster an die Ports. 
Fertig...

von Matthias L. (Gast)


Lesenswert?

>diverse 485er von Maxim und Linear Technologies hier.

Die schickst du zumir. Als Beratungshonorar ;-)

von C. H. (_ch_)


Lesenswert?

Für "versaute" Umgebung und 60m würde ich zwar RS485 einsetzen, aber 
RS232 sollte mit genügend kleiner Baudrate auch funktionieren.

Ein kleines "Starterkit" hätte crazy horse schon dazu :)
Beitrag "Verkaufe Mega8-Platinen"

Gruß
Christian

von Pascal (Gast)


Lesenswert?

@lippy:

was brauchst du denn da? hab da eine Quelle und kann Dir da evt. 
entsprechendes in kleiner Stückzahl gegen Porto zukommen lassen...

von Falk B. (falk)


Lesenswert?

@ Pascal (Gast)

>Also das sollen gerade mal 4 oder 5 Taster und 5 Leuchtmelder maximal
>sein.

Kein Problem.

>Kann ich denn auch einen ATmega32 auf jeder Seite nehmen?

Sicher.

>MAX232 (hatte ich ganz übersehen) auch diverse 485er von Maxim und
>Linear Technologies hier. Damit könnte man evt. noch besser was machen?

Ja.

>Aber ist dann sicher wieder zum programmieren viel zu kompliziert?

Nö. Einfach RX und TX anklemmen und DE sowei RE zuammen an ein drittes 
IO-Pin.

>Werde mal am Wochenende die beiden ATmega32 (wenns recht ist) auf eine
>Streifenrasterplatine bringen, muss nur mal sehen ob meine Kiste noch
>zwei MAX232 hergibt...

MAX485 geht auch, man muss dan jedoch Halbduplex fahren, weil nur drei 
Leitungen da sind. Dadurch wird das Programm ein winziges Stück 
komplizierter, und man braucht zwei verschiedene in den beiden AVRs. Mit 
Vollduplex und RS232 braucht man nur ein und das selbe Programm in 
beiden AVRs.

>einen Quarz auf die Platine, den uC, 5 V und GND dran und den MAX232,
>dann noch eine Schraubklemme für die RS232 und die Taster an die Ports.
>Fertig...

Genau. Die Quarzfrequenz ist fast egal, da sowieso nur geringe Baudraten 
benötigt werden (Wird vielleicht ein neuer Underclocking Rekord, AVR mit 
300 Baud ;-))

MFg
Falk

von Matthias L. (Gast)


Lesenswert?

>300 Baud ;-))
Doch so schnell...

>was brauchst du denn da? hab da eine Quelle
Ich werds mir mal merken. Werd demnächst wohl was mit RS485/422 bauen. 
Befinde mich aber noch im Planungsstadium...

von PeteL (Gast)


Lesenswert?

es geht auch analog:

die Taster schalten auf der einen Seite  Spannungsteiler , braucht eine 
Leitung + GND
auf der anderen Seite ein paar Fensterkomperatoren, die Leds halt 
umgekehrt,
braucht noch eine Leitung + GND

von Matthias L. (Gast)


Lesenswert?

>es geht auch analog:
bei 60m und den Störungen...

von Michael (Gast)


Lesenswert?

Finde auch, dass die Lösung mit den Microcontrollern am besten ist. 
Allerdings ist die für Leute, die davon keine Ahnung haben, nicht ganz 
so leicht zu realisieren.

Frage: Wäre es evtl. auch möglich das Ganze analog zu regeln - zumindest 
im Bezug auf die Taster?

Stelle mir das so vor: Jedem Taster wird ein anderer Widerstand 
vorgeschaltet. Am anderen Ende der Datenleitung befinden sich mehrere 
Komparatoren, die parallel zu einem Referenzwiderstand geschaltet sind. 
Je nach dem, welcher Taster gedrückt wird, wird dort eine andere 
Spannung anliegen. Somit lässt sich an den Ergebnissen, die die 
Komparatoren liefern, erkennen, welcher Taster gedrückt wurde. Was ich 
mir jetzt recht kompliziert vorstelle ist, aus den Ergebnissen der 
Komparatoren wieder eine vernünftige Aktion zu machen...

Ich muss dazu sagen, dass ich mich in der Analogtechnik nicht wirklich 
gut auskenne, also ist es durchaus möglich, dass ich hier gerade den 
übelsten Schwachsinn gepostet habe. Das bitte dann zu entschuldigen.

von Helmut L. (helmi1)


Angehängte Dateien:

Lesenswert?

Man kann auch anstatt einer RS232  die gute alte TTY 20 mA Schnittstelle 
nehmen. Das sollte die Störempfindlichkeit runter setzen. Neben GND und 
+ 24V braucht es dafür 2 weitere Leitungen.


Gruss Helmi

von Pascal (Gast)


Lesenswert?

>MAX485 geht auch, man muss dan jedoch Halbduplex fahren, weil nur drei
>Leitungen da sind. Dadurch wird das Programm ein winziges Stück
>komplizierter, und man braucht zwei verschiedene in den beiden AVRs. Mit
>Vollduplex und RS232 braucht man nur ein und das selbe Programm in
>beiden AVRs.


Also, sollte es möglich sein auch in das Protokoll ein Signal von einem 
Inkrementaldrehgeber reinzubekommen (und auf der anderen Seite wieder 
herraus), dann hätte ich 2 Doppeladerpaare frei, dann könnten die beiden 
MAX485 Vollduplex fahren... Der Drehgeber macht 500 Impulse pro 
Umdrehung und dreht jedoch nur um +/- 70 Grad. Und das ganze auch in 
knapp unter einer Minute, so dass hier auch nicht soviel Daten in kurzer 
Zeit anfallen würden, oder?

Grüße Pascal

von Helmut L. (helmi1)


Lesenswert?

Mit MAX 485 kannst du nur Halbduplex fahren. Fuer Vollduplex brauchst du 
MAX488,489,490,491.

Gruss Helmi

von Falk B. (falk)


Lesenswert?

@Pascal (Gast)

>Also, sollte es möglich sein auch in das Protokoll ein Signal von einem
>Inkrementaldrehgeber reinzubekommen (und auf der anderen Seite wieder
>herraus), dann hätte ich 2 Doppeladerpaare frei, dann könnten die beiden
>MAX485 Vollduplex fahren... Der Drehgeber macht 500 Impulse pro
>Umdrehung und dreht jedoch nur um +/- 70 Grad. Und das ganze auch in
>knapp unter einer Minute, so dass hier auch nicht soviel Daten in kurzer
>Zeit anfallen würden, oder?

Sicher, kein Thema. Pi mal Dauen

500 Pulse/U * 140/360 Grad  ~ 200 Pulse/Minute ~ 3,5 Pulse/s.

Wenn man mit 10 Hz abtastet sollte alles im Lot sein. 100Hz ist auch 
kein Problem, der AVR langweilt sich eh zu Tode ;-)

MfG
Falk

von Matthias L. (Gast)


Lesenswert?

>3,5 Pulse/s.
>Wenn man mit 10 Hz abtastet sollte alles im Lot sein.

Wenn das Poti eh keine volle Umdrehung kann, warum schickt ihr dann 
nicht (zB mit 10Hz) Absolutwerte? Also zB 0..255 für 0..270Grad.

von Falk B. (falk)


Lesenswert?

@Matthias Lipinsky (lippy)

>Wenn das Poti eh keine volle Umdrehung kann, warum schickt ihr dann
>nicht (zB mit 10Hz) Absolutwerte? Also zB 0..255 für 0..270Grad.

Sicher machbar und sinnvoll, allerdings muss dann die Schaltung zur 
Auswertung angepasst werden -> Aufwand.

MFg
Falk

von Pascal (Gast)


Lesenswert?

Anmerkung:

>>Wenn das Poti eh keine volle Umdrehung kann, warum schickt ihr dann
>>nicht (zB mit 10Hz) Absolutwerte? Also zB 0..255 für 0..270Grad.

>Sicher machbar und sinnvoll, allerdings muss dann die Schaltung zur
>Auswertung angepasst werden -> Aufwand.

Es handelt sich um kein Poti sondern um einen Drehwinkelgeber. Der gibt 
auf zwei Ausgängen (A, B) versetzt Impulse aus, man kann damit dann 
Drehrichtung und Drehwinkel erfassen. Zusätzlich gibt es dann noch einen 
Ausgang "0", der gibt pro Umdrehung einen Impuls aus, damit kann man 
dann einen Referenzpunkt festlegen...

@falk:

Wie bekommt man es denn hin, dass wirklich die Drehrichtung und die 
Impulse alle richtig 1:1 durchkommen (und der 0-Punkt von Ausgang 0)? 
Bin am überlegen ob es so sinnig ist und funktioniert, denn wenn ich 
hier Impulse "verliere", dann habe ich ein Positionierungsproblem...

@helmi1:

Ja, ich weiß. Ich weiß nur nicht genau welche ICs ich da in meinem 
Sortiment habe, da ich die Woche über nicht zu Hause bin. Es sind 
aufjedenfall RS485 Treiber für Fullduplex und sogar mit galvanischer 
Trennung, hab da was von Maxim und auch von Linear Technologies... Mal 
sehen was ich da an die ATmegas dranlöte...



Pascal

von Helmut L. (helmi1)


Lesenswert?

@Pascal

zur Not must du halt auf jeder Seite 2 MAX485 nehmen. Den einen nur 
fuers Senden und den anderen nur fuer Empfangen

Gruss Helmi

von Pascal (Gast)


Lesenswert?

@helmi1:

>zur Not must du halt auf jeder Seite 2 MAX485 nehmen. Den einen nur
>fuers Senden und den anderen nur fuer Empfangen

Hab jetzt mal ein meine Excel-Bauteilliste gesehen:
Ich habe einige Maxim MAX1490AE da, die sollten soweit ich das sehe 
Fullduplex machen...

von Helmut L. (helmi1)


Lesenswert?

MAX1490 schoenes Teil. Sollte funktionieren.


Gruss Helmi

von Matthias L. (Gast)


Lesenswert?

>sondern um einen Drehwinkelgeber.

Das geht trotzdem. Muss die Auswertung nur vor Ort gemacht werden. (Es 
ist sinnlose Takte zu verschicken, wenn es nur auf die Lage ankommt. 
Drehgeber mit Schnittstellen,zB SSI, verschicken ja auch keine Takte, 
sondern Lageinformationen.)

von Falk B. (falk)


Lesenswert?

@  Pascal (Gast)

>Es handelt sich um kein Poti sondern um einen Drehwinkelgeber.

Schon klar, ich weiss was ein Drehgeber ist ;-)

>Wie bekommt man es denn hin, dass wirklich die Drehrichtung und die
>Impulse alle richtig 1:1 durchkommen (und der 0-Punkt von Ausgang 0)?

Indem man sicherstellt, dass schnell genug abgetastet wird. Wenn die 
Drehzahl nicht nenneswert schneller werden kann als angegeben, dann 
passt das. Wie gesagt, 10 Hz ist Zeiiiiiiiiitluuuuuuupeeeeee. Daraus 
100Hz zu machen dauert 1 min. und kostet den AVR ein müdes Lächeln.

@ Matthias Lipinsky (lippy)

>Das geht trotzdem. Muss die Auswertung nur vor Ort gemacht werden.

Muss nicht, aber kann. Und wenn man die Lösung nur als dummen MUX machen 
will, geht es nicht anders.

Mfg
Falk

von Pascal (Gast)


Lesenswert?

@Falk:

Hey ho,

bin endlich dazu gekommen die beiden uC mit den beiden 
Schnittstellenbausteinen auf eine Platine zu bringen - erstmal für 
Testzwecke.

Hab nun an der Platine im Teil A einen Atmega32 mit einem MAX488CPA+ an 
RxD (PD0, Pin 14) sowie TxD (PD1, Pin 15) angeschlossen, dazu noch einen 
Taster an PA0 (Pin 40) und eine LED mit Vorwiderstand 330 Ohm an PA1 
(Pin 39). An Vcc (Pin 10) liegen saubere 5 V von einem 5 V Netzteil, mit 
einem Kerko nach Masse abgeblockt. An Pin 11 und Pin 41 hab ich GND 
dran. Ebenso wird der MAX488 mit 5 V versorgt.

Im Teil B der Platine das selbe Szenario mit einem weiteren Atmega32 und 
MAX488CPA+, lediglich LED und Taster an Pin 39 und 40 vertauscht. 
Dazwischen einfach vier Leitungen um die Anschlüsse des MAX488 zu 
verbinden.

Jetzt müsste ich eine Software haben ;-) Würd ich dann in AVR Studio 
wenns geht mit WinAVR compilieren und mit dem STK500 auf die beiden 
Atmega32 aufspielen und dann auf der Platine in den Sockel packen....

Würde mich freuen wenn ich da was zum Testen wie abgeredet bekommen 
könnte....

Grüße Pascal

von Falk B. (falk)


Lesenswert?

@ Pascal (Gast)

>Hab nun an der Platine im Teil A einen Atmega32 mit einem MAX488CPA+ an
>RxD (PD0, Pin 14) sowie TxD (PD1, Pin 15) angeschlossen,

OK.

> dazu noch einen
>Taster an PA0 (Pin 40) und eine LED mit Vorwiderstand 330 Ohm an PA1
>(Pin 39).

> An Vcc (Pin 10) liegen saubere 5 V von einem 5 V Netzteil, mit

Auch AVcc muss 5V bekommen und auch AGND müssen angeschlossen sein.

>einem Kerko nach Masse abgeblockt. An Pin 11 und Pin 41 hab ich GND

100nF nehme ich an. Und 10uF Elko parallel ist auch nicht falsch.

>dran. Ebenso wird der MAX488 mit 5 V versorgt.

Der darf ruhig auch 100nF bekommen.

>Im Teil B der Platine das selbe Szenario mit einem weiteren Atmega32 und
>MAX488CPA+, lediglich LED und Taster an Pin 39 und 40 vertauscht.

Das ist schlecht. Denn dann braucht man ja verschiedene Software, was ja 
eigentlich unnötig ist. Also. EIN Port wird immer Ausgang, z.B. PortA. 
eine anderer immer Eingang, z.B. PortB.

>Dazwischen einfach vier Leitungen um die Anschlüsse des MAX488 zu
>verbinden.

Masse fehlt noch.

>Würde mich freuen wenn ich da was zum Testen wie abgeredet bekommen
>könnte....

Dazu brauche ich noch von dir die Angabe über die verwendete 
Quarzfrequenz. Den UART ohen Quarz ist nicht wirklich stabil.

MFG
Falk

von Peter D. (peda)


Lesenswert?

Falk Brunner wrote:

> Dazu brauche ich noch von dir die Angabe über die verwendete
> Quarzfrequenz. Den UART ohen Quarz ist nicht wirklich stabil.

Ich würds bei den internen 1MHz belassen, sollte dicke reichen.

Da das Datenaufkommen sehr gering ist, kann man ja nur 2Bits pro 
UART-Byte übertragen, dann reicht die Genauigkeit völlig.


Peter

von Falk B. (falk)


Lesenswert?

@ Peter Dannegger (peda)

>Ich würds bei den internen 1MHz belassen, sollte dicke reichen.

So ein Quarz kostet praktisch nix und tut keinem weh. Auf solche 
Spielchen hab ich keine Lust.

MFG
Falk

von Pascal (Gast)


Lesenswert?

>> An Vcc (Pin 10) liegen saubere 5 V von einem 5 V Netzteil, mit
>
>Auch AVcc muss 5V bekommen und auch AGND müssen angeschlossen sein.
>

Alles klar. Ergänze ich noch die Tage und ziehe da zwei Brücken dran.

>>einem Kerko nach Masse abgeblockt. An Pin 11 und Pin 41 hab ich GND
>
>100nF nehme ich an. Und 10uF Elko parallel ist auch nicht falsch.
>

Irgendsowas in dem Dreh, ja. Es hängt auch noch ein 100 uF Elko parallel 
von wegen Spannungseinbrüchen und so...

>>dran. Ebenso wird der MAX488 mit 5 V versorgt.
>
>Der darf ruhig auch 100nF bekommen.
>

Hab ich nicht extra erwähnt :-) Später bekommt alles was an den uC dran 
und weg geht einen Abblock-C wegen der Hochfrequenz-Umgebung...

>>Im Teil B der Platine das selbe Szenario mit einem weiteren Atmega32 und
>>MAX488CPA+, lediglich LED und Taster an Pin 39 und 40 vertauscht.
>
>Das ist schlecht. Denn dann braucht man ja verschiedene Software, was ja
>eigentlich unnötig ist. Also. EIN Port wird immer Ausgang, z.B. PortA.
>eine anderer immer Eingang, z.B. PortB.
>

Ok. Werde ich dann mal auch ändern.

>>Dazwischen einfach vier Leitungen um die Anschlüsse des MAX488 zu
>>verbinden.
>
>Masse fehlt noch.
>

Hmm, ja, ist ja auf der Prototyp-Platine ein und das selbe. Später muss 
ich mal sehen, denn die Netzteile sind ja eh alle auf der Sekundärseite 
mit Minus geerdet und da müsste das gehen, sonst muss ich eben die Masse 
noch rüberziehen.

>>Würde mich freuen wenn ich da was zum Testen wie abgeredet bekommen
>>könnte....
>
>Dazu brauche ich noch von dir die Angabe über die verwendete
>Quarzfrequenz. Den UART ohen Quarz ist nicht wirklich stabil.

Achso. Blöde von mir. Hab das einen Oszi dran mit 16 MHz.


Grüße Pascal

von Matthias L. (Gast)


Lesenswert?

>So ein Quarz kostet praktisch nix

Es wird gespart, koste es, was es wolle!

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

@  Pascal (Gast)

Moin,

so, hier nun ein Prachtstück von Software ;-)
Port A ist komplett Ausgang, PortC ist komplett Eingang. Ist günstiger 
als PortB, weil dort die ISP Schnittstelle dranhängt. Die Abtastung 
erfolgt mit ca. 60 Hz. Übertragungsgeschwindigkeit ist 2400 Baud.

>Achso. Blöde von mir. Hab das einen Oszi dran mit 16 MHz.

Oszillator oder Quarz? Das musst du richtig in den AVR Fusese 
einstellen.

Quarz: Low Fuse Byte = 0xFF
Oszillator: 0xE0

Siehe Anhang.

MFG
Falk

P.S. In der fertigen Anwendung kannst du einen WESENTLICH langsameren 
Quarz nutzen, 1 MHz oder als Baudratenquarz 1,8432 MHz reichen 
dicke! Einfach im Sourcecode eintragen, compilieren, fertig.

von Pascal (Gast)


Lesenswert?

@ Falk:

>Port A ist komplett Ausgang, PortC ist komplett Eingang. Ist günstiger
>als PortB, weil dort die ISP Schnittstelle dranhängt. Die Abtastung
>erfolgt mit ca. 60 Hz. Übertragungsgeschwindigkeit ist 2400 Baud.

Alles klar. Ich habe jetzt mal alles weitestgehenst geändert. Wegen Oszi 
(s.u.) habe ich auch schon ein Test mit internen 1 MHz gemacht (und im 
Source geändert und compiliert).

Wie sind denn nun die Ausgänge bzw. Eingänge zu beschalten? Ich bekomme 
nämlich keinerlei Signale auf dem anderen Atmel raus. Hätte ich jetzt 
mal ein Ozilloskop... Kann leider nur mit einem Multimeter dienen...

>Oszillator oder Quarz? Das musst du richtig in den AVR Fusese
>einstellen.

Ein Oszillator hab ich dran. Hab jetzt ext. Clock 0xE0 drin.

Grüße Pascal

von Falk B. (falk)


Lesenswert?

@ Pascal (Gast)

>Wie sind denn nun die Ausgänge bzw. Eingänge zu beschalten?

Ausgänge sind Ausgänge. LED+Vorwiderstand dran, fertig.
Die Eingänge haben aktive Pull-Ups, da kann man einfach einen Taster vom 
Eingang nach GND schalten, fertig.

MFG
Falk

von Pascal (Gast)


Lesenswert?

Alles klar. Dann muss ich mal sehen was da nun klemmt. Entweder hab ich 
kein Taktsignal am uC vom Oszillator (kommt mir fast so vor) oder aber 
irgendwie hab ich noch einen Bug im Bus vom MAX488 zum anderen...

Könnte man denn einen weiteren Ausgang (z.B. Port D) einen Pin im 
Rhytmus 1 Sekunde oder so blinken lassen? Dachte ich als Indikator, dass 
zumindest der uC mit Programm schonmal rennt...

Grüße Pascal

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

OK, PB0 sollte jetzt blinken.

MFG
Falk

von Pascal (Gast)


Lesenswert?

Wenn die jetzt auch noch blinken würde, dann fände ich es so mega toll 
:-)

Also ich muss da irgendwo einen Wurm drin haben. Was mir aufgefallen 
ist, alle Pins von Port C sind high, außer Pin 26 (PC4), der liegt bei 
ca. 0,12V. Woran kann das liegen?
Habe schon drei neue uC ausprobiert, überall das gleiche Bild. Auch 
schon aufm STK500 ist das so. Wieso?

Sollte ich außerdem wenn ich auf dem STK500 die Steckerleiste von 
PD0/PD1 mit RS232SPARE und dann die D-Sub mit dem Com am Rechner 
verbinde und dort mit einem Terminalprogramm (nutze Bray-Terminal und 
HTerm) lausche irgendwelche Pakete empfangen, wenn ich an PC0 bis PC7 
Signale anlege? Da kommt nämlich absolut nichts.

Pascal

von Falk B. (falk)


Lesenswert?

@ Pascal (Gast)

>Wenn die jetzt auch noch blinken würde, dann fände ich es so mega toll
>:-)

Danns schreib erstmal ein einfaches Programm, was nur ne LED binken 
lässt. Wenn das läuft, ist schon elektisch alles OK.

Dann musst du dich halt weiter vor tasten.

MFG
Falk

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Aaaaaaaaasche über mein unwürdiges Haupt. :-0

OK, das Programm im Anhang sollte jetzt laufen. LED an PB0 blinkt mit 
ca. 3s Takt.

MFG
Falk

von C. H. (_ch_)


Lesenswert?

> Also ich muss da irgendwo einen Wurm drin haben. Was mir aufgefallen
> ist, alle Pins von Port C sind high, außer Pin 26 (PC4), der liegt bei
> ca. 0,12V. Woran kann das liegen?
ohne den Code jetzt angesehen zu haben...
JTAG deaktiviert?

Gruß
Christian

von Pascal (Gast)


Lesenswert?

Hi Falk,

Danke für den neuen Code... War dienstlich unterwegs und konnte eben 
erst testen. Hab auch leider die Tage wenig Zeit dafür.
Also eine Frage erstmal vorweg: Wie kommen die ca. 3 Sekunden Blinktakt 
zu stande? Das verstehe ich nicht anhand vom Quellcode...

3 Sekunden... Hmm, also ich habe 16 MHz Takt dran und auch in den Fuses 
drin, aber ich bekomme da nun so ca einen Blinktakt von 14 Sekunden 
raus... Da kann doch dann was nicht stimmen? Geht vielleicht deswegen 
auch die Serielle Übertragung bisher noch nicht?

Grüße Pascal


Achso... An dem einen uC hatte ich wirklich noch nicht JTAG aus...

von Helmut L. (helmi1)


Lesenswert?

>3 Sekunden... Hmm, also ich habe 16 MHz Takt dran und auch in den Fuses
>drin, aber ich bekomme da nun so ca einen Blinktakt von 14 Sekunden

Sind die Fuses fuer externen Quarzoszillator gesetzt ?
Sieht so aus als wuerde er auf den interenen RC-Oszillator laufen.

Gruss Helmi

von Pascal (Gast)


Lesenswert?

Drin ist 0xE0 - ist doch richtig? Dachte ich auch zunächst. Wenn ich ja 
wüsste wie in dem Programm die 3 Sekunden sich ergeben!?

von Pascal (Gast)


Lesenswert?

Achso:

Wenn ich als Frequenz 1 MHz eincompile und die internen 1 MHz 
Standardeinstellung nehme habe ich dennoch so ca. eine Blinkfrequenz von 
ca. 13-14 Sekunden. Das finde ich total komisch.

von Falk B. (falk)


Lesenswert?

@ Pascal (Gast)

>Also eine Frage erstmal vorweg: Wie kommen die ca. 3 Sekunden Blinktakt
>zu stande? Das verstehe ich nicht anhand vom Quellcode...

Ganz einfach. Der Timer läuft mit 1/256 des Quarztaktes, also 
16MHz/256=62,5kHz. Nach 256 Takten gibt es einen Überlauf und damit 
Timer-Interrupt, macht 244 Hz. Im Timerinterrupt ist nochmal ein Zähler, 
welcher auch durch 256 teilt (tmp). Macht einen Pegelwechsel der LED 
alle 1s, macht ~2s Blinktakt.

>drin, aber ich bekomme da nun so ca einen Blinktakt von 14 Sekunden
>raus...

Dann scheint dein AVR nicht wirklich mit 16 MHz zu laufen, sondern eher 
1 MHz. Fuses WIRKLICH richtig gesetzt?

MFG
Falk

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.