Forum: Mikrocontroller und Digitale Elektronik AtMega8 Anzahl I/O


von Sercan S. (disaster35)


Angehängte Dateien:

Lesenswert?

Hallo es geht um die Anzahl der Anschlüsse wie es im Betreff schon 
geschrieben ist.

Ich erkläre mal welche Anschlüsse ich für genau was verwende. Ich glaube 
mir fehlt ein einziger Output-Anschluss... Damit Ihr es bisschen 
leichter habt, habe ich im Anhang auch die Übersicht für Atmega8.

PD0 & PD1 = Bluetooth-Modul.  (AUSGANG & EINGANG)
PD2 - PD6 = Anzeige / Display (AUSGANG)
PB1 & PB2 = Anzeige / Display (AUSGANG)
PC0 - PC4 = Anzeige / Display (AUSGANG)
PD7       = Sensor (EINGANG)
PB0,PB3&PC5 = Taster (EINGANG)

(PB3 ist ja der MOSI-Anschluss, darf ich die PINS für die Programmierung 
durch USB als I/O PINS nutzen? Außer RESET PIN Versteht sich, also SCK, 
MISO & MOSI?)

Jeder Taster schaltet beim Betätigen ein Schalter (Sprich ich brauche 
für PB0, PB3 und PC5 jeweils einen Ausgang). Wird ein Taster beim 
angeschalteten Zustand seines Schalters, mehrere Sekunden gedruckt, wird 
der Schalter wieder ausgeschaltet. Vielleicht habt Ihr Ideen , die 
Taster&Schalter Bereich ohne Einsatz am uC zu realisieren.

Ich freue mich auf eure schnelle (wie immer :D) & hilfreiche Antworten

Liebe Grüße :)

: Bearbeitet durch User
von Dieter F. (Gast)


Lesenswert?

Sercan S. schrieb:
> PD2 - PD6 = Anzeige / Display (AUSGANG)
> PB1 & PB2 = Anzeige / Display (AUSGANG)
> PC0 - PC4 = Anzeige / Display (AUSGANG

Welches Display hast Du denn angeschlossen?

von Wegner (Gast)


Lesenswert?

Sercan S. schrieb:
> (PB3 ist ja der MOSI-Anschluss, darf ich die PINS für die Programmierung
> durch USB als I/O PINS nutzen? Außer RESET PIN Versteht sich, also SCK,
> MISO & MOSI?)

Ja, hat aber mit USB nichts zu tun, sondern mit den ISP Signalen die vom 
Programmer kommen.

> Jeder Taster schaltet beim Betätigen ein Schalter (Sprich ich brauche
> für PB0, PB3 und PC5 jeweils einen Ausgang). Wird ein Taster beim
> angeschalteten Zustand seines Schalters, mehrere Sekunden gedruckt, wird
> der Schalter wieder ausgeschaltet. Vielleicht habt Ihr Ideen , die
> Taster&Schalter Bereich ohne Einsatz am uC zu realisieren.

??? Schaltplan! oder bessere Beschreibung.

von Paul B. (paul_baumann)


Lesenswert?

Sercan S. schrieb:
> (PB3 ist ja der MOSI-Anschluss, darf ich die PINS für die Programmierung
> durch USB als I/O PINS nutzen?

ISP statt USB meinst Du?

Na freilich. Du mußt eben sehen, daß Du dort am Besten Taster
(als Schließer) dran machst. Die dürfen natürlich nicht während des 
Programmierens betätigt werden. Wenn Du diese Anschlüssen als Ausgang
vorgesehen hast, dann gib Obacht, daß sie während des Flash-Vorganges 
durch das Programmiergerät (unbeabsichtigt) geschaltet werden. Du mußt 
dann sicherstellen, daß keine Motoren, Zugmagneten oder solche Sachen 
dadurch in Bewegung gesetzt werden.

MfG Paul

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Solange du mit dem internen RC-Oszillator des Mega8 zurechtkommst, sind 
auch PB6 und PB7 als I/O verfügbar.

von Dieter F. (Gast)


Lesenswert?

Generation Internet - Frage absetzen und nach 1 bis 2 Tagen schauen, 
welche Antworten kamen? :-)

von Sercan S. (disaster35)


Lesenswert?

>Welches Display hast Du denn angeschlossen?
@Dieter F. (jim_quakenbush)
Eine 5-Stellige 7-Segmentanzeige


>??? Schaltplan! oder bessere Beschreibung.
@Wegner (Gast)
Ich habe 3 Knöpfe / Taster :
Taster 1 schaltet -> Relais1
Taster 2 schaltet -> Relais2
Taster 3 schaltet -> Relais3
Wird Taster 1 länger betätigt z.B. 3 Sekunden, wird Relais1 (meinetwegen 
auch ein Transistor) ausgeschaltet.
Wird Taster 2 länger betätigt , wird Relais2 ausgeschaltet.
Wird Taster 3 länger betätigt, wird Relais3 ausgeschaltet.



>ISP statt USB meinst Du?
@Paul Baumann (paul_baumann)
Genau, habe mich verschrieben =)


Matthias S. schrieb:
> Solange du mit dem internen RC-Oszillator des Mega8 zurechtkommst,
> sind
> auch PB6 und PB7 als I/O verfügbar.
Also ich benutze, derweil die volle 8Mhz was der Mega8 auch intern 
schwingt, aber habe irgendwo gelesen zu haben, dass die XTAL1 & XTAL2 
PINS nicht als I/O benutzt werden können? Muss ich dafür an die 
Fuse-Bits ran ?

von Dieter F. (Gast)


Lesenswert?

Sercan S. schrieb:
> Eine 5-Stellige 7-Segmentanzeige

74HC595

Beitrag "7-Segment Anzeige"

(Spannend, das Du da schon dabei warst ...)

von Sercan S. (disaster35)


Lesenswert?

> 74HC595
>
> Beitrag "7-Segment Anzeige"
>
> (Spannend, das Du da schon dabei warst ...)

Tut mir leid, aber ich habe mich da auf einfachem multiplexing 
entschieden bevor ich mich an die Schieberegister ranwage, da ich ja 
wenig Erfahrung habe :)

Da ich die einzelnen Segmente dort direkt mit den Strom von den 
jeweiligen PINS der uC angespeist habe, habe ich mich danach mit 
Transistoren als Schalter beschäftigt (Grund war die verschiedene 
Helligkeit bei bspw. Ziffer 1 oder 8 usw.)

Wenn ich durch die Schieberegister so viel I/O's spare, dass ich die 
ISP-PINS nicht nutzen brauche, dann würde ich in den nächsten Tagen 
Tutorials dafür raussuchen und ausprobieren? ?
Insgesamt bräuchte ich ja beim Multiplexen ohne Schieberegister 7+5 = 12 
I/O's . Wie viele I/O-Pin swürde ich durch den Einsatz von 
Schieberegister 'einsparen'?

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Sercan S. schrieb:

> Wie viele I/O-Pin swürde ich durch den Einsatz von
> Schieberegister 'einsparen'?

9

von Wolfgang (Gast)


Lesenswert?

Sercan S. schrieb:
> Wenn ich durch die Schieberegister so viel I/O's spare, dass ich die
> ISP-PINS nicht nutzen brauche, dann würde ich in den nächsten Tagen
> Tutorials dafür raussuchen und ausprobieren? ?

Schon mit einem einzigen 8-Bit Schieberegister kann man 6 IO-Pins 
einsparen. Das lässt sich auch leicht ausrechnen. Das 8-Bit 
Schieberegister besitzt, wie die Bezeichnung es vermuten lässt, 
beispielsweise 8 Ausgänge. Zum Ansteuern braucht man eine Datenleitung 
und eine Taktleitung, also zwei. Die Differenz sind 6 eingesparte IOs.

von Stefan F. (Gast)


Lesenswert?

> Muss ich dafür an die Fuse-Bits ran ?

Nein, eher umgekehrt. Du musst Fuse-Bits ändern, wenn du sie NICHT als 
I/O Pins verwenden willst.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Sercan S. schrieb:
> aber habe irgendwo gelesen zu haben, dass die XTAL1 & XTAL2
> PINS nicht als I/O benutzt werden können?

Kannste mal sehen, was für ein Bockmist im Internet steht. Die einzige 
zuverlässige Quelle ist das Datenblatt, und das sagt eindeutig, das PB6 
und PB7 normale I/Os sind, solange man nicht einer der externen Clock 
Modi benutzt oder Timer 2 per ASSR Register auf TOSC, also auf den 
asynchronen (Uhrenquarz) Modus geschaltet ist. Für deine normale 
Anwendung ohne ext. Clock oder Uhrenquarz sind PB6 und PB7 also frei 
verfügbar.

Stefan U. schrieb:
> Du musst Fuse-Bits ändern, wenn du sie NICHT als
> I/O Pins verwenden willst.

Geh bloss nicht an PC6 ran. Wenn du den Resetpin umfused als I/O, 
sperrst du dich dauerhaft aus. Die einzige Fuse, die für dich 
interessant ist, ist CKDIV8 - und die hast du bereits richtig gesetzt.

: Bearbeitet durch User
von Thomas (kosmos)


Lesenswert?

Ich wurde eine 74HC573 nehmen. Der hat 8 Ein- und 8 Ausgänge du legst 
also deine Ausgänge an dessen Eingänge legst die Daten an klingelst an 
den Steuerleitungen dann wird das Signal übernommen falls gewünscht 
ausgegeben, die Eingänge kann man dann wieder hochohmig schalten und die 
ATMega Ausgänge anderweitig benutzen oder sogar als Eingänge umschalten.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Thomas O. schrieb:
> Ich wurde eine 74HC573 nehmen.

Mit 11 Portpins (8 X Daten und 3 X Latchpuls) und 3 Stück 74HC573 habe 
ich mal den Mega8 auf 24 Ausgänge erweitert.

von Sercan S. (disaster35)


Lesenswert?

>Schon mit einem einzigen 8-Bit Schieberegister kann man 6 IO-Pins
>einsparen.
@Wolfgang (Gast)
Das hört sich ja Interessant an, da ich ja nun weiß, dass ich die XTAL 
PINS ohne Probleme als I/O PINS Verwenden kann, nehme ich erst einmal 
diese PINs. Aber werde mit den 74HC595 bisschen rumexperimentieren, 
damit falls ich in diesem Projekt mal, doch mehr Aus/Eingänge brauche 
mit Schieberegister arbeiten kann.

Habt Ihr evtl. ein Tutorial, welches Ihr mir empfehlen könnt? Ansonsten 
suche ich mir selbst eins.

Matthias S. schrieb:
> Thomas O. schrieb:
>> Ich wurde eine 74HC573 nehmen.
>
> Mit 11 Portpins (8 X Daten und 3 X Latchpuls) und 3 Stück 74HC573 habe
> ich mal den Mega8 auf 24 Ausgänge erweitert.

Ich verstehe, das nicht so ganz... Mega8 hat doch von werk aus "23" 
I/O-PINS?

von Route_66 H. (route_66)


Lesenswert?

Sercan S. schrieb:
>>Schon mit einem einzigen 8-Bit Schieberegister kann man 6 IO-Pins
>>einsparen.

...und kann auch noch den Dezimalpunkt ansteuern...

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Sercan S. schrieb:
>> Mit 11 Portpins (8 X Daten und 3 X Latchpuls) und 3 Stück 74HC573 habe
>> ich mal den Mega8 auf 24 Ausgänge erweitert.
>
> Ich verstehe, das nicht so ganz... Mega8 hat doch von werk aus "23"
> I/O-PINS?

Eben - nur 23. Es ging um ein Bedienpanel eines 4-Kanal Multitrackers 
mit massenweise Displays, LEDs und Buttons, bei dem ich den 
Ablaufprozessor zermanscht hatte. Ausserdem musste das kleine Kerlchen 
auch noch ein Laufwerk steuern und ne serielle Schnittstelle haben. So 
hatte ich also 24 Ausgänge auf den Latches (16 für die Matrix und 8 fürs 
Laufwerk) und dann noch 12 Pins am Controller frei für 
Laufwerks-Eingänge, Panelbuttons, UART und Interrupt Krams vom 
Wheelsensor.

von Sercan S. (disaster35)


Lesenswert?

Ich habe direkt hier im Forum ein Tutorial 
(https://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister) 
darüber gefunden. Dort steht geschrieben, dass der SER Eingang mit den 8 
Bits nacheinander angespeist werden müssen und mit einem 0-1-0 Puls nach 
jedem Bit an SCK wird ein einzelner Bit bestätigt.

Verstehe ich dies so richtig:
Nehmen wir mal an ich würde die Zahl 34567 auf der 7-Segment Anzeigen 
lassen, müsste ich ja A = 1, B = 1, C = 1, D = 1, E = 0, F = 0, G = 1 .
Da ich nun den höchsten Bit als erstes angeben muss, muss ich wie folgt 
vorgehen:


ZIFFER 1 = Ansteuern
SCL = 0 (Daten in Schieberegister löschen)
SCL = 1 (
SER = 1, SCK= 0-1-0     (G=1)
SER = 0, SCK= 0-1-0     (F=0)
         SCK= 0-1-0     (E=0)
SER = 1, SCK= 0-1-0     (D=1)
         SCK= 0-1-0     (C=1)
         SCK= 0-1-0     (B=1)
         SCK= 0-1-0     (A=1)
RCK = 0-1-0

ZIFFER 2 = Ansteuern
SCL = 0 (Daten auf Register löschen)
SCL = 1 (Daten)
......... und so weiter


Dann brauche ich ja 5 PINS zur Ansteuerung der einzelnen Ziffern (wegen 
Multiplexing) und die 4 PINS für den Register liege ich bei 9 PINS. Dann 
würde ich ja aber nur 3 PINS sparen und nicht 6 oder? :hmm:

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Sercan S. schrieb:
> und mit einem 0-1-0 Puls nach
> jedem Bit an SCK wird ein einzelner Bit bestätigt.

Eher mit einem 0-1 Übergang, einer sogen. steigenden Flanke. Ein 1-0 
Übergang (fallende Flanke) wird vom Schieberegister ignoriert.

> Dann brauche ich ja 5 PINS zur Ansteuerung der einzelnen Ziffern
Die Schieberegister können sich alle den Dateneingang teilen, es braucht 
nur jedes seine eigene Taktleitung.
Übrigens nicht die 'Latches' von denen Thomas O. und ich sprachen, 
verwechseln mit Schieberegistern, das sind verschiedene Ansteuerungen.

: Bearbeitet durch User
von Sercan S. (disaster35)


Lesenswert?

Matthias S. schrieb:

> Die Schieberegister können sich alle den Dateneingang teilen, es braucht
> nur jedes seine eigene Taktleitung.
> Übrigens nicht die 'Latches' von denen Thomas O. und ich sprachen,
> verwechseln mit Schieberegistern, das sind verschiedene Ansteuerungen.

Ich glaube wir meinen doch das gleiche?
Dateneingang = Einzelne Segmente
Taktleitung = An/Aus Pin am Segment

Dann kämen wir ja denn noch auf 4 Schieberegister für die Daten + 5 
Taktleitungen auf = 9 PINS. Dann sind es ja im Gegensatz bei nicht 
Benutzung von Schieberegister (7 Segmente + 5 Taktleitung) 12-9 = 3 
eingesparte PINS?

Ich war vorhin auch bei Conrad in der Filiale hatten Sie die 74HC595 
nicht mehr vorrätig. Der Verkäufer meinte auch, dass die auslaufen und 
in der Zentrale nur noch 100 Stk. vorrätig sind. Kann es sein, dass 
Texas Instruments die 74HC595 nicht mehr produziert??

Dieter F. schrieb:
> Generation Internet - Frage absetzen und nach 1 bis 2 Tagen
> schauen,
> welche Antworten kamen? :-)

Ich ignoriere dich nicht mal.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Ich kann mir kaum vorstellen, das die 74HC595 auslaufen. Alleine der 
Großhändler Mouse hat davon über 100.000 Stück vorrätig.

Vielleicht meinte er, dass Conrad sie nicht mehr anbieten wird.

Du kannst alternativ 74HCT595 verwenden, sofern die Versorgungsspannung 
ungefähr 5V ist.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Sercan S. schrieb:
> Dann kämen wir ja denn noch auf 4 Schieberegister für die Daten + 5
> Taktleitungen auf = 9 PINS.

Roll mal in dem o.a. Artikel über Schieberegister weiter runter bis zu 
'Kaskadierung'. Du kannst nahezu beliebig viele SR hintereinander 
schalten und brauchst trotzdem immer nur 4 Pins am Controller (inkl. 
RESET). Das dauert dann alles ein wenig länger und die Hauptaufgabe hat 
dann die Software, aber Pins sinds immer nur 4.

: Bearbeitet durch User
von Route_66 H. (route_66)


Lesenswert?

Matthias S. schrieb:
> Du kannst nahezu beliebig viele SR hintereinander
> schalten und brauchst trotzdem immer nur 4 Pins am Controller (inkl.
> RESET).

Und weil Niemand RESET braucht, genügen immer drei Pins.

von Crazy Harry (crazy_h)


Lesenswert?

Du könntest auch einen Displaytreiber (z.B. MAX7219) verwenden, dann 
mußt dich auch um das Multiplexen nicht kümmern.

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.