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.

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 ]