AVR I2C TC74
Boldak Boldak
hw.news.hw@gmail.com
Neděle Březen 7 22:39:43 CET 2010
Diky za odpoved.
Tak sem to trochu (uplne) predelal podle vasich rad, ale stale mam v jedne
veci hokej..
Jak docilim toho, abych precetl ACK bit, ktery posila slave..? Prepsal sem
to do teto podoby:
void I2CAck(){
DDRB |= (1<<scl); //scl = 0
DDRB &= ~(1<<scl); // scl=1
_delay_ms(0.5);
acc = PINB;
_delay_ms(0.5);
DDRB |= (1<<scl); //scl = 0
_delay_ms(1);
}
ale stale to nefunguje.. Co delam spatne? SDA mam pred volanim funkce v log.
1, abych poznal, ze slave stahne SDA do 0 a tim provede ack.
Jeste bych se chtel zeptat jak se da precist jen jeden bit na portu. Je
mozna varianta, acc = PINB,sda; pripadne jaky typ musi mit acc. Existuje
datovy typ jen bit? Nebo se na to musi jit tak ze se precte cely port
(acc=PINB) a potom se pres masku testuje vybrany bit ((ack&0x20)==0)).
Diky za kazdou radu
PS: na mejlu budu zase az zitra (na)vecer..
2010/3/7 Jan Waclawek <konfera@efton.sk>
> I2C zariadenia musia byt implementovane ako otvoreny kolektor, t.j. SDA ani
> SCL nesmiete aktivne tahat do 1.
>
> AVRka nemaju "nativny" OC vystup, takze ho musite simulovat "cvicenim"
> prislusneho bitu v DDRx, pricom PORTx musi ostat stale v 0. Samozrejme musi
> byt na SDA aj SCL pritomny pullup rezistor. (Dal by sa simulovat aj sucasnym
> cvicenim PORTx "oproti" DDRx, ale to je podla mna hovadina snazit sa usetrit
> 2 odpory takymto sposobom, naviac odpory aj tak treba pre definovane
> spravanie pri resete).
>
> Potom pochopitelne nemate ani ziadny problem co s citanim.
>
> wek
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
------------- dal?í ?ást ---------------
HTML p?íloha byla odstran?na...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20100307/7438ace6/attachment.htm>
More information about the Hw-list
mailing list