Se till att /CS är hög vid tristate (pull upp går ej)

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
adent
Inlägg: 4245
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Se till att /CS är hög vid tristate (pull upp går ej)

Inlägg av adent »

Hejhopp!

Har en AVR med två saker inkopplade på SPI-bussen. Eftersom de två sakerna går på 3.3V och processorn går på 5V
har jag spänningsdelat ner alla utgångar till jord med två motstånd. När AVR:en programladdas via ISP (resetad) tristate:as all IO (right?).

Här vill jag förstås att /CS på de bägge sakerna ska vara hög när jag programladdar och "som vanligt" annars.

Kunde jag göra en koppling som själv kan tri-state:a kunde jag t.ex. se till att om:

reset = låg -> högt på /CS:arna
reset = hög -> tristate på /CS:arna.

Hur löser jag detta enklast och billigast?

MVH: Mikael
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Se till att /CS är hög vid tristate (pull upp går ej).

Inlägg av Swech »

Om du sätter en diod från AVR Reset till CS utgången på AVR så blir denna en 1a då
du resetar AVRen

Så en diod till varje bör funka

Swech
Användarvisningsbild
adent
Inlägg: 4245
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Re: Se till att /CS är hög vid tristate (pull upp går ej)

Inlägg av adent »

Det låter smart, men reset är ju också inverterad på en AVR. Reset är låg när processorn är resetad...
Annars är just diod något jag inte tänkt på :)

MVH: Mikael
gkar
Inlägg: 1585
Blev medlem: 31 oktober 2011, 15:28:29
Ort: Linköping

Re: Se till att /CS är hög vid tristate (pull upp går ej)

Inlägg av gkar »

En fullösning är att sätta en R i serie med MCU signalen och en Schottkydiod och stort pull-up mot 3.3V.
Labbar du bara, kan du använda ESD-skyddsdioderna i 3.3V kretsarna...
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Se till att /CS är hög vid tristate (pull upp går ej)

Inlägg av Swech »

:humm: Eller sätt pull up till 3.3v vid SPI kretsen och en diod mot AVR
Dioden i riktning så att endast "0" sänker pullupen "1" kommer av pullupen

Swech
Användarvisningsbild
exile
EF Sponsor
Inlägg: 496
Blev medlem: 21 oktober 2005, 23:32:07

Re: Se till att /CS är hög vid tristate (pull upp går ej)

Inlägg av exile »

Annars är en FET med två motstånd ganska vanlig som "nivå omvandlare".

Exempel: Level shifting techniques in I2C-bus design

Man kan även använda en vanlig transistor av NPN typ
exempel:
avr ut till E på NPN
3.3volt till motstånd till B på NPN
3.3volt till motstånd till C på NPN
och C på NPN ut till den önskade kretsen.
Användarvisningsbild
adent
Inlägg: 4245
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Re: Se till att /CS är hög vid tristate (pull upp går ej)

Inlägg av adent »

Tack för svaren!

Men shottkydioden blir nog klart enklast! (misstänker att mina programladdningar har pajjat en SPI-accelerometer genom
att det av misstag blivit skrivningar till reserverade register i den). Den funkar men värdena är helknasiga.

http://www.hobbytronics.co.uk/schottky- ... conversion

MVH: Mikael
Skriv svar