Перейти к содержанию
    

подглючивает мега8. Как выловить?

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

Я бы обратил внимание на то, как сконфигурирован порт PD,1. Питание тоже может сказываться, но при определенных обстоятельствах, я с этого начал пост.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Код буквы "я" в кодировке windows-1251 - 0xFF (все биты - единички).

То есть, терминалу достаточно случайно поймать стартовый бит, и получится "я". Смотрите помехи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

    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);

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Это один из вариантов. Другая возможная причина - происходит сброс, и при инициализации UART проскакивает ложный старт-бит (если порт конфигурируется прежде чем UART, и/или нет подтяжек на входе трансивера).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

char __low_level_init (void) { }

 

Возможно, ИАР при выходе из этой ф-ии сам как-то хитро инициализирует контроллер... мысль. Хотя, возможно, просто помехи.

Пока не переделал печать, как от помех избавиться можно? Кондеров навешать сигнальные провода, и заземлить их?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

    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)|...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

Уверены, что стоит подтянуть PD1? Мог мой делитель повлиять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уверены, что стоит подтянуть PD1?

Конечно.

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

Нужно бороться со сбросом в первую очередь.

А подтяжка очевидна сама по себе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

Уверены, что стоит подтянуть PD1? Мог мой делитель повлиять?

Дело в том, что согласно Вашему коду, PD,1 проинициализирован как выход и притянут к корпусу. Т.е. внешние подтяжки ему по-барабану. Тогда уж лучше PD,1 определить как вход и притянуть к плюсу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

подтяну PD1 и буду с питанием как- то фильтровать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

настройте ногу RX на ввод с пулапом

 

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

 

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

Удачи!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

еще хотел спросить, раз речь зашла про внутреннюю подтяжку- ее без проблем можно использовать для, например, подтяжки кнопочки к +5, чтобы отлавливать замыкание на землю? Или есть какие- то причины, почему все- же лучше использовать внешние подтягивающие резисторы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

А вы на кварце работаете или на встроенной RC-цепочке? Если второе, то от буквы "я", т.к. кода FF, вам никогда не избавиться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...