Fórum témák
» Több friss téma |
Nos egy érdekes problémába ütköztem melyre a releváns fórumban sem tudtak helyes választ adni ezért nyitom ezt a topikot.
Az alap feladatom egy Atmega162-nek a PC-vel való kommunikálása volt. Max232 helyesen van bekötve igazából kizárt hogy az áramkörnek hibája legyen az adat szépen kimegy rajta és a Hiperterminál látja is azt a karaktert amit kiküldtem, DE, az összes többi létező soros portot figyelő szoftver egy hibás karaktert lát, ami nem is lenne akkora probléma de egy Perl szoftver fogja feldolgozni a beérkező adatot, és ez a szoftver is ugyanazt a hibás karaktert látja amit a sorosport figyelő szoftverek. Tehát csak a Hyper Terminál látja azt amit valóban kiküldök. 18,432 MHz-es kristályt használok ami 0% hibával dolgozik. És a szoftvernek is jónak kell lennie hisz a hitperterminál a jó karaktert látja, akkor most mi van? Például kiküldök egy s betűt és egy ó-t lát midnen a hiperterminál meg látja azt az s-t... Nem értem én ezt...
Szia!
A 7 bites illetve a 8 bites adatformátum különbségből fakad a hiba. Az "s" kódja 0x73, az "ó" kódja 0xF3. A hiperterminál lemaszkolja a 7. bitet, a többi program megmutatja. Megoldások - Az AVR és a PC azonos bitszámot használjon. - 7 bites az átvitel esetén a legfelső bitet a feldolgozás előtt törölni kell.
Uhhhh köszi életet mentettél!
Tervben volt egyébként hogy lecsekkolom mi helyett mit lát csak zavart hogy a terminál miért látna mást hisz ugyanugy van paraméterezve mint a többi portfigyelő... De megoldotta a gondot, igazából az volt a baj, hogy egy másik példaprogramból ez volt a kód: UCSR1C = (1 << URSEL) | (3 << UCSZ0); És ezt én elfogadtam jónak holott, ki kellett írni hogy UCSR1C = (1 << URSEL) | (1 << UCSZ10)| (1 << UCSZ11); wáááááááááá örület, az ilyen.... Most totál amatőrnek érzem magam... :S>>>>>>>>>>
Üdv! Tudtok abban segíteni, hogy az atmel atmega 162 mely lábait kell a programozóra kötni?
|
Bejelentkezés
Hirdetés |