Nastavení rychlosti komunikace u AT89Cx051 / AT89S8252

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
Ludan
Příspěvky: 6
Registrován: 17 zář 2004, 02:00
Bydliště: Pardubice, CZ
Kontaktovat uživatele:

Nastavení rychlosti komunikace u AT89Cx051 / AT89S8252

#1 Příspěvek od Ludan »

Hezký den všem...

nastavení komunikace (standardní 9600,8,N,1) není problém, ale narazil jsem na problém nastavit u Atmelu komunikační protokol na 4800,8,E,2, tedy sudá parita a 2 stop bity.
Můžete mi někdo poradit, jak v ASM nastavím tento typ komunikace ? Už jsem prolezl kde co, mám problém s paritou (soft v PC mi ukazuje, že pořád komunikuju BEZ parity) a pak nevím, jak je to s tím stopbitem, aby tam byly 2.

Dík za každý nakopnutí.

Bye Luďan

Uživatelský avatar
ZdenekHQ
Administrátor
Administrátor
Příspěvky: 25593
Registrován: 21 črc 2006, 02:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#2 Příspěvek od ZdenekHQ »

Musíš nastavit komunikaci jako 9-bitovou a paritu (9.bit) si dopočítat přes acc.

2 stop-bity nasimulujuješ vložením pauzy odpovídající délce jednoho bitu mezi jednotlivý vysílaný "slova" (v podstatě ve chvíli, jamkmile ti přijde potvrzení o odeslání).
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]

Uživatelský avatar
Ludan
Příspěvky: 6
Registrován: 17 zář 2004, 02:00
Bydliště: Pardubice, CZ
Kontaktovat uživatele:

#3 Příspěvek od Ludan »

Tak jsem to zatim sbastlil takto:

Kód: Vybrat vše

                      DSEG AT 30H

BUFFER:          DS 17                 ; buffer pro odesilana data

                      CSEG

IDENT             EQU PSW.5          ; priznak odesilani dat do PC
PARITA           EQU PSW.0          ; paritni priznak

  atd...

;    *****************************
;    ** Obsluha preruseni od SERIAL **
;    *****************************

SERIAL:          JB TI, ODESLANO  ; odeslani znaku -> skok
                      CLR RI
                      RETI
ODESLANO:     CLR TI
                      JNB IDENT, END_TX  ; po odeslani vsech znaku skok
                      MOV A, @R0            ; do ACC znak pro odeslani
                      JB PARITA, SET_PARITY  ; nastaveni/smazani bitu parity
                      CLR TB8               ; 9.odesilany bit=0
                      AJMP ODESLI_ZNAK
SET_PARITY:   SETB TB8             ; 9.odesilany bit=1
ODESLI_ZNAK:MOV SBUF, A        ; odeslani na seriovy port
                      INC R0                 ; inkrementace ukazatele na znak
                      DEC R7                ; dekrementace poctu odeslanych znaku
                      MOV A, R7            ; pocet znaku k odeslani do ACC
                      JNZ END_TX          ; ACC<>0 -> na END_TX
                      CLR IDENT           ; vsechny znaky odeslany, vymaz priznaku
END_TX:         RETI                     ; navrat z preruseni

........ inicializace je provedena takto:

                      MOV TH1, #243     ; konstanta pro casovac 1
                      MOV TH0, #HIGH HODNOTA  ; nastaveni hodnoty pro casovac 0
                      MOV TL0, #LOW HODNOTA
                      MOV TMOD, #00100001B  ; 8bitovy citac/casovac 1 s fci RELOAD a 16bitovy citac/casovac 0
                      MOV SCON, #11000000B  ; 9bitovy asynchronni prenos
                      MOV PCON, #00000000B  ; kmitocet serioveho kanalu 4800 Bd
                      SETB ET0              ; povoleni preruseni od casovace 0
                      SETB ES                ; povoleni preruseni od serioveho kanalu
                      SETB EA                ; povoleni prijmu preruseni
                      SETB TR0              ; zapnuti casovace 0
                      SETB TR1              ; zapnuti casovace 1
                      
  atd...

muzes mi please poradit, jak udelam ty 2 stopbity ?

Jinak softik uz hlasi, ze je to suda parita, takze super, zas jsem o neco chytrejsi...

Bye Ludan

Uživatelský avatar
ZdenekHQ
Administrátor
Administrátor
Příspěvky: 25593
Registrován: 21 črc 2006, 02:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#4 Příspěvek od ZdenekHQ »

Za

ODESLANO: CLR TI

dej čekací smyčku 0.2ms pro rychlost 4800, teprve potom pokračuj v programu. Natáhneš tím stop-bit na delší dobu a v podstatě nasimuluješ dva.
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“