Forum: Mikrocontroller und Digitale Elektronik ATTINY13 - Pinansteuerung


von _elko_ (Gast)


Lesenswert?

Moin.

Ich bin momentan bei der Hardwareauswahl für ein kleines Projekt was ich 
mir vorgenommen habe.

Und zwar möchte ich EINEN Pinchange Interrupt auswerten. Im Interrupt 
wollte ich gern abfragen ob der Pin einen 0->1 oder einen 1->0 wechsel 
gemacht hat, und das ganze dann im Hauptprogramm auswerten.

Je nachdem welcher Zustandswechsel stattgefunden hat soll ein anderer 
Pin (beispielsweise PB2 oder 3) auf High bzw. Low gesetzt werden.

Klingt ein bisschen wirr, aber ich denke man kann es verstehen.


Wie ich das ganze umsetze ist mir vom Prinzip her klar, ich habe nur 
kleinere Fragen:

Ich benutze 3 Pins für mein Programm. Via DDR konfigurier ich mir einen 
als eingang (für den PCINT) und die anderen beiden als Ausgang.

- Was mach ich (abgesehen von VCC und GND) mit den anderen Pins?

- Der ResetN-Pin oder auch PB5 oder auch ADC0 oder.. oder .. oder .. 
den möchte ich gern Dauerhaft als ResetN-Pin haben. Ist es möglich das 
festzulegen? Im Datenblatt steht nur "A low level on this pin for longer 
than the minimum pulse length will generate a reset, even if the clock 
is not running." - Aha, schön. Was is, wenn der Pin als Datenpin im 
PORTB gebraucht wird?

Vielen Dank schonmal für die Antworten.

von Thomas E. (thomase)


Lesenswert?

_elko_ schrieb:
> Was mach ich (abgesehen von VCC und GND) mit den anderen Pins?

Gar nichts. Sicherheitshalber kannst du die als Ausgang setzen. Dann 
hast du keine "flatternden" Eingänge. Da du die aber nicht benutzt, tut 
das nichts zur Sache.

_elko_ schrieb:
> Was is, wenn der Pin als Datenpin im PORTB gebraucht wird?
Dann kannst du den Controller nicht mehr im ISP-Mode programmieren.
Also lass' den, wie er ist.

mfg.

von Achim M. (minifloat)


Angehängte Dateien:

Lesenswert?

_elko_ schrieb:
> Der ResetN-Pin oder auch PB5 oder auch ADC0 oder.. oder .. oder ..
> den möchte ich gern Dauerhaft als ResetN-Pin haben.

Hängt von den Fuses ab. Fabrikneu ist das aber der ¬RST Pin. Ist u.A. 
Vorraussetzung zum ISP brennen. Also nicht an der RSTDISBL Fuse 
herumspielen, sonst hilft nur Hi-Voltage-Programmierung.

_elko_ schrieb:
> Was mach ich (abgesehen von VCC und GND) mit den anderen Pins?

Als Ausgänge definieren oder als Eingänge, dann aber die Pullups 
einschalten, dass die Pins nicht "herumfloaten".

_elko_ schrieb:
> Und zwar möchte ich EINEN Pinchange Interrupt auswerten.

Hmpf, nimm doch PB1, der kann als INT0 fungieren, das erspart dir das 
leidige Maskensetzen bei PCINT. Lies doch Seite 47 vom Tiny13A 
Datenblatt(ist angehängt, was für ein Service).

mfg mf
PS:
1
// INT0 aka. PB1 als Pin Change Interrupt nutzen
2
MCUCR |= (0 << ISC01)|(1 << ISC00);

von _elko_ (Gast)


Lesenswert?

Vielen Dank für die schnellen Antworten, ihr habt mir sehr geholfen.

MfG

von Jürgen (Gast)


Lesenswert?

Pinchange IRQ um ein Flag zusetzen, welches in der Main ausgewertet 
wird?! - Wieso dann nicht gleich alles ohne IRQ und Flag in der Main 
machen und direkt auf den Pin beziehen?!

von _elko_ (Gast)


Lesenswert?

Weil ich mir in dem Pinchange event noch was anderes setze.

Und ich will den Pin nicht pollen.

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.