Pull down weerstand microchip

Ik gebruik de PIC16LF1847 (3V3 voeding). De 6 B-poorten kunnen elk apart geprogrammeerd worden als IOC (Interrupt-on-change). Ik heb b.v. een interrupt geprogrammeerd voor een opgaande puls op B6. Daarnaast gebruik ik B5 ook als een normale ingang, maar niet als interrupt. Beide ingangen heb ik voorzien van een pull-down weerstand van 10k. De interrupt treedt nu op als B6 aan de voedingsspanning wordt gelegd. Maar ook als B5 aan de voedingsspanning wordt gelegd, wat natuurlijk niet de bedoeling is.
Ik vond experimenteel dat verlaging van de pull-down weerstand naar 1k de werking verbeterde, maar nog niet onder alle omstandigheden. Een goede werking werd pas gevonden als parallel aan de 1k weerstand ook een 1nF condensator werd geplaatst.
Kan iemand mij vertellen (misschien ook op theoretische basis) wat de beste oplossing is?

Vast bedankt

Jan Lichtenbelt

De datasheet is hier te downloaden:
http://ww1.microchip.com/downloads/en/DeviceDoc/40001453F.pdf

Peter_dtn

Golden Member

Misschien dat de bijzonder steile flanken die ontstaan als je met een schakelaar een I/O pin aan Vcc of Gnd hangt het probleem veroorzaken. Plaats eens een weerstand in serie met de I/O pin, de ingangscapaciteit in combinatie met die weerstand zal de flanken trager maken.

Arco

Special Member

Zou gewoon moeten werken. Heb je de interne pull-ups wel uitgezet? (staan default aan)
Als je in en outputs gebruikt op portb, dan wel PORTB gebruiken voor inputs, en LATB voor outputs. (anders kun je ook onvoorspelbare resultaten krijgen)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Lambiek

Special Member

Moet gewoon werken, laat eens een stukje code zien.

Als je haar maar goed zit, GROETEN LAMBIEK.

Beste mensen

Ik gebruik Flowcode 7 om deze chip te programmeren. Daarin wordt automatisch betreffende pinnen als "input" pin gemaakt (en naar ik aanneem ook de inwendige weerstanden aangepast, maar daar weet ik het fijne niet van).
Op zich heeft deze software is al (lang) bewezen. Dus daar ligt het niet aan. Zo heb ik de schakeling ook goed aan het werk gekregen. Mijn vraag is wat is de beste pull-down weerstand (en condensator)?

Groetjes

Jan

buckfast_beekeeper

Golden Member

Hoogstwaarschijnlijk zet flowcode de pullup aan zodra je de pin als ingang kiest. Stel de vraag eens op het flow code forum. Daar zijn de makers ook actief. Ik weet niet of je hier echt veel gebruikers gaat vinden. C en assembler zijn wat populairder.

Van Lambiek wordt goede geuze gemaakt.

Pullups of niet, het probleem lijkt capacitieve koppeling te zijn tussen RB5 en RB6. Dat moet je zien op te lossen.

Mijn echte naam: Joris | Mijn elektronica website: Fuzzcraft.com
Arco

Special Member

Als de pinnen pull-up en pull-down hebben, dan zweeft de pin ergens in niemandsland. Geringste pulsje is genoeg om hem te togglen...
Ik neem aan dat de compiler de pull-ups in default staat laat. En voor deze pic is dat 'on'. (bij oudere pics is dat meestal 'off')
PortB is een TTL poort, dus >0.8v is al genoeg om ellende te veroorzaken)
De interne pull-up is ~100uA (dus zo'n 33k bij 3.3v). Als de externe pull-down 10k is, zweeft de pin op 0.76v, bijna exact op de 0 bovengrens...
Even het WPUB register op 0x00 zetten...

Op zich heeft deze software is al (lang) bewezen. Dus daar ligt het niet aan.

De software werkt niet goed, want pinnen naast elkaar op dezelfde poort mogen elkaar niet beinvloeden.

[Bericht gewijzigd door Arco op zaterdag 2 december 2017 16:32:15 (11%)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Beste Arco

Pinnen naast elkaar zouden elkaar niet mogen beïnvloeden. Maar elke GND is niet ideaal en heeft een bepaalde weerstand. Kunnen capacitatieve invloeden van invloed zijn?

Groetjes

Jan

Heb je de voeding van de PIC goed ontkoppeld?

Arco

Special Member

Heb je nu de pull-ups al uitgezet? (anders werkt 't zeker niet goed...)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Beste Zonnepaneeltje en Arco

De microchip is direct (aan de onderzijde) tussen V+ en GND ontkoppeld met 100nF. Korter kan niet.

De pull-up zijn uitgeschakeld, anders kreeg ik nooit de schakeling aan het werk (met de condensator parallel aan de pull-down weerstand)

Groetjes

Jan

Arco

Special Member

De pull-up zijn uitgeschakeld, anders kreeg ik nooit de schakeling aan het werk

Hoezo niet? Zoals gezegd zweven de poorten dan ergens op de grens van '1' en '0', dus kan het net goed gaan. (maar heel onbetrouwbaar)
Als je WPUB niet expliciet '0' hebt gemaakt, staan ze waarschijnlijk gewoon aan...

[Bericht gewijzigd door Arco op zondag 3 december 2017 14:59:53 (15%)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Beste Arco

Ik ga het uitzoeken. Maar dat duurt even.

Groetjes

Jan

Peter_dtn

Golden Member

Vertel nog even hoe je de pin hoog maakt, schakelaar of logic driver..

Ik gok met een schakelaar in dat geval maak je een bijzonder hoge dv/dt, door het plaatsen van de condensator maak je de dt langer en dan wordt het een stuk vriendelijker voor de IOpin.

Probeer eens een weerstand van 1k in serie, tussen de pulldown en de chip, een kleine condensator (plus de serieweerstand) op de ingang is ook niet verkeerd, je houdt er een hoop rommel mee van de ingang ingeval van langere aansluitdraden.

Als je het toch met logic doet is dit niet van toepassing.

Arco

Special Member

Ik ga het uitzoeken. Maar dat duurt even.

't Is geen rocket science... :) Je hoeft alleen WPUB = 0x00 toe te voegen...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Beste mensen

Microchip start met alle I/O poorten als een Input- en digitale poort. Ook meet ik aan de ingang met de externe pull-dow weerstand een spanning van 0 Volt.

Intussen doet de schakeling het wel weer zoals het zou moeten. Niet geheel duidelijk waarom.

Maar iedereen die aan de discussie heeft deelgenomen: Heel hartelijk dank.

Groetjes

Jan

Arco

Special Member

Je zult toch wel wat veranderd hebben, een logisch schakeling doet niets uit eigen beweging... ;)
(ik zou toch niet rusten voor ik wist wat er fout zit. Een logische schakeling die op eigen houtje dingen doet is niet acceptabel...)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Dat noemen ze kunstmatige intelligentie

Just find out what you like and let it kill you
Arco

Special Member

Of 'fuzzy logic'... ;)
Heb nog de Borland Turbo Prolog compiler liggen; een 'Artificial Intelligence' compiler. Is nooit een succes geworden...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Misschien heb je je bedrading verlegd en is de capacitieve koppeling tussen de pinnen nu weg.

Mijn echte naam: Joris | Mijn elektronica website: Fuzzcraft.com
Lambiek

Special Member

Als je haar maar goed zit, GROETEN LAMBIEK.
buckfast_beekeeper

Golden Member

De glazen bol een keer uit de kast gehaald en die heeft eens met google een woordje gewisseld.

Resultaat deze discussie op het Matrix/flowcode forum.

Wat ik er uit opmaak is dat de pull-up standaard worden aan gezet zodra de ingang wordt aan gezet. Uit zetten doe je blijkbaar met een stukje c-code in de flowchart te plakken.

Van Lambiek wordt goede geuze gemaakt.
Lambiek

Special Member

Je link doet het niet hier.

Als je haar maar goed zit, GROETEN LAMBIEK.
Arco

Special Member

Wat ik er uit opmaak is dat de pull-up standaard worden aan gezet zodra de ingang wordt aan gezet.

Default is elke pin ingang met pull-up, die worden niet 'aangezet'. (datasheet...)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com