Forum: Mikrocontroller und Digitale Elektronik "Einfache" Kommunikation zwischen 2 Atmegas


von Steffen J. (deldri)


Lesenswert?

Hey,

ich habe zwar vorab nach einer entsprechenden Lösung gesucht, allerdings 
waren mir die Lösung zu aufwendig. Wieso folgt zugleich

Ich bin Student und habe seit eingier Zeit an einer 
Displayprogrammierung gearbeitet.
Da ich jetzt einen GLCD beherrsche dachte ich mir, dass ich damit endich 
zuhause praktische Anwendungen bauen kann und nicht nur n paar Bitmuster 
auf LEDs ausgeben kann.

Damit ich möglichst viele verschiedene Applikationen mit nur einem Board 
realisieren kann, wollte ich mir mein eigenes "Einsteiger-Dev-Board" 
bauen, das die nötigen Schnittstellen für Display, ISP, 7-Segment, 
LED-Bar,Temp.-Sensor, Servo-Motor bereithält und man diese Jumpern kann 
o.ä. Verwenden möchte ich einen Atmega8515L.

Dazu möchte ich mir jetzt selber noch ein Bedienteil mit Tasten 0-9, OK 
und Back entwerfen.

Wie man sich denken kann, fehlen für einem da die Ports, wenn man 
Display und Bedienteil Standartmäßig laufen lassen will und dann vll 
noch den Motor mit Temperatursensor laufen lassen will (Display läuft 
auf 8bit-->14ports mit CS1,2 und RST).

Da ich ALLES selber bauen möchte um auch komplett nachvollziehen zu 
können, warum es so funktioniert, wie es funktioniert.

Und hier kommen wir zur eigentlichen Frage:

Wenn ich das Tastenfeld vom Bedienteil auf einen anderen µC (z.Bsp. 
ATTiny44) gebe, dort die 10 Eingänge auf ein 5-bit Muster reduzieren und 
dieses auf einen Port ausgebe...kann der "Hauptmikrocontroller" dann 
einfach die 5-bit über 5 Pins einlesen? Oder gibt es da Probleme beim 
Einlesen?

Ich möchte keine besondere serielle Schnittstelle benutzen oder Daten 
besonders schnell übertragen. Mir geht es um die Funktionalität und 
darum, dass ich mir das Konzept selber überlegt habe und ich nicht 
einfach irgendwelche Chips verwende, die die Arbeit erleichtern. Ich 
möchte halt vorerst mit diesem Projekt in den Basics bleiben.
Falls das möglich ist...

Eine andere Idee war Anfangs das Tastenfeld auf ANDs zu geben und so das 
5-Bit Muster zu erzeugen. Dann hab ich aber gedacht, dass ich einen 2ten 
µC zudem für andere Funktionen innerhalb des Bedienteils nutzen kann..

Thema Multiplexer oder ähnliches:
Wie gesagt: Ich würde gerne bei meinen eigenen Konzepten bleiben..


Ich sag jetzt schonmal Danke ;)
Ich denke die Frage sollte für die Mehrheit hier nicht allzu schwer sein 
;)

Steffen

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Steffen Jü schrieb:
> Thema Multiplexer oder ähnliches:
> Wie gesagt: Ich würde gerne bei meinen eigenen Konzepten bleiben..

dann mach doch mal eine Zeichnung, wie dur dir das vorstellst in deinem 
eigenen Konzept, und stelle sie hier rein zur Diksussion oder 
Niedermetzelung.

von chris (Gast)


Lesenswert?

wie siehts aus mit ner UART oder TWI oder SPI???

von Alexander F. (alexf91)


Lesenswert?

Warum nicht UART? Wenn die Schnittstelle noch frei ist spricht doch 
nichts dagegen.
Ansonsten vielleicht was anderes, einfaches.
Ich hab irgendwann mal sowas ähnliches realisiert. Die Kommunikation 
erfolgte über 2 Leitungen, eine Datenleitung und einen Takt. Die 
Taktleitung habe ich mit einem Pin-Change Interrupt verbunden, bei jedem 
Pegelwechsel wurde die ISR angesprungen und das Datenbit eingelesen. Der 
Vorteil ist, dass das Timing beim Bedienteil absolut unkritisch ist und 
beim Master (oder hier eigentlich dann Slave?) keine Eingänge gepollt 
werden müsse wie bei einer Software-UART.

von Steffen J. (deldri)


Angehängte Dateien:

Lesenswert?

sry, für die auflösung, aber musste es eben flott aufm 13-Zoller machen.

Ist nur eine Prinzipzeichnung, ohne alle Tasten etc.

von Steffen J. (deldri)


Lesenswert?

bisschen blöd zu sehen: Mit der Verbidung zum Display sind die Pins 
rechts daneben gemeint

von Steffen J. (deldri)


Lesenswert?

hab mir das thema UART nchmal angeschaut, da die stimmen sofort laut 
wurden. Mag vll eine praktische Lösung sein, aber ich würde ungern viele 
Sachen auf einmal zum ersten Mal benutzen. Habe ohnehin schon dran 
gedacht es für Ausbildungszwecke tauglich zu machen. Und da wäre ja 
schon ein zweiter µC eigntl zu viel.

von Thomas E. (thomase)


Lesenswert?

Steffen Jü schrieb:
> Verwenden möchte ich einen Atmega8515L.
Gibt es dafür einen besonderen Grund?
512Byte RAM und 8K Flash, 2 Timer, kein ADC sind doch Tiny-Niveau.

Das ist was Ordentliches für ein Dev-Board:
http://www.atmel.com/images/doc8059.pdf

mfg.

von Steffen J. (deldri)


Lesenswert?

Thomas Eckmann schrieb:
> Steffen Jü schrieb:
>> Verwenden möchte ich einen Atmega8515L.
> Gibt es dafür einen besonderen Grund?
> 512Byte RAM und 8K Flash, 2 Timer, kein ADC sind doch Tiny-Niveau.
>
> Das ist was Ordentliches für ein Dev-Board:
> http://www.atmel.com/images/doc8059.pdf
>
> mfg.

jauh, damit lässt sich schon sau viel machen, aber habe meine lcd-lib 
schon für den atma8515..

Kann mir nun jemand sagen, ob so eine Kommunikation prinzipell 
fnktioniert und was ich beachten sollte, ohne mir eine andere 
Schnittstelle oder ein andere Bauteil vorzuschlagen? Das wäre dann 
später die zweite Lösung.

Aber Danke für die Hilfe und Anregungen bisher :)

von i-Troll (c) (Gast)


Lesenswert?

Wenn man knapp an Ports ist, den naechst groesseren nehmen. Die software 
benoetigt wenig anpassungen

von Thomas E. (thomase)


Lesenswert?

Steffen Jü schrieb:
> aber habe meine lcd-lib schon für den atma8515..
Solange du dafür kein Memory-Mapped I/O verwendest, wäre das doch kein 
Problem das anzupassen.
Das Gehampel mit zwei Controllern ist eher nicht trivial. Wenn man das 
nicht unbedingt braucht, macht man das auch nicht. Für Porterweiterungen 
nimmt man dann Schieberegister. Für langsame Sachen wie Tasten oder Leds 
allemal.

mfg.

von Steffen J. (deldri)


Lesenswert?

Ich frage nochmal expliziet nach dieser Art von Kommunikation:

Wenn ich 10 if-Abfragen im "Haupt"-µC programmiere und dort das 5-bit 
muster (das den 10 Tasten entspricht) entsprechend den 10 Tasten 
abfrage, kommt es da zu problemen?

Ich stelle mir das so vor:

Bedienteil-µC (1) setzt das 5-bit-muster auf den ausgangsport PA0-PA4 
auf 01011.
Der µC zur Display-Steuerung (2) hat diese 5 Leitungen als Eingänge. Die 
if-Abfragen, fragen eben diese ab.

Hier kommt es zum Problem:
Setzt µC 1 seine Ausgänge ALLE exakt zum selben Moment bzw. löscht sie?
Ansonsten könnte es innerhalb der 10 if-Abfragen zu Fehlern kommen.

Möchte ohne extra Takt arbeiten.

Ich hoffe jemand kann klar sagen:
Ja, das funktioniert / Ja, mit einer Fehlerqute von xy% /Nein, das geht 
gar nicht

von Steffen J. (deldri)


Lesenswert?

Thema hat sich glaub ich geklärt.

sollte ich nach einer if-Abfrage einen kleinen Delay einbauen und erneut 
abfragen, erkenne ich, ob das muster noch "am aktualisieren war". Der 
Delay sollte kleiner sein als 2 Tastendrücke und größer als die Zeit die 
es benötigt die Ausgänge des µC 1 zu setzen/löschen.

Ansonsten verhält sich ja alles entsprechend der Logik-Pegel.

Sollte also keine Probleme geben, richtig?

von Matthias L. (Gast)


Lesenswert?

>Bedienteil-µC (1) setzt das 5-bit-muster auf den ausgangsport PA0-PA4
>auf 01011.

Warum dann nicht gleich die Tasten direkt an den zweiten µC anschließen?
Wenn der erste eh nur die Tasten weiterreicht..?


>Möchte ohne extra Takt arbeiten.

Das Ganze würde nur Meldungsorientiert funktionieren. Wenn also der 
BedienµC eine Meldung versendet, wo drinsteht, das Taste X 
betätigt/losgelassen wurde.
(So arbeiten auch Tastaturen)


>Ich hoffe jemand kann klar sagen:
EIn guter Tipp:

Lass es. Bleibe bei einem µC.

von Bernd S. (bernds1)


Lesenswert?

Ich seh gerade auf dem Schaltplan, daß du die Tasten alle gegen (+5V) 
geschaltet hast. Was lesen die Pins des Prozessors ein, wenn die Tasten 
offen sind?
Die Prozessoren haben keine Pulldown's. Also lesen sie irgendwas ein. 
Nur bei geschlossenen Tasten bekommen sie definiertes High-Signal.

Lösung 1: externe Pulldown's an die Prozessorpins
Lösung 2: Tasten an Masse und interne Pullup's aktivieren

Zum eigentlichen Thema kann ich nur sagen, nimm eine serielle 
Kommunikation. Die ist nicht schwierig und braucht nur 2 Leitungen.
Wenn du noch andere Sachen übertragen möchtest (und das kommt bestimmt 
noch), dann hast du in deiner Variante keine Möglichkeiten mehr. Wenn du 
es seriell machst, kannst du übertragen, was und so viel du willst.
Überleg es dir mal. Sind nur paar Zeilen Software. Tipps dazu hast du 
hier schon bekommen. Und wenn du nicht zurecht kommst, fragst du einfach 
nach. Hilfe gibt's hier umsonst :-)

von J. T. (chaoskind)


Lesenswert?

MoinMoin

Noch ne Möglichkeit, Pins zu sparen ist es, die Taster per ADC 
abzufragen, und per Spannungsteiler jedem Taster ne "eigene" Spannung 
zuzuweisen. Idealerweise sollte man den Spannungsteiler so abstimmen, 
das man pro Taster eine Spannungsverdopplung/halbierung hat. Sprich 
erste Taste gedrückt zb Vcc/2, 2 Taste gedrückt Vcc/4 usw, dann kannst 
du auch mehrere Tasten gleichzeitig drücken und abfragen.

Und wenn du bei 2 Controllern bleiben möchtest, Kommunikation über UART 
ist wirklich kinderleicht! =)

MfG Chaos

von Wolfgang (Gast)


Lesenswert?

Steffen Jü schrieb:
> sollte ich nach einer if-Abfrage einen kleinen Delay einbauen und erneut
> abfragen, ...

> Sollte also keine Probleme geben, richtig?

Delay ist, sobald der Prozessor eigentlich mehr zu tun hat, als auf die 
Taste zu warten, immer ein Problem, weil er in der Zeit nichts anderes 
erledigen kann. Guck mal nach "Timer" und "Entprellen"

von Vuvuzelatus (Gast)


Lesenswert?

>Ich hoffe jemand kann klar sagen:

Zuwenige I/O-Pins am Controller ist ein Standardproblem, für das es zwei 
bewährte Standardlösungen gibt:

- Controller mit mehr Pins nehmen. Dazu sind sie da.

- Schieberegister:

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister

>sollte ich nach einer if-Abfrage einen kleinen Delay einbauen

<ironie> Unbedingt. Solche Delays kann man gar nicht genug einbauen. 
</ironie>

von Steffen J. (deldri)


Lesenswert?

Ich versuch auf jeden zu Antworten:

Matthias Lipinsky:
Tu ich doch gar nicht. Ich wandel 12 Tasten in ein 5-bit Muster und 
unterscheide ob ich es als Nummernblock oder Navigation benutze.

Bernd S.:
Wie ich sagte ist es eine Prinzipzeichnung und "..eben schnell.." 
gemacht. Da kann ich doch auf sowas verzichten,oder? Aber wenn ich 
ehrlich bin, habe ich auch gar nicht dran gedacht!! Danke :) (Hatte ne 
Sps-lastige Ausbildung. Da konnten wir Logos und S7-300 auch so 
anschließen :)

j. t. (chaoskind):
DAS gefällt mir!! Also das ist wirklich eine elegante und einfache 
Lösung, die mir richtig gut gefällt. Genau sowas habe ich mir 
vorgestellt! Super Beitrag also ;)

Vuvuzelatus:
Thema Delay: Ach lasst das Kind doch spielen :) Sagen wir es doch ganz 
einfach: Ich habe noch nicht viele Kenntnisse und möchte meine eigenen 
Mittel ausnutzen und eigene Ideen entwickeln. :)


Steffen

von Maus (Gast)


Lesenswert?

ohne scheiss, du hast einen echten Nachteil bei zwei µC:

bei Änderungen musst du immer zwei Programme ummodeln und zwei mal 
hintereinander zwei Controller flashen.

Mach es mit Schieberegistern.
Es wird dich weniger Zeit kosten.
Eine Library für einen größeren Controller findest du bestimmt auch 
noch, und ansonsten geht das Ändern der Register-Flags für einen anderen 
Controller in deiner Library auch echt fix.
Ich mache das immer so, dass ich mir beide Datenblätter öffne und alle 
Befehle mit Registern drin im Datenblatt für den einen suche und gucke 
was das sein soll und dann jenes in dem Datenblatt des neuen µC suche um 
zu sehen wie es dort heißt.
Das kannst du ja auch trocken machen, wenn es am Ende kompilliert kannst 
Du dir jenen µC kaufen.

Aber ich sehe gerade, dass der ATmega8515 schon recht groß ist,
also
AVR-Tutorial: Schieberegister

von Carsten R. (kaffeetante)


Lesenswert?

Auf jeden Fall brauchst du etwas, das dem Display-Controller mitteilt, 
daß er Daten vor der Türe hat. Immer vor der Türe nachschauen, Polling 
genannt, ist nicht optimal. Zusätzlich zur verschwendeten Rechenzeit 
könnte man was verpassen. Um diese Gefahr zu reduzieren muß an noch 
häufiger pollen.

Also brauchst Du eine Interruptleitung die entweder zusätzlich verlegt 
wird oder per extra Baustein aus den 5 Datenleitungen erkennt das sich 
da was tut. Manche Bausteine die man zum Thema Porterweiterung findet 
erkennen ein Toggeln auf den Leitungen. Ich tue mich nur noch schwer mir 
die ganzen Teilenummern zu merken.

Da diese Teile zur Porterweiterung seriell angebunden werden kann man 
dann aber auch gleich eine der seriellen Schittstellen direkt nehmen. 
Die haben schon eine Interruptmöglichkeit integriert. So schwer ist das 
es nicht sie zu benutzen. Zusätlich haben sie noch den Vorteil, daß sie 
eigene Register haben in denen die Empfangenen Daten zwischengespeichert 
werden bis sie verarbeitet werden. Wenn man das nun per Interruopt 
bearbeitet, hat man die Daten in aller Regel abgeholt bevor Neue kommen. 
Wenn man also nicht gerade tippt wie ein Weltmeister wäre diese Lösung 
in dieser Hinsicht nahezu sorgenfrei.

Wenn Dir aber weiterhin die Lösung mit den verschiedenen Spannungen mehr 
zusagt, kannst du auch den Komperator mit auf die Leitung hängen, der 
dann bei Tastendruck die geänderte Spannung erkennt und über Interrupt 
die Auswertung startet.

Wie Du es auch machst, so oder so läuft es darauf hinaus das Du mehr als 
nur die einfache Port-Funktion brauchst wenn es kein Polling werden 
soll. Also etwas, aber nur etwas, komplizierter wird es weil du dann 
zusätzliche Einheiten im Chip nutzt, sei es nun der Komperator, der ADC 
oder eine der seriellen Schnittstellen.

viele Grüße

Carsten

von Steffen J. (deldri)


Lesenswert?

Ok. Werde wohl beim nächsten mal ein Schieberegister nehmen. Bzw ich 
mache ein zweites Board.
Aber würd mich doch interessieren wie es so abläuft. von daher werde ich 
es trotzdem zuende aufbauen und sehn was bei rumkommt.

zum polling:
hatte zum glück noch 1 bit frei, dass ich als control-bit auf einen 
anderen port gebe und dort einen interrupt auslöse, der die 4 bits 
einliest.

habe bisher immer 5bit und 10 tasten geschrieben.
RICHTIG IST: 12 Tasten in 4 bit umwandeln

von Steffen J. (deldri)


Angehängte Dateien:

Lesenswert?

SO schaut der Schaltplan derzeit aus. Fehler mögen vll noch drin sein, 
aber hab für heute genug..

von Carsten R. (kaffeetante)


Lesenswert?

Ob man nun zwei oder einen Controller hat ist Geschmackssache.

Einer ist oftmals billiger.

Aber was die Entwicklung betrifft. Solange man nicht ständig die 
Schnittstellen zwischen den beiden ändert ist es eigentlich sogar 
einfacher. Bei Änderungen zerschießt man nicht gleich alles sondern nur 
einen Teil. Man hat hier keinen Speicherschutz und andere Möglichkeiten 
die man beim PC hat. Hängt eine Routine hängt das ganze System. 
Zumindest in der Regel. Natürlich gibt es Minibetriebssysteme und 
Watchdogs. Aber die wenigsten Hobbyprojekte sind so konzipiert, dass sie 
hängende Programmteile abfangen können. Und selbst Wenn, geht das auch 
nicht uneingeschränkt. Bei getrennten µC hat man eine gewisse Trennung.

Divide and Conquer ist nicht umsonst eine beliebte Strategie in der 
Entwicklung. Dadurch das man im Computer Grafikkarten Soundkarten und 
Controller hat ist es auch nicht notwendigerweise schlechter geworden. 
Das war nicht nur eine Performancefrage. Und wer erinnert sich noch an 
die Zeiten in denen Windows 3.x oder Win9x Stand der Technik waren. Da 
liefen auch einige Programmteile im selben Bereich ohne saubere 
Trennung. Das war nicht unbedingt besser.

Die Idee eine funktionierende Grafikeinheit erst einmal so zu belassen 
und sie nur mit einer Schnittstelle nachzurüsten um dann die neuen Ideen 
außerhalb dessen zu erproben ist nicht unbedingt die schlechteste.

Ich sehe vom Konzept her keinen zwingeden Grund der dagegen spricht das 
so zu machen, eher im Gegenteil. Zusätzlich ist es eine Gute Übung weil 
man sich mehr Gedanken darüber macht Informationen mit System zwischen 
den Komponenten auszutauschen und nicht, weil es on-Chip so schön bequem 
ist, einfach mal stumpf mit mehreren Programmteilen die gleichen 
Speicherbereich anzusprechen.

Dann kommt noch ein Interrrupt dazu, welcher das eine Programm 
unterbricht während ein anderes dann genau dort rumfuhrwerkt, dann kehrt 
man vom Interruopt zurück und macht an der gleichen Stelle weiter et 
Voila....

von Andreas B. (myratz)


Lesenswert?

Hallo Steffen,

wenn ich richtig verstanden habe, ist bei dir der Weg das Ziel. Ich hab 
Berufsmässig damit zu tun, deshalb hier ein paar Hinweise:

Eine Tastatur schaltet man in einer Matrix, in deinem Fall als 3x4 
Matrix, wobei die Tasten auf den Matrix-Kreuzungen liegen. 3 Leitungen 
werden als Ausgang im Ruhezustand auf "high" geschaltet, und 4 als 
Eingänge mit pull downs auf low gelegt.

Die Tastenerkennung wird über eine Timerroutine gemacht, 20ms ist eine 
gute Zeit für die meisten Taster. In der Timer ISR-routine werden die 
Inputs gelesen und gecheckt ob sie gleich 0 sind. Wenn nein, werden die 
Ausgänge abgeschaltet und einer nach dem anderen eingeschaltet. Dadurch 
kann ermittelt werden, welche Taste gedrückt wurde.

Der ermittelte Tastenwert wird gespeichert, und nach 20ms wird das ganze 
wiederholt um sicher zu sein, dass die Taste wirklich gedrückt wurde 
(entprellen). Die gedrückte Taste wird dann vom Interrupt an das 
Hauptprogramm in einer Variablen und einem Key-Pressed Bit übergeben.

In den weiteren Timer ISR's wird gecheckt ob die Taste wieder 
losgelassen wurde (d.h Ports wieder 0) auch dass wird mehrfach gemacht, 
z.b mit einem Softwarezähler.

Damit erübrigt sich vielleicht schon ein Portexpander, weil man so viele 
Ports sparen kann. Falls nicht würde ich die beiden Controller über das 
sowieso vorhandene SPI Interface der Atmels (TWI) im Interruptmodus 
zusammenschalten.

Noch ein Wort zu oben erwähnten zerschießen des Seichers. Das kann 
vorkommen, aber A und O in der embedded Programierung ist: So kleine 
Module wie möglich machen und diese mit speziellem Testcode bis zum 
Erbrechen testen, nur so wird ein System stabil. Besonders gefährlich 
sind Race conditions, die man sich leicht über die Verwendung von 
globalen Variablen einhandelt.
Es gibt sehr gute Bücher zu dem Thema.

Gruß,
Andreas

von Peter D. (peda)


Lesenswert?

Carsten R. schrieb:
> Ob man nun zwei oder einen Controller hat ist Geschmackssache.

Aber nicht für Anfänger, die unterschätzen in der Regel den Aufwand für 
eine zuverlässige Kommunikation völlig.

Ein Anfänger sollte erstmal auf einem MC die Grundlagen lernen, sonst 
hat man zuviele Baustellen auf einmal und kriegt garnix fertig.


Es ist überhaupt keine Kunst, ein LCD und eine 3*4 Tastenmatrix direkt 
anzuschließen.
Das LCD braucht 6 Leitungen, wovon man die 4 Datenleitungen  mit der 
Tastenmatrix zusammen nutzen kann. Die 4 Leitungen muß man nur mit 4 
Widerständen (1k) entkoppeln, damit gedrückte Tasten die LCD-Daten nicht 
kurzschließen.
Macht insgesamt 9 Leitungen und die sollte ja ein 40-Pinner leicht übrig 
haben.

von Steffen J. (deldri)


Lesenswert?

Carsten R. (kaffeetante) und Andreas Br. (myratz):

Ihr habt vollkommen begriffen was ich möchte.

Wie im Plan zu sehen habe ich ein CNTRL-Bit eingefügt um die 4-Bit über 
einen Interrupt einzulesen. Also genau das was du auch gesagt hast, 
Carsten. Dein ganzer Beitrag hat mir grundsätzlich aus der Seele 
gesprochen. :)

Andreas:
Habe es nochmal woanders gefunden mit Beispiel. WIrklich ein 
Kinderspiel. Im Datenblatt hat mich allerdings die Zeichnung etwas 
verwirrt. Jetzt kann ich sie leicht nachvollziehen. Das Problem hat man 
ja des Öfteren :) Aber da liegt der Unterschied der mir wichtig ist, den 
scheinbar einige nicht begriffen haben, oder ihn nicht ausreichend 
berücksichtigt haben: Ich möchte bei einem Problem keine vorhande Lösung 
nachbauen, sondern eine eigene entwicklen.

Und in diesem Falle war das halt die Lösung über einen zweiten µC die 
liebste, da ich mir nicht sicher war ob und wie es MIR möglich ist ich 
Eingänge zu sparen, nur mit Hilfe von ANDs und RS-Gliedern oder so. Da 
dachte ich mir n µC ist einfacher als sich eine Logik-Schaltung zu 
überlegen...Hinzu kamen Überlegungen zu bidirektionalem Fluss.

Zu der Schaltung:
Abgesehen von der 4x3-Matrix die noch ersetzt werden muss und n paar 
Schaltzeichen, funktioniert das so?
Läuft alles auf VCC=5V. 7-Seg. und LEDs müssten bei 330R auch im oberen 
Berreich sein (alle 2V/10mA). Poti sollte zwischen 1k-1M sein-->500k, 
Pulldown=10k Standart, ISP mit 5V. 3x100n pro VCC Pin

Was hab ich vergessen, außer vll so Kleinigkeiten wie 
Verpolungsschutzdioden, "nimm lieber n Tiefpass an VCC !!! ", oder so?

Steffen

von Andreas B. (myratz)


Lesenswert?

Hallo Steffen,

Steffen Jü schrieb:

> Läuft alles auf VCC=5V. 7-Seg. und LEDs müssten bei 330R auch im oberen
> Berreich sein (alle 2V/10mA). Poti sollte zwischen 1k-1M sein-->500k,
> Pulldown=10k Standart, ISP mit 5V. 3x100n pro VCC Pin

Mir erscheinen 10mA etwas hoch für die LED's der 7 Segmentanzeige. Die 
heutigen modernen LED's sind sehr hell, daher reichen auch 2mA oder 5mA. 
Der Typ, den Du rausgesucht hast, ist ein "high brightness" Typ. 
Möchtest Du Dich mit der Sonnenbrille davor setzten? :-)

Zudem würde ich auch die Segmente multiplexen. Die acht Leitungen für 
die Digits parallel zu allen Segmenten führen und dann das 
"Common-Signal" im Multiplex schalten. Auch dazu lässt sich der 20ms 
Timer verwenden. Du mußt nur darauf achten, dass der Strom durch die 
Common Leitung zum Port nicht zu hoch wird. Aber da Du das Signal 
multiplexed, wird der Strom ums Tastverhältnis reduziert. Was der 
Prozessorport maximal aushält, steht im Datenblatt. Auch könntest Du 
zwei Prozessorports parallel schalten, bei CMOS ist das erlaubt.
Der Vorteil der Multiplexerei ist, dass Du es leicht um mehrere digits 
erweitern kannst, der Nachteil: Je mehr digits, desto dunkler, oder Du 
musst den Strom wieder vergrößern.

Für was möchtest Du die "Left"-"Right" - Trimmer verwenden?

Gruß,
Andreas

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.