Arduino och 4*7 segment display
Re: Arduino och 4*7 segment display
> Exakt vad menar ni med öppna ingångar?
"Open CMOS inputs" i Google ger en hel del träffar, t.ex :
http://www.elektor.com/magazines/2007/m ... 1044.lynkx
http://www.semicon.toshiba.co.jp/eng/pr ... wer08.html
http://www.elektronikforumet.com/forum/ ... 6&start=45
> Jag har inga ingångar i min kod
Nej, men det är ointressant.
Frågan är om *processorn* har några öppna ingångar.
Notera att det normala är att alla I/O pinnar är just ingångar
efter en reset. Sedan är det upp till utvecklaren att "åtgärda" det.
Du har två sätt att fixa det.
1. Antingan ansluter du alla oanvända ingångar till något (+5V eller GND).
2. Du programmerar alla oanvända pinnar till att vara utgångar.
> är [....] en öppen ingång ?
Det du gav som exempel är väl *ut* -gångar ?
En utgång kan aldrig vara en ingång, öppen eller inte.
Eller missförstog jag något där ?
"Open CMOS inputs" i Google ger en hel del träffar, t.ex :
http://www.elektor.com/magazines/2007/m ... 1044.lynkx
http://www.semicon.toshiba.co.jp/eng/pr ... wer08.html
http://www.elektronikforumet.com/forum/ ... 6&start=45
> Jag har inga ingångar i min kod
Nej, men det är ointressant.
Frågan är om *processorn* har några öppna ingångar.
Notera att det normala är att alla I/O pinnar är just ingångar
efter en reset. Sedan är det upp till utvecklaren att "åtgärda" det.
Du har två sätt att fixa det.
1. Antingan ansluter du alla oanvända ingångar till något (+5V eller GND).
2. Du programmerar alla oanvända pinnar till att vara utgångar.
> är [....] en öppen ingång ?
Det du gav som exempel är väl *ut* -gångar ?
En utgång kan aldrig vara en ingång, öppen eller inte.
Eller missförstog jag något där ?
Re: Arduino och 4*7 segment display
Hej vfr!
Jag använder 12 pinnar av 46 möjliga
Måste jag då göra något med de andra?
I alla de sketcher jag kollat på är det bara aktuella pinnar som används som deklareras in eller ut eller vad man nu gör med dem.
De resterande ignoreras helt - växlar dom fram och tillbaka då med?
MVH - UndCon
Jag använder 12 pinnar av 46 möjliga
Måste jag då göra något med de andra?
I alla de sketcher jag kollat på är det bara aktuella pinnar som används som deklareras in eller ut eller vad man nu gör med dem.
De resterande ignoreras helt - växlar dom fram och tillbaka då med?
MVH - UndCon
Re: Arduino och 4*7 segment display
Det beror mycket på hur Arduinons programvara/utvecklingsmiljö hanterar det.
Kolla lite i dokumentationen och se om det står något om det.
> Jag använder 12 pinnar av 46 möjliga
> Måste jag då göra något med de andra?
Du har två sätt att fixa det (som jag skrev nyss):
1. Antingan ansluter du alla oanvända ingångar till något (+5V eller GND).
2. Du programmerar alla oanvända pinnar till att vara utgångar.
Plus:
3. Sätt på "internal pullups" på en oanvända pinnarna.
Vad jag har sett just nu av Arduino dokumentionen så är oanvända pinnar
automatiskt ingångar. Se t.ex : http://arduino.cc/en/Tutorial/DigitalPins.
Man kan få intryck av Arduino dokumentationen och forum att detta inte är
ett problem, det tycker jag är att ge fel budskap. Öppna CMOS ingångar är
alltid ett potentiellt problem som ska åtgärdas.
EDIT:
*OCH*, du har ju faktiskt själv visat och bekrivit i ett tidigare inlägg
att detta *är* ett problem...
Kolla lite i dokumentationen och se om det står något om det.
> Jag använder 12 pinnar av 46 möjliga
> Måste jag då göra något med de andra?
Du har två sätt att fixa det (som jag skrev nyss):
1. Antingan ansluter du alla oanvända ingångar till något (+5V eller GND).
2. Du programmerar alla oanvända pinnar till att vara utgångar.
Plus:
3. Sätt på "internal pullups" på en oanvända pinnarna.
Vad jag har sett just nu av Arduino dokumentionen så är oanvända pinnar
automatiskt ingångar. Se t.ex : http://arduino.cc/en/Tutorial/DigitalPins.
Man kan få intryck av Arduino dokumentationen och forum att detta inte är
ett problem, det tycker jag är att ge fel budskap. Öppna CMOS ingångar är
alltid ett potentiellt problem som ska åtgärdas.
EDIT:
*OCH*, du har ju faktiskt själv visat och bekrivit i ett tidigare inlägg
att detta *är* ett problem...
Re: Arduino och 4*7 segment display
Det stämmer - det tycks i detta fallet vara ett problem.
Nu vet jag vad det kan bero på också - Jag skall testa mer i helgen.
//UndCon
Nu vet jag vad det kan bero på också - Jag skall testa mer i helgen.

//UndCon
Re: Arduino och 4*7 segment display
Japp, det är alltid en bra strategi att försöka undvika sådant
som utgöra onödiga osäkerheter. Även om det kanske visar
sig att det inte var huvudorsaken till de problem man ser, så
blir det i alla fall en osäkerhet mindre att bry sig om...
Jag kan delvis förstå att man från Arduino's håll vill försöka
göra detta mindre än vad kanske igentligen är, det är ju
tanken att Arduino ska vara väldigt enkel och då undviker
man tråkigheter om man kan. Ju mer man måste hantera
en Arduino som vilken annan AVR som helst, ju mindre blir
fördelen med Arduino...
> Jag skall testa mer i helgen.
Japp, *nu* börjar snart uppladdningen inför semin...
som utgöra onödiga osäkerheter. Även om det kanske visar
sig att det inte var huvudorsaken till de problem man ser, så
blir det i alla fall en osäkerhet mindre att bry sig om...

Jag kan delvis förstå att man från Arduino's håll vill försöka
göra detta mindre än vad kanske igentligen är, det är ju
tanken att Arduino ska vara väldigt enkel och då undviker
man tråkigheter om man kan. Ju mer man måste hantera
en Arduino som vilken annan AVR som helst, ju mindre blir
fördelen med Arduino...

> Jag skall testa mer i helgen.
Japp, *nu* börjar snart uppladdningen inför semin...

Re: Arduino och 4*7 segment display
fast jag protesterar lite mot resonemanget.
de ingångar på processorn som inte används är skyddade med dioder mot V+ och GND och så länge det inte finns något program som läser av dessa pinnar bör de ej heller påverka processorns beteende. Det är fortfarande olämpligt att lämna dessa öppna, men det borde inte påverka resultatet som du fick på displayen.
Kan det vara någon pinne på displayen som är öppen (dvs inte ansluten till något) ?
Jag spekulerade också i att du kan ha anslutit displayen till en pinne som du *tror* är en utgång, men som är en ingång. När du skickar data till denna pinne så påverkas pinnen (pga att det interna pull-up motståndet aktiveras eller avaktiveras) och på så vis kan man få intrycket att pinnen är en fungerande utgång. Men då den egentligen är en ingång så kan vad som helst hända med signalen.
Så kolla att de pinnar du styr displayen med verkligen är programmerade som utgångar.
Bara för att man skriverdigitalWrite(segment_A, 1); så behöver inte det betyda att pinnen är en utgång. (Det beror på hur mycket kontroll Arduino har på det).
de ingångar på processorn som inte används är skyddade med dioder mot V+ och GND och så länge det inte finns något program som läser av dessa pinnar bör de ej heller påverka processorns beteende. Det är fortfarande olämpligt att lämna dessa öppna, men det borde inte påverka resultatet som du fick på displayen.
Kan det vara någon pinne på displayen som är öppen (dvs inte ansluten till något) ?
Jag spekulerade också i att du kan ha anslutit displayen till en pinne som du *tror* är en utgång, men som är en ingång. När du skickar data till denna pinne så påverkas pinnen (pga att det interna pull-up motståndet aktiveras eller avaktiveras) och på så vis kan man få intrycket att pinnen är en fungerande utgång. Men då den egentligen är en ingång så kan vad som helst hända med signalen.
Så kolla att de pinnar du styr displayen med verkligen är programmerade som utgångar.
Bara för att man skriverdigitalWrite(segment_A, 1); så behöver inte det betyda att pinnen är en utgång. (Det beror på hur mycket kontroll Arduino har på det).
Re: Arduino och 4*7 segment display
> fast jag protesterar lite mot resonemanget.
Vilket del av resonemanget ?
Att det alltid är bra att utesluta osäkerheter ?
Eller att "öppna ingångar" *kan* vara ett problem över huvudtaget ?
För att ta reda på den senare behöver man fixa det första.
Vilket del av resonemanget ?
Att det alltid är bra att utesluta osäkerheter ?
Eller att "öppna ingångar" *kan* vara ett problem över huvudtaget ?
För att ta reda på den senare behöver man fixa det första.
Re: Arduino och 4*7 segment display
...resonemanget att oanvända pinnar på en AVR skulle vara orsaken till att processorn skulle skicka ut fel information på en utgång. Annars är det helt rätt att man bör undvika öppna ingångar. Hade det varit en "aktiv" ingång vore det ju en annan sak.
Re: Arduino och 4*7 segment display
Oanslutna pinnar tas även upp i databladet. Där har de andra argument till att man bör låta dem ha en definierad nivå. T.ex. ur mega164P-familjen:
Unconnected Pins
If some pins are unused, it is recommended to ensure that these pins have a defined level. Even
though most of the digital inputs are disabled in the deep sleep modes as described above, floating
inputs should be avoided to reduce current consumption in all other modes where the digital
inputs are enabled (Reset, Active mode and Idle mode).
The simplest method to ensure a defined level of an unused pin, is to enable the internal pull-up.
In this case, the pull-up will be disabled during reset. If low power consumption during reset is
important, it is recommended to use an external pull-up or pull-down. Connecting unused pins
directly to VCC or GND is not recommended, since this may cause excessive currents if the pin is
accidentally configured as an output.
Re: Arduino och 4*7 segment display
Många ord för att säga "lämna inte ingångar öppna"... 
Och, som sagt, en annan enkel lösning som, inte kräver något annat
än lite extra kod, är att sätta oanvända pinnar som utgångar.
Hur som helst, det är väl ganska klart nu att man i alla fall inte
bara ska strunta i det helt. Sen så får man välja den lösning
som man själv tycker fungerar bäst i det aktuella fallet.

Och, som sagt, en annan enkel lösning som, inte kräver något annat
än lite extra kod, är att sätta oanvända pinnar som utgångar.
Hur som helst, det är väl ganska klart nu att man i alla fall inte
bara ska strunta i det helt. Sen så får man välja den lösning
som man själv tycker fungerar bäst i det aktuella fallet.
Re: Arduino och 4*7 segment display
Jo. Men enda argumentet de ger är att det kan ge ökad strömförbrukning av att lämna dem öppna. Att det skulle kunna störa ut andra utgångar så till den grad att de ger fel logisk nivå säger de inget om. Det har jag inte sett skrivet någon annan stans heller. Eller sett skymten av själv, trots att jag så gott som alltid har ett gäng öppna ingångar (mest för hobbybruk. Hade jag sålt grejjor hade jag nog konfigurerat dem som ingångar med intern pullup eller extern om man kör sleep-mode. Enligt rekomendationen alltså.).
Men rekomendationerna, med strömförbruknings- och störningsargument, tycks variera. Så här säger de i ST's officiella exempel till STM32 value line:
Men rekomendationerna, med strömförbruknings- och störningsargument, tycks variera. Så här säger de i ST's officiella exempel till STM32 value line:
/* Configure all unused GPIO port pins in Analog Input mode (floating input
trigger OFF), this will reduce the power consumption and increase the device
immunity against EMI/EMC */