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