Hallo, gerade habe ich den Schaltplan für mein erstes größeres Projekt fertiggestellt. Da ich noch wenig Erfahrung habe, und bisher bei meinen Eagle Schaltplänen die Pins an zwei Händen abzählen konnte, bitte ich euch beim Layout um etwas Nachsicht ;) (Was nicht heißt, dass ich nicht offen für konstruktive Kritik bin). Könnt ihr bitte einmal drüberschauen und mir sagen, ob ihr irgendwelche Fehler findet, und ob ich etwas verbessern kann? Es geht darum, einen Raspberry Pi mit einem ATmega8 zu verbinden. Die Kommunikation geschieht über die UART Schnittstelle des Pis. Der uC stellt verschiedene Ein- und Ausgaben bereit: * 4-Wege Schalter mit Pushbutton (SW1, unten rechts), der Benutzereingaben empfängt. Der Schalter hängt mit dem "Common" Pin an der Versorgungsspannung, und die einzelnen Zustände werden vom 74HC165 an den uC weitergeleitet. Jeder einzelne Zustand hat einen 10k Pulldown gegen GND. Entprellt wird softwareseitig im uC. * Intern wird ein 25LC080P SPI EEPROM für die nichtflüchtige Datenspeicherung verwendet. Um den MISO Pin bei Nichtverwendung Tristate zu halten, ist er an einem 74HC125 angeschlossen. Als CS dient dabei der Port QB vom 74HC595. * Ein Piezzo-Buzzer für Töne hängt am Pin QA des 595. * Für die Datenanzeige verwende ich ein Nokia 5100 Display. Die Displayspannung soll gedimmt werden können, und hängt deshalb an OC1B vom ATmega. Der Displaycontroller wird über SPI angesprochen. * Für die Programmierung wird die ISP Programmierschnittstelle verwendet. Damit die Signale während der Programmierung sich nicht auf die Bausteine am SPI Bus auswirken, sind die CS Signale von 25LC080P, 74HC165 und 74HC595 mit einem Pullup ausgestattet. Außerdem wird Pin G vom 595 ebenfalls gegen die Versorungsspannung gezogen, damit die Ausgänge standardmäßig Tristate sind. * Der Raspberry verträgt nur 3.3V, der uC wird aber mit 5V betrieben, um 16MHz zu erreichen. Aus diesem Grund wird die Spannung vom TXD Pin des uC mit einem Spannungsteiler auf knapp 3.3V gesetzt. * Um zu erkennen, wann das Herunterfahren des Raspberrys beendet ist, wird ein Trick angewandt: Der TXD Pin des Raspberries führt dann nämlich keine 3.3V mehr, weswegen dieser Pin mit AIN1 verbunden ist, um mit dem AC festzustellen, wann es so weit ist. Vielen Dank für eure Mühe!
\CS (IC2.1) und Treiber-Enable (IC3A.1) sind nicht richtig verbunden. Eigentlich sollte ERC da einen Fehler melden.
Wolfgang schrieb: > \CS (IC2.1) und Treiber-Enable (IC3A.1) sind nicht richtig verbunden. > Eigentlich sollte ERC da einen Fehler melden. Stimmt, habe ich übersehen, danke! Thomas schrieb: > R3 und R2 sind viel zu klein Hmm, ausgehend vom Artikel Spannungsteiler dachte ich
Wo liegt mein Fehler? Michael schrieb: > Abblockkondensatoren auf VCC fehlen Sind die bei allen ICs notwendig, oder nur für den ATmega?
Hier die aktualisierte Version mit Abblockkondensatoren für die ICs und korrekt verbundenem IC2/IC3.
Peter Reither schrieb: > Thomas schrieb: >> R3 und R2 sind viel zu klein > > Hmm, ausgehend vom Artikel Spannungsteiler dachte ich >
> > Wo liegt mein Fehler? Spannung ist eine Sache. Strom die andere. Wieviel Strom rinnt durch (12+22)Ohm aus dem Ausgansgpin nach Masse? Kann der µC das überhaupt liefern? Wenn du die Widerstände 10mal (100mal, 1000mal) so groß machst, hast du immer noch dasselbe Spannungsverhältnis. Aber es rinnt nur 1/10 (1/100, 1/1000)-tel soviel Strom. Durch einen Strohhalm kannst du auch Wasser mit 2m/s durchjagen. Wird aber trotzdem nicht reichen um ein FLusskraftwerk anzutreiben. Also: Es gibt 2 Dinge, auf die man achten muss - Spannung und Strom.
Peter Reither schrieb: > Wo liegt mein Fehler? Das Teilerverhältnis ist ok, aber der µC kann den Strom nicht liefern.
Peter Reither schrieb: > Hier die aktualisierte Version mit Abblockkondensatoren für die ICs Bei AVcc fehlt er immer noch JEDES Pärchen Versorgungsspannung/Masse bekommt einen 100nF Kondensator. Jedes! Und wenn ein IC eben mehrere derartige Anschlüsse hat, dann kriegt es auch an jedem einen derartigen Kondensator.
Karl Heinz Buchegger schrieb: > Spannung ist eine Sache. Strom die andere. Stimmt, daran habe ich gar nicht gedacht. Danke! Mit diesem Hinweis habe ich die Widerstände in 1,2k und 2,2k geändert.
Welchen Sinn haben eigentlich der 595 bzw. der 165? Du hast 3 Millionen Pins am Mega frei und benutzt einen 'Portexpander'? Den Sinn dahinter versteh ich noch nicht. Aber vielleicht gibt es ja einen.
Karl Heinz Buchegger schrieb: > Welchen Sinn haben eigentlich der 595 bzw. der 165? Ich möchte die entsprechenden Pins nach außen legen, um sie später kaskadieren zu können. Erst einmal möchte ich mich auf die Anbindung an den Pi kümmern, und ein solides Kontrollboard dafür bauen. Und später gibt es weitere Anwendungen, die dann die Raspberry Pi / Kontrollboard Konstruktion steuern soll. Und um nicht später die Platine wegschmeißen zu müssen, möchte ich das Ganze so gestalten, dass die I/O Ports erweiterbar sind. -- Anbei noch einmal der aktualisierte Schaltplan.
Peter Reither schrieb: > Anbei noch einmal der aktualisierte Schaltplan. Und C10 ist nicht richtig angeschlossen. Ist inzwischen korrigiert.
Peter Reither schrieb: > Konstruktion steuern soll. Und um nicht später die Platine wegschmeißen > zu müssen, möchte ich das Ganze so gestalten, dass die I/O Ports > erweiterbar sind. Kennst du die Rubrik: "Berühmte letzte Worte"? Bis du da das erste mal eine Erweiterung planst, hast du schon ein paar von diesen Platinen gefertigt. Mach deine erste Platine einfach (auch einfach zu programmieren) und denk erst in Version 2.0 darüber nach, nachdem du Erfahrung gesammelt hast, wie du daraus die eierlegende Wollmilchsau entwickeln kannst. Du musst nicht mit deiner ersten Platine gleich die Welt der µC revolutionieren. Du kannst dir aber mit einem zu gefinkelten Aufbau selbst das Leben unendlich schwer machen.
Karl Heinz Buchegger schrieb: > ach deine erste Platine einfach (auch > einfach zu programmieren) und denk erst in Version 2.0 darüber nach, > nachdem du Erfahrung gesammelt hast, wie du daraus die eierlegende > Wollmilchsau entwickeln kannst. Du hast wahrscheinlich Recht. Ein Schritt nach dem Anderen. Das Layout habe ich entsprechend angepasst. Ist der 74HC125 eigentlich wirklich notwendig? Ich denke schon, da der SO Pin nicht Tri-State ist, auch wenn CS high ist, oder?
Peter Reither schrieb: > Es geht darum, einen Raspberry Pi mit einem ATmega8 zu verbinden. Überleg dir, ob du für ein neues Projekt wirklich den längst überholten ATmega8 einsetzen willst. Wenn, dann würde ich den ATmega88A vorsehen (ist oft auch billiger). Das hat zudem den Vorteil, dass der dieser weitgehend aufwärtskompatibel ist zu den pingleichen Typen mit mehr Speicher: ATmega168A und ATmega328 (sogar das Datenblatt ist das gleiche).
Markus Weber schrieb: > Überleg dir, ob du für ein neues Projekt wirklich den längst überholten > ATmega8 einsetzen willst. Da hast du wohl Recht. Werde ich noch einmal die Datenblätter in Ruhe durchgehen, danke für den Hinweis!
So, mit all euren Anmerkungen habe ich das Ganze noch ein wenig überarbeitet und vereinfacht. Als EEPROM habe ich nun auch einen IC genommen, der bei Nichtselektierung laut Datenblatt den Ausgang freigibt. Damit konnte noch ein IC wegfallen. Auch den ATmega8 habe ich ersetzt. Einen Fehler habe ich jedoch noch in der Schaltung: Die Leitungen 3-6 von LCD1 vertragen auch nur 3.3V. Was würdet ihr hier vorschlagen, um die Spannung zu reduzieren, 4 Spannungsteiler wie bei Pin 10 des Raspberry Headers? Kann ich das mit dem SPI Bus einfach so machen, Spannungsteiler an Takt und MOSI hängen?
Was ist das für ein LCD und warum muss es ausgerechnet dieses sein? Es gibt doch genug LCD im Handel, auch mit SPI Anschluss, die mit +5V laufen. So wie ich das sehe, ist das LCD dein einziger 3.3V Konsument. D.h. tauscht du das LCD gegen einen 5V Typ aus, fällt dir auch der ganze Bereich 3.3V Versorgung weg.
Karl Heinz Buchegger schrieb: > Was ist das für ein LCD und warum muss es ausgerechnet dieses sein? Das ist ein Nokia 5100 Display, und das war sehr günstig zu bekommen. Außerdem habe ich inzwischen meine Routinen für die Anzeige daran angepasst. Der Controller ist ein PCD8544, und der verträgt leider nicht mehr (laut Datenblatt).
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.