Hallo,

Ik heb het volgende probleem.
Ik ben bezig met het programmeren van de dobbelsteen van deze site.
Dat gaat heel redelijk.
Alleen nu zit ik met een probleem.
Hoe kan ik ervoor zorgen dat als er +5 volt op een pin komt dat er dan iets gebeurt in mij programma.
Dus hoe sluit ik een knop aan en laat ik bascom daarop reageren.

dit had ik :


opnieuw:
if pind.5 = 0 then
goto opnieuw
else
'laat de dobelsteen dobbelen.
end if

Maar dit werkt dus niet.
Wie kan mij helpen.

Hoe heb je de knop aangesloten en hoe zit de rest van je code eruit?

De knop is aangesloten op de gnd.


---   PD5
   /
   |
   |
-------- GND

Zo? Dan ga je niet veel spanning op je ingang krijgen.
Of begrijpen we elkaar verkeerd? :P
Je wil een ingang waar maken, dus moet je er een spanning op zetten.

Knopje naar ground is opzich de beste optie, maar dan moet je wel een pull-up toevoegen en je code iets verbouwen.

Zoiets:

Do
Loop Until pind.5 = 0

'laat de dobelsteen dobbelen.

Oke, maar ik had ook 5+ volt geprobeerd op die poort te zetten.
Maar dat gaf met mij code ook geen resultaat.

Daarom vroeg ik ook om de rest van de code. Daar kan ook nog genoeg fout zitten.

Heb je hem goed ingesteld?
Ik heb weinig tijd en was bijna klaar met mijn verhaal toen ik per ongeluk op backspace drukte(werkte als vorige pagina :S).

Ik zal vanavond of morgen even voorbeelden plaatsen als ik eraan denk.

Kijk eens naar de datasheet, hoofdstuk I/O ports.
DDR registers en PORT en PIN registers.
En in de help van BASCOM naar "Config port"
1 van de 2 methoden gebruiken.

Op 27 maart 2009 17:18:22 schreef Hetiserik:
Je wil een ingang waar maken, dus moet je er een spanning op zetten.

Zelf gebruik is altoos de interne pull-up weerstanden, gecombineerd met een schakelaar of drukknop naar GND. Enkel bij lange leidingen (>25cm) tussen AVR en schakelaar plaats ik een externe pull-up.

Op 27 maart 2009 18:04:40 schreef Sandertje:
ik per ongeluk op backspace drukte(werkte als vorige pagina :S).

Druk op shift+backspace, werkt als volgende. Ben je weer terug.

Oke, dus ik moet de pin dus gewoon aan de GND hangen ?.

@ 2N3055: Werkte niet :( alle tekst weg.

Maar goed, hierbij alsnog:

Je moet zeker weten dat je je ingangen goed ingesteld hebt. Dat kan op 2 manieren:

 
config portd = Input
           ^   ^------ Input of Output
           |---------- De poort

Daarna kun je evt. nog pull ups aanzetten:

portd.5 = 1   --> Zet de pullup aan voor poort D, pin 5
portd.5 = 0   --> Idem, maar zet de pull up uit.

Of met de registers:



DDRD.5 = 0
   ^ ^   ^------ 0 = Ingang, 1 = Uitgang
   | |---------- Pin 5 van de poort
   |------------ De poort

En ook dan weer de pull up mogelijkheden:

portd.5 = 1   --> Zet de pullup aan voor poort D, pin 5
portd.5 = 0   --> Idem, maar zet de pull up uit.

Zelf gebruik ik de pull up mogelijkheden zelden, ik kies veelal voor 10k weerstanden buiten de chip.

Wat belangrijk is:
Bij een ingang PINx.x gebruiken en voor een uitgang PORTx.x gebruiken!
Ben hier zelf al geregeld de fout mee ingegaan.

Als je een chip met JTAG mogelijkheden gebruikt, en je wilt een JTAG pin gebruiken als in/uit gang, moet je de JTAG uitzetten.