Forum: Compiler & IDEs avr-gcc Tutorial: AD Wert auslesen


von Sebastian Schabbach (Gast)


Lesenswert?

Hallo,

ich habe mir das Tutorial von euch mal angeschaut, weil ich noch
Anfänger bin was das avr-gcc und Mikrocontroller angeht. C mache ich
zwar schon ne ganze Weile, aber das hilft nicht wirklich.

Ich habe auch die Vermutung, mir fehlt einfach die techn. Grundlage...
Ich habe an meinem Mikrocontroller (at90s8535) an Port A 5 Tasten und
einen Poti angeschlossen (das Poti hängt also an Pin 0, 1 und 2, 3-7
ist reserviert für die Tasten). Jetzt habe ich sowohl in der Doku vom
Controller als auch im Tutorial 3 Informationen erhalten: Ich brauche
in meinem Fall das DRR Register von Port A und muss da um werte vom
Poti zu erhalten doch die ersten 3 Bits auf 0 für Eingang stellen oder?


Soweit, sogut. Was ist mit den anderen beiden gibt ja noch PORTA und
PINA, wobei ich in der Dokumentation gelesen habe, dass PINx gar kein
Register sein soll, als initialwert steht da auch N/A.... Und zu PORTx
haben ich die Information erhalten, dass dies Pullup-Widerstände
aktiviert oder deaktiviert.

Aber was heisst das auf deutsch? Ich weiss nicht einmal, ob das hier
das richtige forum dazu ist meine Frage ist eher hardwarespezifisch
oder? Kann vielleicht irgendein Mod die Frage wenn sie falsch ist
verschieben?


Gruß Sebastian

von Jens123 (Gast)


Lesenswert?

wie willst du eine Spannung messen, wenn du alle 3 anschluesse vom POTI
auf eingang setzt??

wenn kannst du ein PIN auf Masse, ein PIN auf Vcc und den schleifer auf
den Port setzen, wo die AD Wandler liegen

schau mal auf http://mc-project.de/

von Jörg Wunsch (Gast)


Lesenswert?

Erstens: für den größten Teil deiner Fragen (besonders zur Logik der
PINx, PORTx und DDRx-Register) liest du am besten das Datenblatt
gründlich.  Das ist gut dokumentiert, sowohl verbal als auch mit einem
Pseudo-Schaltbild.

Zweitens: warum willst du ein Poti an drei Anschlüsse des
Controllers klemmen bzw. was erwartest du davon?  Vergegenwärtige dir
bitte nochmal die Grundlagen der E-Technik, Kapitel Spannungsteiler.
Das Poti braucht zwei feste Bezugswerte an den Außenklemmen (sinnvoll:
AVcc und GND, wobei AVcc und Aref für diesen einfachen Fall gekoppelt
werden) -- die musst du auch nicht wieder einlesen.  Du brauchst also
genau einen Eingang mit AD-Wandler.

Außerdem nochmal siehe Datenblatt: wenn man den AD-Wandler benutzt,
sollte man die restlichen Pins von Port A nach Möglichkeit nicht für
digitale EA belegen, da das die Genauigkeit der Wandlung beeinflussen
kann.  Ist vielleicht im Falle deiner Taster nicht sehr wesentlich,
aber wenn man's vermeiden kann, nimm lieber dafür gleich einen
anderen
Port.

von Sebastian Schabbach (Gast)


Lesenswert?

Naja,

mit der Dokumentation meinte ich eigentlich das Datenblatt des µC....
Den Controller habe ich mir nicht selber gelötet, das hat jemand für
mich erledigt. Ich muss zugeben, dass ich von sowas so gut wie keine
Ahnung habe und das alleine auch gar nicht hinkriegen würde.

Ich habe allerdings den Plan so wie er zusammengelötet ist, beigelegt.
Das Poti ist zwar nicht eingezeichnet, liegt aber bei Analog Digital.


Gruß Sebastian

von Sebastian Schabbach (Gast)


Angehängte Dateien:

Lesenswert?

hier der plan ;)

von Jürgen Schuhmacher (Gast)


Lesenswert?

Mach mal den C4 am Regler zu 1uF. 2x 100n machen es dort auch nicht. Am
Ausgang des Reglers die 1uF und den 100er an das IC.

"liegt aber bei Analog Digital. " WO? - liegt das Poti`?

von Karl Will (Gast)


Lesenswert?

Moin,

das Schaltbild zeigt doch die richtige Beschaltung am Analog Eingang
S21!

GND - PA0 - Vcc

...so wie man es gewoehnt ist. Ich nehme mal an, Dein "Loetkumpel"
hat sich verguckt und S21 an die daneben gezeichneten Eingaenge PA1 und
PA2 gehauen.

Ich hoffe, dass klaert Einiges?!

Gruss Karl

@Juergen, ich stimme Dir voll zu, die Wahl der C's ist mehr als
ungluecklich... ;-)

von Jens123 (Gast)


Lesenswert?

und an den ADC gehoeren keine PULL UP / PULL DOWN Widerstaende

von Sebastian Schabbach (Gast)


Lesenswert?

Naja, ich hatte mich vertan. Es war ne Fehlinformation, das Poti liegt
wirklich nur an Pin A0.

Aber mit dem Zeugs was ihr da erzählt kann ich überhaupt nix
anfangen... Könnt ihr das vielleicht mal so formulieren, dass man es
ohne E-Studium versteht?

von Alex (Gast)


Lesenswert?

Das kann man ohne Studium verstehen, wenn man sich die Mühe gemacht hat,
sich mit der Materie (insbesondere deren Grundlagen!) auseinander zu
setzen.

Für den Anfänger geeignet ist elektronik-kompendium.de und ein gutes
Grundlagenbuch zum Thema elektrische Schaltungstechnik. Falls du nicht
weist, was ein Widerstand ist, dann fang mit einem Grundlagen
Elektrotechnik Buch an.

Anders wird das meiner Meinung nach nichts, es sei denn, du heißt kein
Problem damit, mit Halbwissen zu leben.

Gruß, Alex

von Sebastian Schabbach (Gast)


Lesenswert?

Hallo,

ich weiss durchaus, was ein Widerstand ist. Ich kann auch durchaus
elektrische Schaltungen durchschauen, allerdings nur simple. Ich habe
vor 3 Jahren meinen Physik LK im Abitur abgeschlossen, dort lernt man
eigentlich die Grundlagen. Das meinste, was auf der Seite steht, die du
mir nanntest, ist mir recht klar.

Ich komme auch durchaus mit Halbleiterelementen wie Dioden und
Transistoren zurecht, allerdings habe ich noch nie so Sachen wie Relais
oder Mikrocontroller gemacht. Ich denke einfach, das war ein wenig
provuvierend gemeint, verstehe ich jetzt auch mal so. Ich bemühe mich
in letzter Zeit mich da durchzuackern.

Vielleicht ein paar Statements:

Zitit:
=================================================================
Autor: Jens123
Datum: 28.01.2005 14:19

und an den ADC gehoeren keine PULL UP / PULL DOWN Widerstaende
=================================================================

In meinem Datenblatt und im Tutorial vom avr-gcc steht, dass wenn der
Wert im DDRx register für den entsprechenden Pin an diesem Port auf
Eingang steht (0) entscheidet das Bit im PORTx Register darüber, ob der
Pullupwiderstand aktiviert wird oder nicht (ich nehme an, es gibt dort
einen Internen im µC). Ich hatte nicht vor, einen PullupWiderstand
daran anzuschliessen.

von Alex (Gast)


Lesenswert?

Natürlich war das provozierend gemeint.

Stell dir einen AD-Eingang einfach wie die Messspitze eines Messgerätes
vor (sehr hochohmig). Diesen kannst du direkt dort anschließen, wo du
die Spannung messen möchtest (so diese denn im erforderlichen Bereich
liegt). Ist der Spannung hochfrequentes unerwünschtes Rauschen
überlagert, kann man noch einen Tiefpaß davor schalten. Solcherlei
Schaltungsvorschläge findet man in jedem besseren Datenblatt.

Eine gute Erklärung, was Pull-Ups sind findest du über den erwähnten
Link sowie die angegebene Literatur.

von patric (Gast)


Lesenswert?

> ich weiss durchaus, was ein Widerstand ist. Ich kann auch durchaus
> elektrische Schaltungen durchschauen, allerdings nur simple.

Dann tu das mal bei deinem eigenen Schaltplan und du wirst die
Pulldowns finden.

Falls nicht:

Dein Poti (P1) liegt zwischen VCC und GND mit dem Schleifer auf PA0.
Durch den Pulldown (RN2) wird der Spannungsteiler belastet und die
Ausgangspannung an PA0 ändert sich. Bei deinem Poti ist das noch
relativ egal. Wenn du aber eine analoge Spannung von einem Messgeber
aufnehmen musst wird so dein Messergebnis verfälscht.

         VCC
          +
          |
          |
         .-.
         | |
   P1*x  | |       (x ist die Schleiferstellung 0<x<1)
         '-'
          |
          +----+----- PA0
          |    |
         .-.  .-.
         | |  | |
P1*(1-x) | |  | |100k
         '-'  '-'
          |    |
          |    |
         ===  ===
         GND  GND

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.