open drain, vad är det?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
YeaYeah
Inlägg: 15
Blev medlem: 5 december 2008, 22:41:48

open drain, vad är det?

Inlägg av YeaYeah »

Hej alla!

Om man sätter en pinne i mikrokontrollern till input och sedan sätter den till open drain, vad händer då?

Jag vill att en input-pinne ska ha "pull-down"-egenskap eftersom det ska bli avbrott när en switch slår till och kopplar pinnen till 3.3V, men om switchen är "off" ska pinnen ner till 0volt igen. Är open drain bra då?

Tacksam för svar!
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: open drain, vad är det?

Inlägg av sodjan »

En input-pinne har normalt ingen "pull" alls. den bara "känner av".
Det låter som du bara ska ha ett extern pulldpown motstånd...
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: open drain, vad är det?

Inlägg av Micke_s »

Open drain har väl med utgång att göra, borde heta pull-up eller så.
Användarvisningsbild
Rohan
Inlägg: 1063
Blev medlem: 7 april 2004, 08:24:39
Ort: Eksjö, Småland
Kontakt:

Re: open drain, vad är det?

Inlägg av Rohan »

Vilken mikroprocessor gäller det? Jag har använt AVR en del och om det är det så skulle jag ha kunnat hjälpa lite men nu vet jag inte alls... :?
YeaYeah
Inlägg: 15
Blev medlem: 5 december 2008, 22:41:48

Re: open drain, vad är det?

Inlägg av YeaYeah »

Det gäller at91sam7s256.

Ja, input-pinnen ska ju känna av, men jag vill helst att den ska även ha en inbyggd "pull-down".

Så här står det i board.h

/// The pin is controlled by the associated signal of peripheral A.
#define PIO_PERIPH_A 0
/// The pin is controlled by the associated signal of peripheral B.
#define PIO_PERIPH_B 1
/// The pin is an input.
#define PIO_INPUT 2
/// The pin is an output and has a default level of 0.
#define PIO_OUTPUT_0 3
/// The pin is an output and has a default level of 1.
#define PIO_OUTPUT_1 4

/// Default pin configuration (no attribute).
#define PIO_DEFAULT (0 << 0)
/// The internal pin pull-up is active.
#define PIO_PULLUP (1 << 0)
/// The internal glitch filter is active.
#define PIO_DEGLITCH (1 << 1)
/// The pin is open-drain.
#define PIO_OPENDRAIN (1 << 2)

Jag skriver
#define PIN_PUSHBUTTON_3 {1 << 6, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_DEGLITCH | PIO_OPENDRAIN}

Frågan är om det ska stå PIO_OPENDRAIN eller PIO_DEFAULT ?

Tack för svaren! :)
bearing
Inlägg: 11675
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: open drain, vad är det?

Inlägg av bearing »

Open drain är en form av utgång och kommer inte ge den funktion du önskar. Som sagts verkar det som att du ska använda pull down.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: open drain, vad är det?

Inlägg av sodjan »

> men jag vill helst att den ska även ha en inbyggd "pull-down"

Har jag aldrig hört talas om.
Inbyggd pull-up är däremot vanligt, p.g.a av att det
är normalt att en "switch-ingång" kortsluter till jord.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: open drain, vad är det?

Inlägg av Micke_s »

På PIC och AVR så blir pull-down svårt, stm32 har pull-down däremot sodjan
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: open drain, vad är det?

Inlägg av sodjan »

Tja, om man behöver det (men det är nog inte lika vanligt)
så är det ju inget som hindrar att man monterar externa pull-down...
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46949
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: open drain, vad är det?

Inlägg av TomasL »

Open drain är samma som öppen kollektor, dvs utgången är konfigurerad för att dra mot jord.
När den är 0 så flyter den, och när den är 1 så drar den ned utgångspinnen mot jord.

Elektriskt är utgångstransistorns drain(kollektor) kopplad direkt till pinnen utan några motstånd till Vcc.

Används vanligtvis när man vill direktdriva en LED, relä eller nått annat, som då drar resp tänds när utgången ettställs.
En OD (OC) utgång kan aldrig ge nån utgångsspänning, vilket är viktigt att tänka på om man skall driva externa drivkretsar, i det läget måste man lägga till ett externt Pull-up motstånd, vilket då gör att ugången blir inverterad, dvs när utgången ligger på Vcc är den 0 och när utgången ligger på GND är den 1.

Detta har ingenting med ingångsfunktionen att göra.

Om jag fattat det hela rätt, så vill du ha funktionen.
Brytare Öppen = Vcc på pinnen.
Brytare sluten = Gnd på pinnen.

Det är lite svårt att förstå vad du menar eftersom du pratar om en "tillslagen brytare är ett avbrott"


Brytaren skall alltså kortsluta pinnen mot jord, då måste du ha Pull-up på ingången, antingen interna om det finns eller ett externt motstånd
Nerre
Inlägg: 27205
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: open drain, vad är det?

Inlägg av Nerre »

TomasL skrev: Om jag fattat det hela rätt, så vill du ha funktionen.
Brytare Öppen = Vcc på pinnen.
Brytare sluten = Gnd på pinnen.
Som jag fattat honom är det precis tvärtom. Han skriver ju att brytaren är kopplad från +3,3 V, han vill alltså ha pulldown, och hade velat lösa det utan externt motstånd.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46949
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: open drain, vad är det?

Inlägg av TomasL »

eftersom det ska bli avbrott när en switch slår till och kopplar pinnen till 3.3V
Det är lite otydligt
YeaYeah
Inlägg: 15
Blev medlem: 5 december 2008, 22:41:48

Re: open drain, vad är det?

Inlägg av YeaYeah »

Okej, ursäkta jag ska förklara tydligare..

Jag har kopplat 5pinnar till en knappsats med 5knappar utan några externa pull-up eller pull-down. Om man trycker på en knapp fås 3.3Volt på den pinnen som är inkopplad till den knappen. På de pinnar där ingen knapp är nedtryckt kan spänningen vara vad som helst.

Knapp nedtryckt -> 3.3V på den pinnen från spänningsplan
Knapp INTE nedtryckt -> Kan vara vadsomhest, men är iallafall inte ansluten till spänningsplan

Egentligen vill jag ha en pull-down på varsin koppling så att kopplingen inte kan vara vad som helst.

Jag kanske kan sätta pinnen till utgång, försöka dra ner den till noll i mikrokontrollern och sedan kolla om den verkligen gick ner till 0v? Eller riskerar jag att förstöra mikrokontrollern då?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46949
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: open drain, vad är det?

Inlägg av TomasL »

Varför utgång, det fyller ju ingen funktion om du skall läsa av knapparna, du får helt enkelt lägga till ett motstånd mellan knapparna och jord.
YeaYeah
Inlägg: 15
Blev medlem: 5 december 2008, 22:41:48

Re: open drain, vad är det?

Inlägg av YeaYeah »

Jag har inte möjligheten att lägga till ett motstånd...

Om utgång så kan pinnen dras ned till 0V om knapp INTE är nedtryckt.
Skriv svar