Aangezien er wel leuke tools zijn om van je geluidskaart een functiegeneratortje te maken, en deze handig zijn om mee te werken, had ik een idee.
Omdat ik snel even een regelbare blokgolf op een lagere frequentie moest hebben dacht ik gewoon een comparatortje te nemen en deze van 5V voeding te voorzien, - aan de massa en + mijn geluidskaartsignaal. (een een pull-up omdat het open collector type was).
Hieruit kwam een signaal dat goed genoeg was voor mijn doel (onder de examen moet het soms snel gaan ;))

Nu bood ik dit signaal aan aan mijn microcontroller (als interrupt signaal moet het dienen), en ik zie dat het laag spanningsniveau een stuk hoger komt te liggen.(+-4V)

Heb de handel dan maar aan de kant gegooid en ben verder gaan studeren. Waarom werkte dit niet?

euhm ja, ik zal het schema tekenen, maar het is niet meer dan een comparator en een weerstand...
http://img523.imageshack.us/img523/4492/schemaxk7.th.jpg
Hieruit komt dus een blokgolf tussen 0 en 5 volt, dat ging volgens plan.
Waarom gaat de 0V (laag signaal) naar +-4v als ik het signaal op de microcontroller aanleg?
(de 5V blijft gewoon mooi 5V)
(massa's met elkaar verbonden uiteraard)

Type uC en welke instellingen?

Een pic18f4550, is goed ingesteld want als ik gewoon het signaal laag trek door het tegen de massa te houden werkt het wel.

In feite hangt er dus gewoon een transistor tussen GND en de pin. (in de vorm van een comparator + een pull-up)

Op 27 januari 2009 19:45:24 schreef Henry S.:
Type uC en welke instellingen?

Pull ups? Digitale ingangen?

ja, het zijn digitale ingangen.
De interne pull-up is ingesteld en werkt zoals het moet.
De pin is ingesteld om een interrupt te geven bij neergaande flank.

Met een interne pullup is je eigen weerstand niet eens nodig.
De comparator kan minimaal 6mA sinken (typical 16mA). Hoeveel stroom loopt er als je de uC ingang zelf kortsluit? Als dat meer is dan 6mA, dan lukt het misschien niet met deze comparator.

Dat ik de externe pull-up mag weglaten klopt, heb ik ook getest.
Ik ga je tip eens volgen, was ook al mijn idee dat het ergens aan de stroom moest liggen (maar dacht dat als uC input deze nooit zo 'groot' moest kunnen worden).

Bij deze mag hier wel een slotje op.

Je vertelt toch nog wel hoe je onderzoekingen zijn afgelopen?

Op 27 januari 2009 19:50:05 schreef fast4ever:
Een pic18f4550, is goed ingesteld want als ik gewoon het signaal laag trek door het tegen de massa te houden werkt het wel.

Das een heel wat sterkere sink natuurlijk.

Je mag ook de code in de PIC hier even posten.

Op 28 januari 2009 15:21:58 schreef Frederick E. Terman:
Je vertelt toch nog wel hoe je onderzoekingen zijn afgelopen?

morgen mijn laatste examen en dus weer tijd, ga er dan eens aan meten.

Voor de geïnteresseerden: 65mA gemeten wanneer ik hem gewoon kortsluit.

Dan zal ik maar een BC547 of iets dergelijks aansturen met de comparator zodat er zeker die stroom kan vloeien, maakt me uiteindelijk ook niet uit of het op stijgende/dalende klokflank van het signaal is ;)

WAT sluit je dan kort??

Kortsluiten is hier misschien niet helemaal het juiste woord.
Ik houd gewoon de massa aan de juiste pin om die omlaag te trekken en zo een neergaande flank te maken.

Volgens mijn multimeter loopt er dan 65mA naar de ground.

Dus zonder verder ingangscircuit hang je puur een massa aan de PIC, op een pen die als INGANG gedefinieerd staat, en dan loopt er 65mA??? Dat is idioot veel. Geef nou eens wat code, want dit klinkt als een poort die (veel te veel) staat te sourcen.

Het klinkt alsof hij niet als ingang staat.

Bijvoorbeeld, of dat hij reeds uitgefikt is. Hoe het ook is: als je die 65mA lang genoeg laat lopen dan is die PIC sowieso stuk straks, dus probeer maar niet keihard te sturen met een tor.

Vond het zelf ook veel (daarom dat ik dacht dat het met die comparator moest lukken), hier een stukje instellingen die ik in mijn initialisatie routine doe:


//ports
TRISD = 0x00;  //mijn outputs
TRISB = 0xFF;  //ik gebruik eigenlijk maar eentje als input, de rest hangt gewoon open
//interrupts
INTCON = 0b01010000;
INTCON2 = 0b01010101;
INTCON3 = 0b11000000;
PIE1bits.TMR1IE = 1;

de datasheet zegt:
PORTB is an 8-bit wide, bidirectional port. The corresponding
data direction register is TRISB. Setting a
TRISB bit (= 1) will make the corresponding PORTB
pin an input (i.e., put the corresponding output driver in
a high-impedance mode).

en:
Each of the PORTB pins has a weak internal pull-up. A
single control bit can turn on all the pull-ups. This is
performed by clearing bit RBPU (INTCON2<7>).

Waar ga ik dan de mist in?

Die poort hangt niet toevallig nog aan je programmer vast?

Draait je programma wel? (Blink-a-led erbij in zetten..)

Programmer is losgekoppeld (werk met USB bootloader).
Programma draait en interrupt routine werkt ook naar behoren (ook ledje laten toggelen).

Ik snap het gewoon niet meer...al de dingen die iedereen hier zei had ikzelf ook als oorzaken gezien, en reeds uitgesloten. Daarom dat ik 65mA al normaal begon te vinden :S

Opgeblazen kan die poort normaal niet zijn, voor de rest is ze niet gebruikt geweest als input of output. Weet je, ik ga anders eens proberen om de interrupt op een andere pin te nemen, en te kijken wat die doet.

Ik zie bij een snelle blik nog wat andere periferie gecombineerd met port B, (analoog/SDA/SCK/SCL/VMO, timerspul, bijvoorbeeld een PWM uitgang): dat allemaal uit staan?

hmm, analoog, heb nog wat aan de code liggen kloten, kan zijn dat dat niet goed staat gelijk het er nu inzit, ik ga morgen de nieuwste code compileren en erop zetten, nu geen tijd, merci voor de tip!

Die analoge zou kunnen zorgen dat je je ingang niet goed leest, maar of die voor een 65mA stroom kan zorgen betwijfel ik te zeerste. Een actief sturende PWM-uitgang nou bijvoorbeeld weer wel.

ik ben het slachtoffer geworden van de copy-paste strategie,

ADCON1 = 0b00001101; 

was niet mee gekopieerd uit de grote file. (wilde de apparte onderdelen eerst onafhankelijk testen)

Maar, nog steeds dezelfde stroom gemeten... PWM staat niet aan/gebruik ik ook niet.

Poort opgestookt? Ga eens kijken wat het geeft als ik op een andere pin mijn interrupt zet, als die het wel normaal doet zal de poort wel opgestookt zijn. Alhoewel, gaat er dan niet nog een grotere stroom vloeien?