| Forfatter | Melding |
|---|
winit_a
Joined: 16 november 2003 Innlegg: 17
| 15 februar 2004 4:42 UART XOFF implementering | | |
|
| Hvordan Lage UART Med programvare? Mitt prosjekt Brukt 3 UART (normalt har 1 UART med HARDWARE P3.0 og P3.1)
8051 MCU@11.0592MHz Hvordan Lage UART brukt P2 eller P1 til Interface RS-232 |
|
| Tilbake til toppen | |
 |
pisoiu
Joined: 31 desember 2002 Innlegg: 729 Hjalp: 24 Sted: Romania
| 15 februar 2004 10:58 tidtakere t232 | | |
|
| Hei, Min mening: det er jævla hardt. Du må gjøre det ved hjelp av avbrudd, men 8051 er en relativt langsom kontroller, forblir ytelsen under 1mips på 11,0592 MHz klokke for klassiske 8051-versjoner (1instruction syklus = 12 klokken syklus). Mer enn én seriell port implementert i programvaren vil spise nesten all prosessor tid, spesielt hvis du ønsker å gå opp til 115200bps med disse portene, eller hvis du ønsker å gjennomføre alle mulige parametre (6/7/8 databiter selecteble, 1 / 2 stoppbiter, paritet Odd / Even / mark / space / ingen, flytkontroll valgbart xon-xoff/hard/none). Min sugestion er å bruke en endret arkitektur 8051 fra Cypress, eller å bruke en scenix microcontroller (www.ubicom.com). For scenix kontrolleren jeg kan gi koden til 8 UARTs samtidig. Dette hvis du vil ha en programvare gjennomføring. Hvis Yau vil maskinvaren, kan du bruke max3100 (leveregel).
Best, |
|
| Tilbake til toppen | |
 |
Ajay
Joined: 29 februar 2004 Innlegg: 31
| 29 februar 2004 23:10 8051 UART enda 7 1 | | |
|
| Du kan opprette en UART (i tillegg til å bruke SBUF) ved hjelp av en dedikert timer og skrive veldig fort kode for å rotere litt. På den innkommende siden (RXD), må du bruke en interrupt pin. Når avbruddet kommer, start tidtakere og lese pin statusen til bære, rotere og lage din innkommende bytes. Fungerer bra opptil 9600 Baud (jeg har brukt det).
Men å lage ytterligere to samtidig? Glem det. Selv om du bruker to dedikerte timere, avbruddet rutiner bli så stor at du vil savne biter.
Dersom du leter etter treg UARTs (1200 Baud eller tregere), så denne teknikken fungerer for opptil 2 UART's. Husk at du vil gi opp alle de tre timere (som brukes for overføringshastighet gen for SBUF, en for port 1 og en for port 2 timing) samt både avbrudd.
Så er bedre design for å bruke en ARM-brikke med to UART's (jeg har laget 2 ekstra UARTs på 19200 baud med en ARM) eller bruk Rabbit kontrolleren eller noe sånt.
Ajay |
|
| Tilbake til toppen | |
 |
beuch
Joined: 06 Jun 2001 Innlegg: 65 Sted: Frankrike
| 03 Mar 2004 13:45 mikrokontroller sbuf | | |
|
| Hei,
ta en titt på den vedlagte filen fra Philips web AN.
AN446
ha det
|
|
| Tilbake til toppen | |
 |
crazytnt
Joined: 02 Feb 2004 Innlegg: 8
| 03 Mar 2004 16:43 UART gjennomføring 8051 ASM | | |
|
| Det er veldig vanskelig. Foreslår at du bruker maskinvare. |
|
| Tilbake til toppen | |
 |
J_expoler2
Joined: 10 mai 2003 Innlegg: 179 Hjalp: 19
| 03 Mar 2004 17:00 UART gjennomføring i 8051 | | |
|
| Hei Jeg har noen ide UART men sender data kun ved hjelp av timer 0 bit T232 som TxD MOV TMOD, # 22H MOV TH0, # 70H MOV TL0, # 70H SETB EA SETB ET0 SETB TR1 ; ; ; ; funksjon sende data: CLR T232; START BIT SETB TR0 MOV R7, # 8
TX_LOOP: RRC A JNB TF0, $ MOV T232, C CLR TF0 DJNZ R7, TX_LOOP JNB TF0, $ SETB T232; stoppbit CLR TF0 JNB TF0, $ RET det kanskje hjelpe u BR. |
|
| Tilbake til toppen | |
 |
fireplus
Joined: 31 oktober 2003 Innlegg: 195 Hjalp: 5
| 04 Mar 2004 2:29 80C51 programvare UART | | |
|
| prøv det
[hr: 5c6e3c7296] Fire in the Wire: sm2: |
|
| Tilbake til toppen | |
 |
Google AdSense

| 04 Mar 2004 2:29 Annonser | | |
|
|
|
|
| Tilbake til toppen | |
 |
Ajay
Joined: 29 februar 2004 Innlegg: 31
| 08 Mar 2004 11:28 XON XOFF 8051 | | |
|
| | J_expoler2 skrev: | Hei Jeg har noen ide UART men sender data kun ved hjelp av timer 0 bit T232 som TxD MOV TMOD, # 22H MOV TH0, # 70H MOV TL0, # 70H SETB EA SETB ET0 SETB TR1 ; ; ; ; funksjon sende data: CLR T232; START BIT SETB TR0 MOV R7, # 8
TX_LOOP: RRC A JNB TF0, $ MOV T232, C CLR TF0 DJNZ R7, TX_LOOP JNB TF0, $ SETB T232; stoppbit CLR TF0 JNB TF0, $ RET det kanskje hjelpe u BR. |
Dette er bare bra for overføring. Problemet kommer når du prøver å få også. Først av alt, vil denne metoden ALDRI arbeide for full duplex drift med mindre du bruker to forskjellige timere.
Videre for mottak, må du bruke en hardware interrupt som nettopp starte tidtakeren til rett tid og vil hjelpe flytte data. Igjen, er denne metoden bare bra som en halv dupleks kommunikasjon.
En annen kompleksitet kommer fra det faktum at avbruddet rutiner blir lang og vil føre til problemer med manglende biter. Husk at feilen vil samle over en periode!
Den beste måten er å bruke en brikke som har mer serieporter (ARM, uPSD fra ST etc.)
Ajay |
|
| Tilbake til toppen | |
 |