open drain, vad är det?
Re: open drain, vad är det?
> Jag har inte möjligheten att lägga till ett motstånd...
Gör om, gör rätt.
Gör om, gör rätt.
Re: open drain, vad är det?
Varför inte göra som vanligt och använda intern pullup och låta knappar sänka till jord?
Re: open drain, vad är det?
Nej, inte om man tolkar avbrott som "interrupt".TomasL skrev:Det är lite otydligteftersom det ska bli avbrott när en switch slår till och kopplar pinnen till 3.3V
Re: open drain, vad är det?
Varför inte? Det går alltid att modda dit något...YeaYeah skrev:Jag har inte möjligheten att lägga till ett motstånd...
Det är såna misstag man gör ibland på prototyper, inte så konstigt (även om det i det här fallet borde ha varit enkelt att undvika genom att faktiskt läsa databladet först och bygga sen...)
Re: open drain, vad är det?
Har du inte något datablad till processorn? Där borde det väl stå om det finns pull-up eller pull-down inbyggt på ingångarna?
Så se först till att pinnen är programmerad som ingång och inget annat. Och då är atrributet "open drain" helt ovidkommande - det används inte på ingångar.
Du verkar blanda ihop funktionerna med utgångar och ingångar. Om du kopplar en signal som ska läsas av processorn så får du inte göra den pinnen till utgång - då bränner du ju kretsen. (processor ut 0 volt + en knapp nedtryckt till +3.3volt = kortslutning!)• All the I/O lines PA0 to PA31on AT91SAM7S512/256/128/64/321 (PA0 to PA20 on
AT91SAM7S32) are 5V-tolerant and all integrate a programmable pull-up resistor.
Så se först till att pinnen är programmerad som ingång och inget annat. Och då är atrributet "open drain" helt ovidkommande - det används inte på ingångar.
Re: open drain, vad är det?
Mmm, jag är nybörjare och har nog blandet ihop en del. Men nu funkar det! Dock en riktig ful-lösning.
main{
while(1){
...
PIO_Configure(&pinPB1Output, 1); //Sätter pinne till 0
....
....
....
unsigned int i;
PIO_Configure(&pinPB1Input, 1);//Sätter pinne till input.
for (i =0;i<10;i++);
svar=PIO_Get(&pinPB1Input);
PIO_Configure(&pinPB1Output, 1);//Sätter pinne till 0
...
}
}
Jag sätter alltså pinnen till output för att dra ner den till 0v. När någon sedan trycker på knappen kommer pinnen bli hög fast att mikrokontrollern försöker dra ner pinnen till låg. Jag vet då att pinnen bara är låg om knapp INTE är nedtryckt. Finns det risk att jag bränner något i mikrokontrollern genom att göra så här? Hittills verkar inget ha gått sönder..
Tack för alla svaren!
main{
while(1){
...
PIO_Configure(&pinPB1Output, 1); //Sätter pinne till 0
....
....
....
unsigned int i;
PIO_Configure(&pinPB1Input, 1);//Sätter pinne till input.
for (i =0;i<10;i++);
svar=PIO_Get(&pinPB1Input);
PIO_Configure(&pinPB1Output, 1);//Sätter pinne till 0
...
}
}
Jag sätter alltså pinnen till output för att dra ner den till 0v. När någon sedan trycker på knappen kommer pinnen bli hög fast att mikrokontrollern försöker dra ner pinnen till låg. Jag vet då att pinnen bara är låg om knapp INTE är nedtryckt. Finns det risk att jag bränner något i mikrokontrollern genom att göra så här? Hittills verkar inget ha gått sönder..
Tack för alla svaren!
Re: open drain, vad är det?
Öh, vad pysslar du med???
Hur vet du det, du kan inte läsa av en utgång.Jag vet då att pinnen bara är låg om knapp INTE är nedtryckt
Re: open drain, vad är det?
Jodå, det kan man oftast (ingången fungerar precis som vanligt även om utgångsbuffertern är aktiv).
Dock så är det inte speciellt bra att kortsluta på det sättet. Om det bara är någon sekund åt gången när
man trycker på knappen så håller det nog, men det är verkligen ett fulhack.
Dock så är det inte speciellt bra att kortsluta på det sättet. Om det bara är någon sekund åt gången när
man trycker på knappen så håller det nog, men det är verkligen ett fulhack.
Re: open drain, vad är det?
Hur svårt kan det vara att fästa 5st ytmonterade motstånd vid knapparna eller processorn och dra dessa mot gnd eller vcc vad nu som är lämpligt.
Re: open drain, vad är det?
Det går inte. Kortet är 4-lagers, kostade så där 2700kr och det är med solder stop. Finns alltså knappt några kontakter. Isåfall skulle jag få dra stora motstånd över hela kortet och det känns inte så bra.
Re: open drain, vad är det?
fram med kniven och skrapa lite på processorn alt knapparna så ska du se att det går.
Re: open drain, vad är det?
Så länge det inte är ingjutit i epoxy så går allt. (går även om det är ingjutit, med lite vilja)
Re: open drain, vad är det?
> Det går inte. Kortet är 4-lagers, kostade så där 2700kr...
>
> Jag sätter alltså pinnen till output för att dra ner den till 0v. När någon sedan trycker
> på knappen kommer pinnen bli hög fast att mikrokontrollern försöker dra ner pinnen till låg.
Det måste vara något av det dummaste jag har läst här på länge.
En ren idiotlösning...
> Finns det risk att jag bränner något i mikrokontrollern genom att göra så här?
Självklar gör det det.
> Hittills verkar inget ha gått sönder..
"Verkar" ? Du har inte en aning om ifall du har skadat något. Det är inte säkert att
du kommer att se det alls. I alla fall inte än. Jag hoppas inte skiten ska sitta i
något viktigt i alla fall. Eller att någon har betalat dig för att fixa denna konstruktion.
>
> Jag sätter alltså pinnen till output för att dra ner den till 0v. När någon sedan trycker
> på knappen kommer pinnen bli hög fast att mikrokontrollern försöker dra ner pinnen till låg.
Det måste vara något av det dummaste jag har läst här på länge.
En ren idiotlösning...
> Finns det risk att jag bränner något i mikrokontrollern genom att göra så här?
Självklar gör det det.
> Hittills verkar inget ha gått sönder..
"Verkar" ? Du har inte en aning om ifall du har skadat något. Det är inte säkert att
du kommer att se det alls. I alla fall inte än. Jag hoppas inte skiten ska sitta i
något viktigt i alla fall. Eller att någon har betalat dig för att fixa denna konstruktion.
Re: open drain, vad är det?
Nejdå, ingen risk, snarare garanti.YeaYeah skrev:Finns det risk att jag bränner något i mikrokontrollern genom att göra så här?