www.mikrocontroller.net

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


Autor: skibby (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Manu Al (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RTFM

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: MarioT (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan Dürer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan Dürer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte sie als dig. Ausgang nutzen!

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan Dürer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, Danke!

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

Danke!! :)

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.