Hallo allen,
Even een vraagje: Hoe maak ik een poort extern hoog om de waarde in mijn programma uit te lezen? Ik wil dit doen dmv een schakelaartje.
Moet de poort via de schakelaar aan de +5 of krijgen we dan vuurwerk?
Zo nee, wat voor sterkte weerstand moet er tussen?
Alvast bedankt!
Vorik.
PS: Ik heb gezocht o.a. op dit forum, maar kon geen posting vinden die er op leek...
Als je echt bang bent moet je inderdaad een serie weerstand opnemen in de ingangsleiding van je ic.
neem b.v. 10Kohm.in serie en dan kun je die weerstand aan de 0 volt leggen voor een "0" en aan de +5 volt voor een "1".
Er zijn nog 10 andere manieren om dit te doen dat weet ik ook maar dan hebben de andere medeforummers niks meet te doen.
sven
pointers don't kill programs, programmers kill programs
waarom moet deze extern hoog worden gemaakt?
AVR beschikt over interne pullup weerstanden
zet gewoon je DDRx op uitgang + PORTx hoog en je kan zonder problemen rechtstreeks een schakelaar plaatsen tussen je pin & massa (dewelke je terug kan inlezen via PINx)
edit: een klein voorbeeldje
; harware test voor testboard ATmega163
; kopieer portb naar porta
.include "m163def.inc"
.def temp = R16
.org 0x0000
rjmp reset
reset:
ldi temp,high(ramend) ;ini stack pointer
out sph,temp
ldi temp,low(ramend)
out spl,temp
ini:
; initialistatie poorten
; poortA = out / B = in
clr temp ; temp = 00
out ddrb,temp ; ddrb = 0 input
ser temp ; temp = FF
out portb,temp ; pullup activeren
out ddra,temp ; ddra = FF output
loop:
in r15,pinb ; lees de status in van poort B
out porta,r15 ; plaats de waarde van poort B op poortA
rjmp loop
[Bericht gewijzigd door sven op ]