Forum: Mikrocontroller und Digitale Elektronik ATMega32L - Welche Ports am besten für Ein-/Ausgänge nutzen?


von skibby (Gast)


Lesenswert?

Hallo!

Bin absoluter µC-Anfänger, habe mich allerdings schon relativ ordentlich 
bei euch hier eingelesen.

Habe ein kleines Projekt, bei dem ich mit einem ATMega32L ein paar 
Verbraucher ein-/ausschalten möchte. Konkret benötige ich einen 
ADC-Eingang, zwei Digitale Eingänge (Taster) und ungefähr 16 Ausgänge.

Zur Programmierung möchte ich meinen AVR ISPMKII nehmen, an den ich 
günstig gekommen bin.

Die Frage, die ich mir jetzt stelle ist, welche Ports ich am besten für 
meine Digitalen Ein- bzw Ausgänge nehme. Mir ist klar, dass wohl alle 
der 32 Ports (PORTAx - PORTDx) dafür herhalten könnten. Jedoch weiß ich 
wegen mangelnder Praxiserfahrung nicht, ob man den ein oder anderen 
Ports bevorzugen/auslassen sollte, weil er z.B. für die Programmierung 
herhalten muss.

Konkret habe ich mir mal die Steckerbelegung des Programmers angesehen 
und festgestellt, dass dieser teilweise an einige der 32 Ports 
angeschlossen wird. Funktioniert die In-System-Programmierung denn auch, 
obwohl eine externe Beschaltung an den Ports hängt?

Vielen Dank im Voraus,
Bernd

von Manu Al (Gast)


Lesenswert?

RTFM

von Karl H. (kbuchegg)


Lesenswert?

Also
Ich würde so vorgehen.
Da du einen ADC Eingang brauchst, würde ich den kompletten Port A für 
die restlichen I/O als Tabuzone deklarieren. Der ADC ist nicht so ganz 
happy damit, wenn sich an seinem Port Dinge abspielen, während er gerade 
arbeitet. Muss nicht sein, also lass ich ihm die Freude und halte Port A 
von allen anderen Dingen frei.

Damit bleiben noch B, C und D

die ISP Signale sind alle am Port B. Wenn ich es mir leisten kann, dann 
lasse ich die 3 Leitungen (MISO, MOSI, SCK) in Ruhe und schalte dort 
keinen Ein/Ausgang drauf. Man kann das zwar machen, muss aber darauf 
aufpassen, dass die dort angeschlossene Hardware nicht Amok läuft, wenn 
der ISP Programmer sein Programm überspielt und die Hardware die Signale 
ebenfalls sieht. Ein paar LED da mit anzuschliessen wäre kein Problem, 
aber da du eh noch genug andere Portpins hast, ist das Thema damit auch 
vom Tisch.

D.h. die restlichen 16 Ausgänge verteilst du auf Port C, D und B und ein 
paar Pins für die 2 Eingäneg finden sich da auch noch leicht.

Wenns geht, lass ich mir die TxD / RxD Anschlüsse frei. Einen MAX232 
temporär anzuklemmen und damit eine Debug-Ausgabe über UART zu haben, 
kann ganz praktisch sein. Auch ein PWM-Ausgang findet oftmals im 
Nachhinein noch seinen Abnehmer. Wenn also kein Mangel herrscht, lass 
ich mir die frei.

Was willst du anschliessen, wenn man fragen darf?

von MarioT (Gast)


Lesenswert?

Manu Al schrieb:
> Jedoch weiß ich
> wegen mangelnder Praxiserfahrung nicht, ob man den ein oder anderen
> Ports bevorzugen/auslassen sollte, weil er z.B. für die Programmierung
> herhalten muss.

Da bist Du nicht alleine, das wissen viele nicht. Es soll Programmierer 
geben die sehen im Tutorial nach.

von spess53 (Gast)


Lesenswert?

Hi

>Habe ein kleines Projekt, bei dem ich mit einem ATMega32L ein paar
>Verbraucher ein-/ausschalten möchte. Konkret benötige ich einen
>ADC-Eingang, zwei Digitale Eingänge (Taster) und ungefähr 16 Ausgänge.

Prinzipiell hast du freie Auswahl. Die analogen Eingänge gehen natürlich 
nur am PortA. Um den PortC voll nutzen zu können musst du JTAG 
ausschalten.

>Konkret habe ich mir mal die Steckerbelegung des Programmers angesehen
>und festgestellt, dass dieser teilweise an einige der 32 Ports
>angeschlossen wird. Funktioniert die In-System-Programmierung denn auch,
>obwohl eine externe Beschaltung an den Ports hängt?

Ja, wenn man die AppNote AVR042 beachtet. Wenn nicht unbedingt 
notwendig,
dann benutze die nur fürs ISP.

MfG Spess

von Stefan Dürer (Gast)


Lesenswert?

Danke für die Antworten!
Eine Frage noch:
Wie sieht es mit den restlichen ADC-Ports denn aus, wenn ich sie nur 
nutzen würde in Subroutinen, in denen der ADC-Wert des einen Ports gar 
nicht genutzt wird? Kann ich sie dann nutzen? Dann arbeiten sie ja nicht 
zeitparallel?!

Danke,
Bernd

von spess53 (Gast)


Lesenswert?

Hi

Der Controller hat einen AD-Wandler der über einen Multiplexer mit 
einem
der Eingänge verbunden wird. Eine gleichzeitige Messung aller Eingänge 
ist nicht möglich.

MfG Spess

von Stefan Dürer (Gast)


Lesenswert?

Ich möchte sie als dig. Ausgang nutzen!

von spess53 (Gast)


Lesenswert?

Hi

>Ich möchte sie als dig. Ausgang nutzen!

Kannst du. Im Interesse der Genauigkeit der ADC-Messung solltest du aber 
Aktivitäten an den Pins während der Messung unterlassen bzw ADC Noise
Canceling verwenden.

MfG Spess

von Stefan Dürer (Gast)


Lesenswert?

Super, Danke!

Während der Nutzung als Dig. Ausgang wird der ADC gar nicht genutzt. 
Komplett anderes Unterprogramm.

Danke!! :)

von spess53 (Gast)


Lesenswert?

Hi

>Während der Nutzung als Dig. Ausgang wird der ADC gar nicht genutzt.
>Komplett anderes Unterprogramm.

Das hängt immer von deinem Programm ab. Es gibt z.B. auch die 
Möglichkeit den ADC durch Auto-Trigger oder timergesteuert im 
Hintergrund laufen zu lassen. Da sind die Verhältnisse nicht mehr so 
überschaubar.

MfG Spess

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.