AVR Projekt - Schaltplan in Ordnung?

Gast #3094230
Lesenswert?

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!
Angehängte Dateien:
Gast #3094253
Lesenswert?

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?
#3094265
Lesenswert?

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.
Gast #3094288
Lesenswert?

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.
Angehängte Dateien:
#3094297
Lesenswert?

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.
Gast #3094341
Lesenswert?

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?
Angehängte Dateien:
(Firma: guloshop.de) #3094400
Lesenswert?

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).
Gast #3094523
Lesenswert?

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?
Angehängte Dateien:
#3094528
Lesenswert?

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.
Gast #3094539
Lesenswert?

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).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren