| Forfatter | Besked |
|---|
winit_a
Tilsluttet: 16 november 2003 Stillinger: 17
| 15 februar 2004 5:42 Sådan Opret UART med Software (ikke anvendes SBUF) på 8051 | | |
|
| Sådan oprettes UART med software? Mit projekt Brugt 3 UART (normal har 1 UART med hardware P3.0 og P3.1)
8051 MCU@11.0592MHz Sådan oprettes UART anvendes P2 eller P1 til Interface RS-232 |
|
| Tilbage til toppen | |
 |
pisoiu
Tilsluttet: 31. december 2002 Posts: 723 Hjulpet: 24 Beliggenhed: Rumænien
| 15 februar 2004 11:58 Re: Sådan oprettes UART med Software (ikke anvendes SBUF) på 8051 | | |
|
| Hej, Min mening: Det er forbandet svært. Du bliver nødt til at gøre det ved hjælp af interrupts, men 8051 er en forholdsvis langsom controller, dens præstationer ophold under 1mips på 11,0592 MHz uret for klassiske 8051 versioner (1instruction cyklus = 12 taktcyklus). Mere end en seriel port implementeret i softwaren vil spise næsten alle processor tid, især hvis du ønsker at gå op til 115200bps med disse havne, eller hvis du ønsker at gennemføre alle mulige parametre (6/7/8 data bits selecteble, 1 / 2 stopbit, paritet Ulige / lige / mærke / space / ingen, Strømningsreguleringen vælges xon-xoff/hard/none). Min sugestion er at bruge en modificeret arkitektur 8051 fra cypres, eller at bruge en scenix microcontroller (www.ubicom.com). For scenix controller Jeg kan give kode for 8 uarts samtidigt. Dette, hvis du vil have en software gennemførelse. Hvis Yau ønsker hardware, kan du bruge max3100 (maksime).
Bedste, |
|
| Tilbage til toppen | |
 |
Ajay
Tilsluttet: 29. februar 2004 Stillinger: 31
| 01 marts 2004 0:10 Re: Sådan oprettes UART med Software (ikke anvendes SBUF) på 8051 | | |
|
| Du kan oprette en UART (ud over at bruge SBUF) ved hjælp af en dedikeret timeren og skriver meget hurtigt kode for at rotere bit. På den indgående side (RXD), skal du bruge en afbryder pin. Når afbryder kommer, skal du starte din timere og læs PIN-status i carry, rotere og oprette din indgående bytes. Fungerer godt op til 9600 Baud (Jeg har brugt det).
Men at skabe yderligere to på samme tid? Glem det. Selv hvis du bruger to dedikerede tidstællere, Interrupt rutiner blevet så store, at du vil savne bits.
Hvis du leder efter langsom UARTs (1200 Baud eller langsommere), da denne teknik værker for op til 2 UART's. Husk, at du vil opgive alle de tre tidstællere (en anvendes til baudhastighed gen for SBUF, en for-port 1 og én for port 2 timing) samt både interrupts.
Så, bedre design er at bruge en ARM-chip med to UART's (Jeg har lavet 2 ekstra UARTs på 19200 Baud med en ARM) eller bruge Kanin registeransvarlige eller nogle af disse ting.
Ajay |
|
| Tilbage til toppen | |
 |
beuch
Tilsluttet: 06 juni 2001 Stillinger: 65 Location: Frankrig
| 03 marts 2004 14:45 Re: Sådan oprettes UART med Software (ikke anvendes SBUF) på 8051 | | |
|
| Hej,
have et kig på den vedhæftede fil fra Philips web AN.
AN446
farvel
|
|
| Tilbage til toppen | |
 |
crazytnt
Tilsluttet: 02 februar 2004 Stillinger: 8
| 03 marts 2004 17:43 Re: Sådan oprettes UART med Software (ikke anvendes SBUF) på 8051 | | |
|
| Det er meget vanskeligt. Foreslår, at du bruger hardware. |
|
| Tilbage til toppen | |
 |
J_expoler2
Tilsluttet: 10. maj 2003 Posts: 179 Hjulpet: 19
| 03 marts 2004 18:00 Re: Sådan oprettes UART med Software (ikke anvendes SBUF) på 8051 | | |
|
| Hej Jeg har en idé UART men sender kun data ved hjælp af timeren 0 bit T232 som TxD MOV TMOD, # 22h MOV TH0, # 70H MOV TL0, # 70H SETB EA SETB ET0 SETB TR1 ; ; ; ; funktion 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; STOP BIT CLR TF0 JNB TF0, $ RET det måske hjælpe u BR. |
|
| Tilbage til toppen | |
 |
fireplus
Tilsluttet: 31. oktober 2003 Stillinger: 195 Hjulpet: 5
| 04 marts 2004 3:29 Re: Sådan oprettes UART med Software (ikke anvendes SBUF) på 8051 | | |
|
| forsøge at
[hr: 5c6e3c7296] Brand i det Wire: sm2: |
|
| Tilbage til toppen | |
 |
Google AdSense

| 04 marts 2004 3:29 Annoncer | | |
|
|
|
|
| Tilbage til toppen | |
 |
Ajay
Tilsluttet: 29. februar 2004 Stillinger: 31
| 08 marts 2004 12:28 Re: Sådan oprettes UART med Software (ikke anvendes SBUF) på 8051 | | |
|
| | J_expoler2 wrote: | Hej Jeg har en idé UART men sender kun data ved hjælp af timeren 0 bit T232 som TxD MOV TMOD, # 22h MOV TH0, # 70H MOV TL0, # 70H SETB EA SETB ET0 SETB TR1 ; ; ; ; funktion 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; STOP BIT CLR TF0 JNB TF0, $ RET det måske hjælpe u BR. |
Dette er kun godt for indberetning. Problemet kommer, når du forsøger at få så godt. Først og fremmest, at denne metode vil ALDRIG arbejde for fuld duplex operationen, medmindre du bruge to forskellige tidstællere.
Desuden, for at modtage, skal du bruge en hardware interrupt som netop starter timeren på det rigtige tidspunkt og derefter vil bidrage til at flytte data. Også denne metode er kun godt som en halv duplex kommunikation.
En anden kompleksitet kommer fra det faktum, at afbryde rutiner bliver lang og vil forårsage problemer ved manglende bits. Husk på, at fejlen vil akkumuleres over en periode!
Den bedste måde er at bruge en chip, som har mere serielle porte (ARM, uPSD fra ST osv.)
Ajay |
|
| Tilbage til toppen | |
 |