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
Für 8 Taster können die De-/Multiplexbausteine U6050B/U6052B verwendet werden.
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
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.
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
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
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.
@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
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.
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...
@ 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
@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
@ 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
YO. Falk war eher. Sonst hätte ich dir was zusammenprogrammiert ;-)
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
>YO. Falk war eher. Sonst hätte ich dir was zusammenprogrammiert ;-)
Soviel Angebote :-) Mensch, echt super Service hier :-)
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...
>diverse 485er von Maxim und Linear Technologies hier.
Die schickst du zumir. Als Beratungshonorar ;-)
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
@lippy: was brauchst du denn da? hab da eine Quelle und kann Dir da evt. entsprechendes in kleiner Stückzahl gegen Porto zukommen lassen...
@ 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
>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...
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
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.
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
>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
Mit MAX 485 kannst du nur Halbduplex fahren. Fuer Vollduplex brauchst du MAX488,489,490,491. Gruss Helmi
@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
>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.
@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
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
@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
@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...
>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.)
@ 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
@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
@ 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
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
@ 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
>> 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
>So ein Quarz kostet praktisch nix
Es wird gespart, koste es, was es wolle!
@ 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.
@ 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
@ 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
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
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
@ 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
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
> 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
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...
>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
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!?
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.
@ 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.