Forum: Mikrocontroller und Digitale Elektronik Analog Komparator ATtiny


von karim (Gast)


Lesenswert?

Kann man den Analog Komparator Eingag des Atmel Attiny gleichzeitig als 
ADC und Komparator benutzen? Ich meine, wenn die Spannung eine 
Schwellenspannung überschreitet oder unterschreitet soll interrupt 
ausgelöst werden. Gleichzeitig möchte ich aber außerhalb der 
Schwellenwerte die Spannung am Pin über ADC verarbeiten. ADC und Analog 
Komparator sind auf dem selben Pin.

von köhler (Gast)


Lesenswert?

karim schrieb:
> Kann man den Analog Komparator Eingag des Atmel Attiny gleichzeitig als
> ADC und Komparator benutzen? Ich meine, wenn die Spannung eine

Nein, gleichzeitig geht nicht. Vielleicht schnell im Wechsel aber das 
bei deinem Attiny eventuell auch nicht.

von Thomas E. (thomase)


Lesenswert?

karim schrieb:
> Kann man den Analog Komparator Eingag des Atmel Attiny gleichzeitig als
> ADC und Komparator benutzen?

Was hindert dich daran, das einfach auszuprobieren?

köhler schrieb:
> Nein, gleichzeitig geht nicht.

Woher weisst du das so genau? Den Reset-Pin kann man bei einigen Attiny 
auch per ADC einlesen und daran z.B. mittels Spannungsteiler einen 
Taster abfragen. Warum soll das beim AC-Pin nicht gehen?

mfg.

: Bearbeitet durch User
von köhler (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Taster abfragen. Warum soll das beim AC-Pin nicht gehen?

Ja, AC und ADC auf gleichem Pin könnte gehen. Gebe ich zu :( Aber mehr 
nicht, solange da nichts konkretes bekannt ist. - Gleichzeitigkeit ist 
immer so eine Sache.

von Thomas E. (thomase)


Lesenswert?

köhler schrieb:
> Gleichzeitigkeit ist immer so eine Sache.

Das hat ja nichts mit Gleichzeitigkeit zu tun.

ADC und AC lassen sich gemeinsam unabhängig voneinander betreiben. Beide 
Eingänge sind hochohmig. Was hindert einen also daran, den Multiplexer 
des ADC auf den AC-Pin zu schalten? Aber das steht nicht im Datenblatt. 
Ist auch so nicht vorgesehen. Man muss es einfach nur ausprobieren. Wie 
beim Reset-Pin. Das steht auch nirgendwo geschrieben.

Würde man die Verbindung aussen über 2 Pins herstellen, würde man auch 
nicht an der Funktion zweifeln. Warum sollte man das tun, wenn man sie 
intern herstellt?

Wie sagt Gene Cranz im Film "Apollo 13" so schön: " Es interessiert mich 
nicht, wofür etwas gemacht ist. Ich will wissen, was es kann".

mfg.

: Bearbeitet durch User
von köhler (Gast)


Lesenswert?

karim schrieb:
> Kann man den Analog Komparator Eingag des Atmel Attiny gleichzeitig als
> ADC und Komparator benutzen?

Die Gleichzeitigkeit geht bis maximal Setzen des Interruptflags.

Messen mit ADC auf Resetpin habe ich selbst schon gemacht aber nicht 
gleichzeitig mit Resetzustand.

von Thomas E. (thomase)


Lesenswert?

köhler schrieb:
> Die Gleichzeitigkeit geht bis maximal Setzen des Interruptflags.

Ja. Wenn der Schwellwert erreicht ist, setzt der AC sein Flag und der 
Controller geht in die ISR. Wenn der ADC gerade am messen ist, tut er 
das unabhängig davon weiter und setzt sein Flag, wenn er damit fertig 
ist. Wenn die ISR des AC abgearbeitet ist, springt der Controller in die 
ADC-ISR. Das ist die normalste Sache der Welt, wenn mehrere 
Interruptquellen in Betrieb sind.

köhler schrieb:
> Messen mit ADC auf Resetpin habe ich selbst schon gemacht aber nicht
> gleichzeitig mit Resetzustand.

Das ist ja auch Quatsch. Im Reset passiert ausser Reset gar nichts.

mfg.

von karim (Gast)


Lesenswert?

köhler schrieb:
> karim schrieb:
>> Kann man den Analog Komparator Eingag des Atmel Attiny gleichzeitig als
>> ADC und Komparator benutzen?
>
> Die Gleichzeitigkeit geht bis maximal Setzen des Interruptflags.
>
> Messen mit ADC auf Resetpin habe ich selbst schon gemacht aber nicht
> gleichzeitig mit Resetzustand.

Die Gleichzeitigkeit soll auch bis zum Interuptflag des AC gesetzt wird 
fuktionieren. Ich möchte ja nicht einen zweiten Spannungsteiler für den 
ADC bauen. Außerdem sind alle pins besetzt.

Ein Pin kann man also gleichzeitig im ADC-Register für die ADC-Messung 
und im AC-Register als Analog Komparator konfigurieren.

von c-hater (Gast)


Lesenswert?

karim schrieb:

> Kann man den Analog Komparator Eingag des Atmel Attiny gleichzeitig als
> ADC und Komparator benutzen?

Natürlich. Jedenfalls mindestens immer dann, wenn ein ADCx und ein AINx 
auf demselben Pin liegen. U.u. aber auch noch in mehr Fällen, das hängt 
von den konkreten ADMUX-Optionen ab.

Ob eines von beidem der Fall ist, steht im (Mod: Obszöniät gelöscht) 
Datenblatt des konkreten µC. Welcher das ist, hast du uns in der 
unerfindlichen Weisheit (oder vielmehr deren vollständiger Abwesenheit) 
ja leider nicht mitgeteilt...

: Bearbeitet durch Moderator
von karim (Gast)


Lesenswert?

c-hater schrieb:
> karim schrieb:
>
> Kann man den Analog Komparator Eingag des Atmel Attiny gleichzeitig als
> ADC und Komparator benutzen?
>
> Natürlich. Jedenfalls mindestens immer dann, wenn ein ADCx und ein AINx
> auf demselben Pin liegen. U.u. aber auch noch in mehr Fällen, das hängt
> von den konkreten ADMUX-Optionen ab.
>
> Ob eines von beidem der Fall ist, steht im
.. Datenblatt des
> konkreten µC. Welcher das ist, hast du uns in der unerfindlichen
> Weisheit (oder vielmehr deren vollständiger Abwesenheit) ja leider nicht
> mitgeteilt...

Ich benutze Attiny461. AC und ADC liegen auch auf dem selben Pin. Ich 
probiere jetzt einfach aus. ich hoffe dass es klappt :)

: Bearbeitet durch Moderator
von Hermann (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Den Reset-Pin kann man bei einigen Attiny
> auch per ADC einlesen

Das interessiert mich sehr, da die Pins bei den Tinys ja oft nicht 
reichen. Ich dachte, man könnte den Reset nicht benutzen, solange man 
ihn nicht per Fuse deaktiviert.
Wie ist deine Aussage zu verstehen? Wie du auch sagtest, kann er 
natürlich nicht auf Low gezogen werden. Aber in welchen Bereich ist er 
denn nutzbar? Das Datenblatt des Tiny85 sagt für Reset: High-voltage min 
= 0,9Vcc, und Low darf er nicht sein. D.h. es gibt so gut wie keinen 
Bereich für die Nutzung nach Spezifikation. Ich kann da nur annehmen, 
dass du den praktischen Bereich verwendest - also ausprobieren wann er 
auf Low und damit auf Reset geht. Das ist dann wohl riskant bei 
Temperatur- und Spg-Änderung und erfordert entsprechenden 
Sicherheitsabstand. Den internen Pull-up muss man auch noch 
berücksichtigen.

Wie stellst du es also an mit der praktischen Nutzung des Reset-Pins? 
Und wo sind die Grenzen?

von Paul Baumann (Gast)


Lesenswert?

Hermann schrieb:
> Ich dachte, man könnte den Reset nicht benutzen, solange man
> ihn nicht per Fuse deaktiviert.

So steht es auch im Datenbuch (nein, nicht -blatt -bei 242 Seiten!)

Zitat:
• Port B, Bit 7 – RESET/ dW/ ADC10/ PCINT15
• RESET, Reset pin: When the RSTDISBL Fuse is programmed, this pin 
functions as a normal
I/O pin, and the part will have to rely on Power-on Reset and Brown-out 
Reset as its reset
sources. When the RSTDISBL Fuse is unprogrammed, the reset circuitry is 
connected to the
pin, and the pin can not be used as an I/O pin.
• If PB7 is used as a reset pin, DDB7, PORTB7 and PINB7 will all read 0.

Ende Zitat.

MfG Paul

von Thomas E. (thomase)


Lesenswert?

Hermann schrieb:
> Wie stellst du es also an mit der praktischen Nutzung des Reset-Pins?
> Und wo sind die Grenzen?

Nehmen wir einen Attiny13:
RESET = PB5 = ADC0

Auch wenn es nicht explizit im Datenblatt beschrieben steht:

Der Multiplexer des ADC lässt sich grundsäzlich immer auf diesen Pin 
schalten und misst dann artig die Spannung an diesem. Ist dieser Pin, 
wie es sich gehört, der Reset-Pin, misst er eben die Spannung, die über 
dem Pullup dort anliegt, also normalerweise Vcc.

Senkt man die Spannung mittels passend dimensioniertem Spannungsteiler 
ein wenig ab, misst der ADC eine etwas geringere Spannung, die man dann 
als Tastendruck interpretieren kann.

Dazu reicht eine Absenkung um 10% vollkommen aus. Womit man dann sogar 
noch in der Spezifikation für Reset High bleibt. Allerdings wird auch 
eine wesentlich grössere Absenkung noch nicht als Reset von der 
Resetschaltung des Controllers ausgewertet.

Natürlich ist das keine Option für eine professionelle Anwendung. Aber 
zum Basteln, insbesondere in der Entwicklung, ist das durchaus eine 
Möglichkeit, sich einen weiteren Pin zu "beschaffen". Ohne sich mit dem 
"Wegfusen" des Reset, in Ermangelung eines HV-Programmers, aus dem 
Controller auszusperren.

Es gibt noch andere Sachen, die nicht im Datenblatt stehen, aber 
trotzdem funktionieren. Z.B. einen freilaufenden ADC als Timer 
einzusetzen oder mit dem Aref-Pin einen oder sogar mehrere Taster 
einzulesen.

Und spart euch die Zitate aus dem Datenblatt. Das sind Dinge, die man 
als Hacker-Scheiss oder als besonders pfiffig oder irgendwo dazwischen 
bezeichnen mag. Fakt ist, dass sie funktionieren und den Controller 
nicht kaputt machen.

mfg.

von Hermann (Gast)


Lesenswert?

Paul Baumann schrieb:
> If PB7 is used as a reset pin, DDB7, PORTB7 and PINB7 will all read 0.

Ja, so steht es beim Tiny861. Beim Tiny85 steht es deutlicher: "Pullup 
is
activated and output driver and digital input are deactivated when the 
pin is used as the RESET pin."
Was auch klar ist: Digital I/O geht nicht. Thomas sprach aber von der 
ADC-Nutzung.

Das ist mir aber auch unklar. Vref=1,1V wird man wohl nicht nutzen 
können, da dass vermutlich schon RESET auslöst. Vielleicht geht es mit 
Vref=2,56V und dann evtl. der Bereich von 2,0 bis 2,56V.
Damit könnte man gerade noch einen Schalter abfragen.

von Thomas E. (thomase)


Lesenswert?

Hermann schrieb:
> Das ist mir aber auch unklar. Vref=1,1V wird man wohl nicht nutzen
> können, da dass vermutlich schon RESET auslöst. Vielleicht geht es mit
> Vref=2,56V und dann evtl. der Bereich von 2,0 bis 2,56V.
> Damit könnte man gerade noch einen Schalter abfragen.

Hierbei handelt es sich um eine Messung, bei der keine absoluten Werte, 
sondern Verhältnisse bestimmt werden. Dazu verwendet man üblicherweise 
Vcc als Referenz.

mfg.

von Hermann (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Es gibt noch andere Sachen, die nicht im Datenblatt stehen, aber
> trotzdem funktionieren.

Mein Post kam zu spät.
Ist schon sehr interessant, einen Pin zu gewinnen ist oft wichtig. Also 
Grenzen testen und doch lieber Vref=Vcc.

Aref-Pin nutzen? An welchen µC denkst du da? Wenn es kein Port-Pin ist, 
also ohne zusätzliche Funktionen (z.B. Mega48) - wie kommt man da dran?

Und ADC als Timer? Erzähl mal weiter!!

von Ulrich H. (lurchi)


Lesenswert?

Beim älteren Tiny26 habe ich es mal probiert den AC und ADC auf einem 
Pin (gemeinsame Funktion) zu nutzen - hat irgendwie nicht funktioniert. 
Wenn der ADC aktiv war ging der Komparator nicht. So intensiv habe ich 
es aber nicht durchgespielt - so wichtig war mir die Komparator-funktion 
nicht.

Der ADC im free running Mode als Timer geht übrigens ganz gut, 
insbesondere für eine Software UART. Der Teiler 13 vom ADC sorgt gerade 
dafür um von 2,4,8,16 MHz auf die Standardbaudraten zu kommen.

von Thomas E. (thomase)


Lesenswert?

Hermann schrieb:
> Aref-Pin nutzen? An welchen µC denkst du da? Wenn es kein Port-Pin ist,
> also ohne zusätzliche Funktionen (z.B. Mega48) - wie kommt man da dran?

Beitrag "[Atmega48..328] Ein Pin zu wenig, Taste einlesen?"

Hermann schrieb:
> Und ADC als Timer?

Normalerweise kann man einen Timer natürlich für mehrere Dinge 
verwenden. Aber, wenn es absolut nicht geht und man einen einigermassen 
genauen zyklischen Takt braucht, kann man den ADC laufen lassen und 
betrachtet den Interrupt als Timer-Interrupt. Mit dem ADC-Prescaler kann 
man den sogar noch einstellen. Bei 1MHz und Prescaler 128 kommt man 
dabei mit den normalen 13 ADC Clock Cycles auf ungefähr 600Hz.

Aber auch, wenn man den ADC bestimmungsgemäss verwendet, liefert er 
einen regelmässigen Takt, der z.B. zum Muxen allemal ausreicht. Für eine 
Uhr taugt das natürlich nichts.

mfg.

von Peter D. (peda)


Lesenswert?

Thomas Eckmann schrieb:
> Aber auch, wenn man den ADC bestimmungsgemäss verwendet, liefert er
> einen regelmässigen Takt, der z.B. zum Muxen allemal ausreicht. Für eine
> Uhr taugt das natürlich nichts.

Natürlich geht damit auch eine Uhr. Der CPU-Takt wird exakt geteilt, 
unabhängig von der Interruptausführung.


Bei den ATtiny25..85 und 261..861 ist Reset auch ein Analogeingang.
Mit z.B. 1k gegen VCC und 20k gegen eine Taste, 47k gegen eine andere 
nach GND, lassen sich bequem 2 Tasten einlesen.

: Bearbeitet durch User
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.