реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> подглючивает мега8. Как выловить?, периодически в USART выдается буква "я"
Метценгерштейн
сообщение Jan 29 2011, 18:10
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



т.е. если на несколько часов оставить программу работать, с разрешенным USARTом и включенной Terraterm, то просмотрев логи, периодически проскакивает русская буква "я". Обычно целые строки из яяяяяяяяяяяяяяяяяяяяяяя. Происходит спонтанно это, программа крутится по циклу, этой я в программе, есс-нно нет.

Кто- нибудь сталкивался? Где может быть засада? Может питание грязное?
Go to the top of the page
 
+Quote Post
Дмитрий Ветра
сообщение Jan 29 2011, 18:39
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 6-12-07
Из: Рига, Латвия
Пользователь №: 33 036



Цитата(Метценгерштейн @ Jan 29 2011, 20:10) *
т.е. если на несколько часов оставить программу работать, с разрешенным USARTом и включенной Terraterm, то просмотрев логи, периодически проскакивает русская буква "я". Обычно целые строки из яяяяяяяяяяяяяяяяяяяяяяя. Происходит спонтанно это, программа крутится по циклу, этой я в программе, есс-нно нет.

Кто- нибудь сталкивался? Где может быть засада? Может питание грязное?


Я бы обратил внимание на то, как сконфигурирован порт PD,1. Питание тоже может сказываться, но при определенных обстоятельствах, я с этого начал пост.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jan 29 2011, 19:15
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Код буквы "я" в кодировке windows-1251 - 0xFF (все биты - единички).
То есть, терминалу достаточно случайно поймать стартовый бит, и получится "я". Смотрите помехи.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Jan 29 2011, 19:31
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



Код
    PORTD = (0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(0<<1)|(0<<0);            
    DDRD =(1<<7)|(0<<6)|(0<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0);


Т.е. полагаете, просто наводки на провода идут, и терминалка ловит наводки и выводит их как"я" ?
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jan 29 2011, 19:40
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Метценгерштейн @ Jan 29 2011, 22:31) *
Т.е. полагаете, просто наводки на провода идут, и терминалка ловит наводки и выводит их как"я" ?

Это один из вариантов. Другая возможная причина - происходит сброс, и при инициализации UART проскакивает ложный старт-бит (если порт конфигурируется прежде чем UART, и/или нет подтяжек на входе трансивера).
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Jan 29 2011, 19:50
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



сначала я конфигурирую УАРТ, затем порт. Но я это делаю в IAR, т.е. в ф-ии
char __low_level_init (void) { }

Возможно, ИАР при выходе из этой ф-ии сам как-то хитро инициализирует контроллер... мысль. Хотя, возможно, просто помехи.
Пока не переделал печать, как от помех избавиться можно? Кондеров навешать сигнальные провода, и заземлить их?
Go to the top of the page
 
+Quote Post
Дмитрий Ветра
сообщение Jan 29 2011, 20:34
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 6-12-07
Из: Рига, Латвия
Пользователь №: 33 036



Цитата(Метценгерштейн @ Jan 29 2011, 21:31) *
Код
    PORTD = (0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(0<<1)|(0<<0);            
    DDRD =(1<<7)|(0<<6)|(0<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0);


Т.е. полагаете, просто наводки на провода идут, и терминалка ловит наводки и выводит их как"я" ?


Я бы, все же, держал PD,1 подтянутым к плюсу - PORTD = ...|(1<<1)|...
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Jan 29 2011, 20:43
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



хорошо, пока что промыл плату еще раз - сохнет.

у меня в схеме уровень PD1 5 вольт надо было привести к 3,3 уровню для модема. т.е. я его завожу на делитель из двух резисторов 4,3 и 5,6 кОм.

Уверены, что стоит подтянуть PD1? Мог мой делитель повлиять?
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jan 29 2011, 20:50
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Метценгерштейн @ Jan 30 2011, 00:43) *
Уверены, что стоит подтянуть PD1?

Конечно.
Но если контроллер сбрасывается, то это нужно отловить обязательно, даже если подтяните вывод и эффект пропадет.
Нужно бороться со сбросом в первую очередь.
А подтяжка очевидна сама по себе.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Дмитрий Ветра
сообщение Jan 29 2011, 20:51
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 6-12-07
Из: Рига, Латвия
Пользователь №: 33 036



Цитата(Метценгерштейн @ Jan 29 2011, 22:43) *
хорошо, пока что промыл плату еще раз - сохнет.

у меня в схеме уровень PD1 5 вольт надо было привести к 3,3 уровню для модема. т.е. я его завожу на делитель из двух резисторов 4,3 и 5,6 кОм.

Уверены, что стоит подтянуть PD1? Мог мой делитель повлиять?
Дело в том, что согласно Вашему коду, PD,1 проинициализирован как выход и притянут к корпусу. Т.е. внешние подтяжки ему по-барабану. Тогда уж лучше PD,1 определить как вход и притянуть к плюсу.
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Jan 29 2011, 21:05
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



Все, спасибо.

подтяну PD1 и буду с питанием как- то фильтровать.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jan 29 2011, 21:07
Сообщение #12


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



настройте ногу TX на вывод с логической 1
настройте ногу RX на ввод с пулапом

Потыкайтесь осциллографом к этим линиям и понаблюдайте картинки, сравните то что Вы видите с желаемым - все вопросы отпадут.

Осциллограф - это необходимость для программиста контроллеров...
Удачи!


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Jan 30 2011, 08:58
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



еще хотел спросить, раз речь зашла про внутреннюю подтяжку- ее без проблем можно использовать для, например, подтяжки кнопочки к +5, чтобы отлавливать замыкание на землю? Или есть какие- то причины, почему все- же лучше использовать внешние подтягивающие резисторы?
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jan 30 2011, 10:09
Сообщение #14


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Метценгерштейн @ Jan 29 2011, 21:10) *
Кто- нибудь сталкивался? Где может быть засада? Может питание грязное?

А вы на кварце работаете или на встроенной RC-цепочке? Если второе, то от буквы "я", т.к. кода FF, вам никогда не избавиться.
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Jan 30 2011, 10:16
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



на кварце
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 22:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.03346 секунд с 7
ELECTRONIX ©2004-2016