Forum: Mikrocontroller und Digitale Elektronik pin mehrfach nutzen: adc und digital out


von peter (Gast)


Lesenswert?

Ich habe einen ATtiny13 und brauche alle PINs für per SPI angebundenes 
Device (MI, MO, Takt, Chipselect, Chipenable) und einen für ADC. Also 6 
Pins, einer zuviel.

Jetzt habe ich mir überlegt, den Pin für den Takt auf SPI mit dem ADC1 
zuammenzulegen. Wenn ich den als ADC1 nutze ist er als Eingang 
beschaltet vom SPI-Slave sollte ja nix kommen da dessen Takteingang eben 
als Eingang beschaltet ist.

Der ADC muss nicht genau sein, misst nur einen Schwellwert.
Das SPI Device hat einen Powerdownmode, das würde ich dann bei 
ADC-Messung in den Schlaf schicken.

Geht das so oder kommt da bei der ADC nur Müll raus?

Im Prinzip könnte ich den Resetpin nehmen aber dann müsste ich umfusen 
und man kann den Chip danach nur noch mit einem HIGH-Voltage-Programmer 
neu flashen, sowas habe ich leider nicht.

von Dussel (Gast)


Lesenswert?

Dem Controller sollte das nichts ausmachen und ich denke, dass der 
gemessene Wert auch brauchbar ist.
Die analoge Spannung müsste aber über einen Widerstand von der 
Taktleitung getrennt sein, damit die Spannung das Taktsignal nicht 
überlagert.

von Falk B. (falk)


Lesenswert?

@ peter (Gast)

>Jetzt habe ich mir überlegt, den Pin für den Takt auf SPI mit dem ADC1
>zuammenzulegen. Wenn ich den als ADC1 nutze ist er als Eingang
>beschaltet vom SPI-Slave sollte ja nix kommen da dessen Takteingang eben
>als Eingang beschaltet ist.

Kann man machen, dabei muss man aber den Ausgang deines Analogwertes 
über einen Widerstand entkoppeln. So 1-10k sollten reichen.

von Oliver R. (orb)


Lesenswert?

Brauchst Du wirklich einen getrennten CS und CE für einen Chip?

von 32 Bit (Gast)


Lesenswert?

Das ist ein typischer Mobby! Ich nehme den kleinsten Controller und 
verränke mich bis ich einen Knoten im Hals habe.

Warum nicht einfach ein IC mit mehr Beinchen?

von c-hater (Gast)


Lesenswert?

peter schrieb:

> Jetzt habe ich mir überlegt, den Pin für den Takt auf SPI mit dem ADC1
> zuammenzulegen. Wenn ich den als ADC1 nutze ist er als Eingang
> beschaltet vom SPI-Slave sollte ja nix kommen da dessen Takteingang eben
> als Eingang beschaltet ist.

> Geht das so

Wie immer bei solchen Sachen kommt es auf's Detail an. Folgende Probleme 
sind denkbar:

1) Einwirkung der Analogspannung auf den Takteingang des SPI-Slaves. 
Takteingänge sind üblicherweise nicht als Trigger ausgelegt, was 
bedeutet, daß Spannungen im "verbotenen" Bereich zumindest Teile der 
Logik des SPI-Slave zu wilden Schwingungen anregen können.
Eine einfache Gegenmaßnahme wäre, dafür zu sorgen, daß die 
Analogspannung immer sicher im Low-Bereich des Clock-Eingangs bleibt, um 
dabei keine ADC-Auflösung einzubüßen, müßte natürlich auch eine 
entsprechend geringe Referenzspannung verwendet werden.

2) Einwirkung des Clock-Ausgangs auf die Quelle der Analogspannung. Da 
du zu dieser Quelle nichts gesagt hast, kann man weder einschätzen, ob 
das ein Problem sein kann noch kann man Vorschläge für Workarounds 
machen.

3) Einwirkung der Quelle der Analogspannung auf das Clock-Signal. Wenn 
die Quelle der Analogspannung niederohmig genug ist, wird sie sogar mit 
Sicherheit das Clocksignal negativ beeinflussen. Abhilfe wäre hier 
natürlich, das Analogsignal hochohmig anzubinden, dem sind aber recht 
enge Grenzen gesetzt, weil die dynamische Impedanz des ADC-Eingangs 
relativ gering ist.

Alles in allem wohl wahrscheinlich irgendwie machbar, aber in jedem Fall 
werden dafür aber recht miese Kompromisse nötig.

Sinnvoller wäre wahrscheinlich, darüber nachzudenken, ob und wie man 
ChipSelect, ChipEnable und SCK des Slaves eventuell mit nur zwei Pins 
bedienen kann.

von peter (Gast)


Lesenswert?

Dussel schrieb:
> Die analoge Spannung müsste aber über einen Widerstand von der
> Taktleitung getrennt sein, damit die Spannung das Taktsignal nicht
> überlagert.

> 2) Einwirkung des Clock-Ausgangs auf die Quelle der Analogspannung. Da
> du zu dieser Quelle nichts gesagt hast, kann man weder einschätzen, ob
> das ein Problem sein kann noch kann man Vorschläge für Workarounds
> machen.
Der ADC misst einfach ob überhaupt eine Spannung vorhanden ist 
(Feuchtemessung), ansonsten ist dort 'offen' also R=inf.
Dummerweise brauche ich das SPI-Device erst wenn eine Spannung anliegt,
R ist dann im Bereich >= 1MOhm, da hängt dann noch ein Pulldown mit 
10..50k oder mehr. Die Werte kann man relativ frei wählen  kann man 
alles über einen Threshhold wieder anpassen, als V_ref habe ich die 
internen 1,1V gewählt.

Als reiner ADC beschaltet funktioniert das bisher bestens.
Ich dachte erst der Tiny reicht weil ich den Reset-Pin mit hinzugezählt 
habe, habe erst später gemerkt, dass der dann Tiny nur noch per 
High-Voltage-Programmer flashbar ist, wenn man den Reset Pin anderweitig 
nutzen will.

Ich dachte auch dass ich ohne MI Leitung auskommen, muss dann aber doch 
ein Register in dem SPI Device zwingend lesen, habe ich in meinem 
bisherigen Code für das SPI-Device in einem andere Projekt übersehen, da 
hatte ich genug Pins.

> 3) Einwirkung der Quelle der Analogspannung auf das Clock-Signal. Wenn
> die Quelle der Analogspannung niederohmig genug ist, wird sie sogar mit
> Sicherheit das Clocksignal negativ beeinflussen. Abhilfe wäre hier
> natürlich, das Analogsignal hochohmig anzubinden, dem sind aber recht
> enge Grenzen gesetzt, weil die dynamische Impedanz des ADC-Eingangs
> relativ gering ist.
Ist hochohmig, s.o.

> Alles in allem wohl wahrscheinlich irgendwie machbar, aber in jedem Fall
> werden dafür aber recht miese Kompromisse nötig.
Meine Bedenken sind eher ob ich das SPI Device schrotte aber da alles 
hochohmig ist müsste es hinhauen.


> Sinnvoller wäre wahrscheinlich, darüber nachzudenken, ob und wie man
> ChipSelect, ChipEnable und SCK des Slaves eventuell mit nur zwei Pins
> bedienen kann.
Ist ein Modul da kann ich nicht viel ändern. ChipEnabled muss eigentlich 
immer Low sein, braucht nur in einem Fall einen µs HIGH-Puls um eine 
Aktion am Modul auszuführen.
Chipselect brauche ich ständig für Konfiguration des SPI Slaves.

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.