USART till half-duplex

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
port513
Inlägg: 182
Blev medlem: 20 februari 2007, 10:16:15

USART till half-duplex

Inlägg av port513 »

Bakgrunden:
Jag vill koppla mig mot denna sorts servo
http://www.crustcrawler.com/products/bi ... /AX-12.pdf
Den kör UART half-duplex om jag förstått allt rätt.

Det som jag nu som nybörjare undrar är hur jag på min ATmega16 kopplar rent tekniskt så att den blir en half-duplex. Man ska väl som jag förstått koppla ihop Rx med Tx men med motstånd emellan, rätt? Vad är det i så fall för storlek på motståndet?


En liten skiss från någon vänliga själv skulle vara trevligt.
Jag vet jag har många frågor en frågar man inget får man inget veta även om jag ibland ställer frågor som jag inget får veta av ;)


/Henke
Användarvisningsbild
GrodanB
Inlägg: 245
Blev medlem: 11 februari 2006, 16:46:25
Ort: Göteborg
Kontakt:

Inlägg av GrodanB »

Motstånd?

Sidan 8 har en ritning med 2 utpekade kretsar.

74HC126 och 74HC04

Sen 1 pull up motstånd för att hålla 1 tråds kommunikationen hög när den inte drivs/används. Tittar man på bilden ser man att storleken är 10K dvs 10 Kohm. Tex. detta: Kolytskiktsmotstånd, 1/4 W

det blir halv duplex eftersom du inte kan skicka och ta emot samtidigt med 1 tråd...
port513
Inlägg: 182
Blev medlem: 20 februari 2007, 10:16:15

Inlägg av port513 »

Fast de kretsarna är ju inget jag kommer använda därav min fråga om hur jag kopplar just ATmega16 till half-duplex

Men det är alltså bara att koppla ihop Rx och Tx och med en resistor till +5?



/Henke
Användarvisningsbild
GrodanB
Inlägg: 245
Blev medlem: 11 februari 2006, 16:46:25
Ort: Göteborg
Kontakt:

Inlägg av GrodanB »

Ja, det skall gå bra. Så gör man i tex. J1708... Så länge ingångarna har hög impedans kommer de inte att störa varandra.

Det möjliggör at man kan sända och kolla att man sänder korrekt data...

MEN är det verkligen bra att köra obuffrat? Jag hade inte gjordt det i alla fall...

Orkar ATmega driva?
Ingen risk för spikar som kan paja ATmegan?
port513
Inlägg: 182
Blev medlem: 20 februari 2007, 10:16:15

Inlägg av port513 »

Det är just sådana här frågor jag ville ha svar på ;)

De har exempel för en ATmega128 så nog klarar ATmega driva. Servorna drivs ju för övrigt inte på samma spänning som själva uC om det var det du menade med orkar driva.


/Henke
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

NEJ, det är inte bara att koppla ihop dom!

Då UART-utgången driver kontinuerligt kommer den att blockera svar från servon. Du MÅSTE alltså se till att den fungerar som en OC-utgång, detta kan göras med en 1N4148 (katod mot utgången) varefter man kan koppla ingång och pull-up motstånd till.

Generellt tycker jag att det är ett dumt sätt att kommunicera på, det är störkänsligt och just vid såna applikationer med många motorer finns det störningar.
port513
Inlägg: 182
Blev medlem: 20 februari 2007, 10:16:15

Inlägg av port513 »

Så i princip är det en dum servo jag tittat på?

Vad finns det i så fall för andra alternativ om jag vill ha feedback från servon liknande den jag nämnde i topicen?


/Henke
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Om den är dum eller inte låter jag vara osagt men kommunikationen är inte speciellt störsäker, den är å andra sidan inte heller extra störkänslig så det är lite gungar-och-karrusell över det (give some, take some).

Att ha en pull-up på 10K är i mina ögon inte bra, det betyder att drivningen är mindre hård vilket kan öppna för störningar.

Bäst hade varit om de hade kört RS485.... men det hade ställd helt andra krav på den kommunikationsutrustning DU ska göra, timing osv. och MÅNGA hade inte klarat av det på ett bra sätt. Vill man därför göra en grej som alla kan använda blir det en del trade-off.

Bemärk att det mycket väl kan fungera bra och utan problem men det kan även hända att kommunikationen kan bli strulig, det beror på vilket kabel du använder, hur du drar dom, skärmning och allmänt störningsnivå.
port513
Inlägg: 182
Blev medlem: 20 februari 2007, 10:16:15

Inlägg av port513 »

Kluddservo jag hittat ;)

Men i exempelkoden står något om RS485, kan det vara något sådant du menar?


/Henke
Användarvisningsbild
GrodanB
Inlägg: 245
Blev medlem: 11 februari 2006, 16:46:25
Ort: Göteborg
Kontakt:

Inlägg av GrodanB »

Ahh.. driver utgången på UARTen fungerar det klart inte... Trodde att den släppte pinnen efter att den sänt klart.

Varför inte göra som de föreslår?

Vad är problemet med det förslaget?

Använder inte UART när jag implementerade J1708... Så jag kunde koppla ihop dem... Implementerade det i microkod i en timerprocessor...

Om jag hade varit orolig för störningar hade jag byggt små kretskort som man satte på servot och som hade bättre kommunikation... Liten PIC eller Atmel...
Så är avståndet mellan servots 1 tråd och datorn inget större avstånd.
port513
Inlägg: 182
Blev medlem: 20 februari 2007, 10:16:15

Inlägg av port513 »

Problemet är väl mer eller mindre att det de visar är en intern krets för deras egna styrmodul.

Jag vill använda mig av min kära ATmega16 jue ;)
Försöker just nu förstå hur de kopplat elektroniken i exempelkoden.

*** EDIT ***
Jag vill ju INTE styra detta med PC utan med AVR
*** SLUT EDIT ***


/Henke
Användarvisningsbild
GrodanB
Inlägg: 245
Blev medlem: 11 februari 2006, 16:46:25
Ort: Göteborg
Kontakt:

Inlägg av GrodanB »

Ja, och vad är problemet???? Vem har pratat om PC????

Bild

Pinne 14,15 TxD och RxD???? (DIL)

En GPIO för riktining???
Eller nått... har inte kollat i databladet men skulle vara den första microkontroller med TxD och RxD ben som inte är kopplade till en UART...
port513
Inlägg: 182
Blev medlem: 20 februari 2007, 10:16:15

Inlägg av port513 »

Min definition av dator är väl i området omkring PC eller liknande, därav mitt antagande.


I övrigt var jag mer intresserad av hur jag kopplar mig och vad jag exakt skulle göra för att få det att fungera.

Men för tillfället har jag gått på RC-servostuket och lagt denna på hyllan ett tag.


/Henke
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

Bara för att hålla isär begreppen lite. För att köra på halv duplex behöver du inte göra något alls annat än att i programmet se till så att du inte sänder och tar emot samtidigt. Det säger nämligen ingenting om att RX och TX är ihopkopplade. Sedan är det en annan sak att det ofta används i sammanhang där man har en gemensam buss. Det är lite dumt uttryckt i dokumentet för servot.

Det bästa är nog att använda den koppling som dom beskrivit. Ett alternativ kan vara en shottkydiod i serie med TXD för att inte driva linjen aktivt hög, fast man får inte det skydd och den drivförmåga som deras alternativ ger.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> I övrigt var jag mer intresserad av hur jag kopplar mig och vad
> jag exakt skulle göra för att få det att fungera.

Sidan 7 i databladet har en koppling.

> Problemet är väl mer eller mindre att det de visar är en intern
> krets för deras egna styrmodul.

So what ? Gör bara likadant.

Ett annat alternativ är en bitbangad special-kommuniikationsrutin
för just dessa servon. Då har du dessutom USART'en ledig till annat...
Skriv svar