| Автор |
Съобщение |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
 ATmega Usart
Експериментирах си с Usarta една ATmega16 и всичко си беше добре докато не пробвах да вдигна връзката на по висока скорост.
До 57600 няма никакви забележки но като вдигна скороста на 115200 се омазва всичко.Даже и единичен байт да пратя го приема грешно.
Смених кварца,но не е там проблема.
Тествам с ComPortToolKit и връзката ми е с адаптер с MAX232.
Въпроса ми дали има някаква особенност с работата със USART-a на по висока скорост или да търся проблем в хардуера.
Всъщност дължината на RS232 кабела ми е 3,5 метра но не ми се вижда чак толкова много с същия кабел си връзвам JTAG-A на 115200 и си работи.
|
| Пон Юни 06, 2005 12:26 am |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Абе по принцип COM-a на компютера не е много придирчив. Но не знам как е изпълнено дкодирането в Мегата. При новите пикове например можеш да превключваш честотата на "семплиране" - грубо казно на порта на три степени. И толерантноста към грешки намалява/увеличава се.
Що не вържеш скопа и не видиш в двата края къде е проблема. Като сравниш данните навсякъде по веригата ще видиш от къде идва грешката. Според мен е от дългия кабел. Обикновенно като имам бърза дълга връзка - слага по 10мкф на Макса, нищо че в новите даташеетове пише 0,1мкф.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Пон Юни 06, 2005 9:09 am |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
Аз ползвам 5+ м кабел и си бачка перфектно на 115200, точно с мега16. Провери си настройките на софтуера от страна на ПЦ-то. Почти сигурен съм, че е там.
Кондензаторите на макс-а 1 uF ли са? Щото съм виждал някои да слагат 0.1, и от там се преебват нещата.
|
| Пон Юни 06, 2005 9:13 am |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Ами то в биоса има само типа на порта,там си е standart.
Опциите дето са в port seting ги инициализира ComPortToolKit. Да не би да има нещо друго дето се настроива?
Макса ми е с 10мф. Имах една връзка между адаптера и процесора около 10см намалих я на 2 но ефект никакъв.
На осцилоскопа изглежда нормално от страна на Мегата
Ефекта е като да се разминават честотите на COM-а и Мегата.
Като ми остане време ще сложа друга Мега с едим дисплей да прослушвам с нея какво става.
|
| Пон Юни 06, 2005 11:55 am |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Пускай единични байтове с голяма пауза между тях. Провери кои битове приема вярно - ако са само старшите, имаш малка разлика в скоростите ( 10 -20 % ). Ако няма нищо общо - най-вероятно имат голями разлики ( в пъти ). Пускай 0x00, 0x55 и 0x77 за да провериш дали нямаш заглаждане на фронтовете някъде по трасето.
|
| Пон Юни 06, 2005 12:44 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Мойта мислъл беше да изкубеш кабела от компютера и да се закачиш едновремнно на ТХ на мегата и на края на кабела, да видиш какво е разминаването във фронтовете. И дали въобще има някако съвпадение - защото нито един байт да не приемеш (макар и сбъркан)???
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Пон Юни 06, 2005 1:25 pm |
|
 |
|
ДедоБоре
Ранг: Форумен бог
Регистриран на: Нед Ное 21, 2004 11:31 pm Мнения: 10088
|
ако правилно съм разбрал:
пращаш байт от мегата на 115К и се опитваш да го приемеш с РС под WIN?
ако е така:
- трябва да си сигурен, че го пращаш само гогато мегата е готова
UDRE бит в регистърUCSRA.
- каква е честотата на кварца? по принцип асинхронната комуникация трябва да може да се осъществява при bitrate error до +-3%. твоята колко е?
- хардуерен проблем? ако имаш диференциална мода на осцилоскопа, премери какво става на крачето на мегата и на края на кабела
- тъпия уиндовс. но не би трябвало
ако имаш грешки при приемане в мегата, това е друг случай.
айде уточни се
|
| Пон Юни 06, 2005 2:39 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Ако има скоп, нещата са много по-лесни. Предавай непрекъснато 2 байта : 0xFF и някакъв друг и гледай със скопа какво става. Първият байт е за да се ориентираш по картинката какво гледаш.
|
| Пон Юни 06, 2005 2:47 pm |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
Извинете ме, ще се намеся малко встрани, само да попитам, какъв макс. бодрейт държат тия меги (нема време да свалям целите PDF-и)
|
| Пон Юни 06, 2005 2:48 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Това е и отговора на въпроса,не знаех че има ограничение +-3%. Мислех
че е по голямо.
8.5% е при 8М кварц. Гледах го по таблицата с примери за различни честоти на кварца и си мислех че като го дават като възможен трябва да е ОК.  . Ама кой да мисли.
Всъщност от какво се определя това ограничение максимално допустимата грешка?
Predator_MF При 20Мhz
Asynchronous Normal Mode - 1,25Mbs
Asynchronous Double Speed Mode - 2.5 Mbps
|
| Пон Юни 06, 2005 3:23 pm |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
Ами смятай примерно при 115200 bps, 8% отлконение е 9260 бита всяка секунда. Значи от едната страна някой предава на 124460 от другата страна се слуша на 115200. Заради ей такива сметки ми се наложи да напиша преди време един PIC USART calculator, намерих един кварц 22,118400MHz точно изчислено за 460800bps с 0% грешка  Явно е някакъв стандарт, с повече от +-5% не мога да предам нищо.
|
| Пон Юни 06, 2005 3:37 pm |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
Пробвай да го пуснеш на 57600 с удвояване. Грешката я дават 2.1%.
|
| Пон Юни 06, 2005 3:51 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Като вече знам какъв е проблема решения много.
А просто си експериментирам с една библиотечка за сериина комуникация дето си я правя сега.
|
| Пон Юни 06, 2005 4:05 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Ами няма еднозначно обяснение защо е +-3%. По принцип зависи от честотата с която приемника накъсва приетия сигнал, както и от алгоритъма му за проверка за грешка. До колкото си спомням всички нови PC-та се правят UART 16550 съвместими,така че ако се поинтересуваш от метода на работа на тоя чип, сигурно ще намериш точната калкулация. Но тя почти сигурно няма да се препокрива с алгоритъма използван в мегата. Както и да е, аз не си позволявам повече от 2% разлика и досега ядове не съм имал.
Пиковете на 20 и 40 Мхз докарват 1,25%, значи мегата горе долу трябва да е същата.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Пон Юни 06, 2005 4:34 pm |
|
 |
|
ДедоБоре
Ранг: Форумен бог
Регистриран на: Нед Ное 21, 2004 11:31 pm Мнения: 10088
|
ами има си стандарт бе момчета. V24
от там са тези 3%
ако искаш да си обясниш принципа, погледни дейташита на мегата в часста му приемане. там има едни много хубави картинки са семплиране на отделен бит и мажоритарна логика
колкото по-голяма е скоростта, толкова по-точен трябва да ти е битрейта. и кварца трябва да е с по-шантава честота, която да се дели на цяло число. например 7.3728 или 14.756
|
| Пон Юни 06, 2005 6:10 pm |
|
|