Sida 1 av 1
hur skall tris-registret se ut vid i2c
Postat: 19 maj 2005, 22:39:56
av cyprox
Jag försöker få igång i2c mellan två pic:ar
Jag undrar om nån av er har koll på om sda och scl ska vara definierade som in- eller utgång?
Sen undrar jag vad det kan vara för problem om pic:en aldrig skickar nån startsignal... scl och sda sänks aldrig över huvudtaget... pull-upmotstånden är så pass stora så det borde inte vara några problem att lägga ut en nolla.
Postat: 19 maj 2005, 23:10:24
av cyr
Vad för PICar och hårdvara eller mjukvara?
Postat: 19 maj 2005, 23:10:41
av $tiff
Det kan ju vara lämpligt att sätta tris till noll på mastern när den skickar kommando, annars kan linjen omöjligt ändra sig. Om mastern ska ta emot data måste de naturligtvis sättas som ingångar (etta).
Postat: 20 maj 2005, 10:11:35
av sodjan
Jag har kollat ett data blad, och TRIS skall vara *input* hela tiden.
MSSP modulen kommer, beroende på vad som händer på bussen,
att sedan sätta pinnarna som in eller output efter behov.
Det är för övrigt ganska normalt att en modul på detta sätt "tar över" funktionen från TRIS. Ganska rimligt att man inte skall behöva dribbla med TRIS när man kör I2C, eller hur !
Postat: 20 maj 2005, 11:24:23
av bengt-re
Har för mig att det är samma sak när man kör HPWM och USARTen.
Postat: 20 maj 2005, 11:33:15
av $tiff
Oj, nu pratar vi på många olika plan.
Om man använder en färdig funktion i ett högnivåspråk är det en självklarhet att den sätter TRIS-registret till vad som behövs. Använder man UART är det nog som sodjan säger att den också sköter TRIS-registret själv. Ska man säremot bitbanga via en egen rutin måste man självklart se till att TRIS står rätt.
Postat: 20 maj 2005, 11:48:20
av bengt-re
Åsyftade den inbyggda Uarten i exempelvis PIC16F876A, den har inget med något högnivåspråk att göra, men sätter du register TXSTA (98h) så går uart pinnarna automatisk över till in respektive utgång.
Postat: 20 maj 2005, 11:49:59
av sodjan
$tiff, jo visst...
Men från ditt första inlägg kunde man tro att man skall *ändra* TRIS beroende på riktningen på I2C trafiken. Med mitt inlägg ville jag bara säga att jag inte tror det. Detta har inget med högnivåspråk att göra, det handlar om hur processor i sig fungerar. Och jag sa ingenting om någon UART...
Slutligen, om man skall bitbanga så är det enklare att köra SPI, men det var väll inte aktuellt här ?
Postat: 20 maj 2005, 11:55:17
av cyprox
tack för alla svar... det löste sig, vi satte helt enkelt inte portarna till nåntig, det löste sig ändå. Det stora problemet var att kortet med mastern var feletsat

SDA-ledningen var inte kopplad till SDA-pinnen, inte så konstigt att vi inte fick ut nåt på oscilloskopet.