atmega8 zapojeni vstup.pinu - pomoc

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
vrabec1330

atmega8 zapojeni vstup.pinu - pomoc

#1 Příspěvek od vrabec1330 »

cau vsichni, potreboval bych poradit se zapojenim vytupnich u atmega8, uz nad tim 2 dny badam a stale se mi nepodarilo zprovoznit jakekoli zapojeni s vstup.pinama, porad to vypada jako by na pinu byla Log 0 i kdyz by tam mela byt Log 1,prosim pokud by byl schopen poslat schema i program(najlepe bascom , ale nevadi pokud asm nebo c) nebo aspon poradit jak odstranit chybu byl bych mu moc vdecny diky
Uživatelský avatar
LordFus
Příspěvky: 39
Registrován: 20 zář 2009, 00:00
Kontaktovat uživatele:

#2 Příspěvek od LordFus »

no, pokud je tam nula, tak je to trochu divné, nicméně pokud tam není nic (vysoká impedance), tak máš špatně nastavené DDRx. Pokud chceš piny AVR nastavit jako výstup, musíš do registru DDRx na pozici odpovídající pinu dát log. jedničku, čímž ten pin nastavíš jako výstup. Pak v registru PORTx nastavuješ, jestli má být výstup v jedničce nebo v nule. V datasheetu je na to hezká tabulka.
..::Darovanému čipu na křemík nehleď::..
vrabec1330

#3 Příspěvek od vrabec1330 »

no prave vystupy fungujou, ale problem je se vstupy..:)
Uživatelský avatar
LordFus
Příspěvky: 39
Registrován: 20 zář 2009, 00:00
Kontaktovat uživatele:

#4 Příspěvek od LordFus »

aha, sem to přečet moc rychle sry. A víš že to musíš číst z registrů PINx? V PORTx se při vstupech nastavuje, jestli jsou z vysokou impedancí, nebo s pull-up rezistorem.
..::Darovanému čipu na křemík nehleď::..
vrabec1330

#5 Příspěvek od vrabec1330 »

no ja delam v basicu tam se to nastavuje pres portx.x podle me to neni problem programu ale spis v hardwaru..nemohl bys mi spis poslat schema zapojeni toho tlacitka? a ty pull up rezistory se musej zapnout ne?
Uživatelský avatar
LordFus
Příspěvky: 39
Registrován: 20 zář 2009, 00:00
Kontaktovat uživatele:

#6 Příspěvek od LordFus »

Asi takhle. Čudlík stačí připojit mezi pin a zem. Dejme tomu, že máš čudlík na nultém pinu portu B.

-v DDRB nic nastavovat nemusíš, tam jsou po resetu jedničky, takže jsou všecky piny nastaveny jako vstupy
-abys zapnul pull-up, musíš dát nultý bit registru PORTB do jedničky

stav pinu čteš z nultého bitu registru PINB

v assembleru takto:
ldi R16,0b00000001
out PORTB,R16
Uživatelský avatar
popopepe
Příspěvky: 553
Registrován: 26 říj 2005, 00:00

#7 Příspěvek od popopepe »

vrabec1330 píše:no ja delam v basicu tam se to nastavuje pres portx.x podle me to neni problem programu ale spis v hardwaru..nemohl bys mi spis poslat schema zapojeni toho tlacitka? a ty pull up rezistory se musej zapnout ne?

V jakém Basicu? Bascom?


Tam je to poměrně jednoduché:
Pozor na rozdíl mezi Port a Pin, port nastavuje a zařizuje výstup, Pin je pro čtení stavu na vstupu.
Deklarace:
PORTB=Input - nastavíš registr na vstup
Port B=255 - tady si nastavíš, kde chceš zapnout pullup odpory, v tomto případě na všech pinech portu B

a v programu čteš pomocí: PINB.x

např:
A=PINB.1

a v proměnné A budeš mít to co je nastaveno na pinu B.1.

Popo
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“