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

Преобразование уровней

Собрал, подключил по даташиту, только источник питания 4.5В написал простенькую программку, чтобы посмотреть как оно работает. Простейший код, только для того чтобы проверить.

 

 #include <avr/io.h>
   #include <avr/delay.h>
   #define F_CPU 1000000UL  

void USART_Transmit (unsigned char data)
   {
     while ( !(UCSR0A & (1<<UDRE0)) )
      ;
     UDR0 = data;     
   }

void USART_Init (unsigned int baud)
   {
     UBRR0H = (unsigned char)(baud>>8);
     UBRR0L = (unsigned char)(baud);

     UCSR0B = (1<<RXEN0)|(1<<TXEN0);
     UCSR0C = (1<<UCSZ00)|(1<<UCSZ01);
   }

void Beep (unsigned int time)
   {
     PORTC = 0xff;
     _delay_ms(time);
     PORTC = 0x00;
     _delay_ms(time);
   }
   
int main(void)          
   {
   DDRC = 0xff;
   PORTC = 0x00;
   USART_Init (51);
   
   while (1) 
   
   {  
USART_Transmit ('f');
Beep (100);
   }

}

На той стороне HyperTerminal 1200 скорость 8 бит, четность нет, один стоп бит. На экране пустота и тишина. Проверял, цеплял на этот же шнурок вместо микросхемы и макса просто GPSку - выдает данные на ура, всё идет. Здесь же просто пустота. При ошибке по скоростям у меня должен быть мусор вроде. Нету даже мусора. Порядок соединения входов-выходов вроде верный, но на всякий случай перебрал все варианты. Ноль эмоций. На ноге выхода микросхемы вроде сигнал есть насколько я могу его увидеть тестером. На ноге выхода макса стабильные минус где-то 7-8В которые там сохраняются независимо от того соединен он с микросхемой или нет.

 

Скажите где стоит искать проблему?

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


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

Посмотрел ДШ на преобразователь уровней. Минимальное питание 4.5 вольта. Но я бы не верил показаниям тестера а запитал бы через интегральный стабилизатор пятью вольтами.если не поможет то вполне реально,ещё что микросхема бракованая, поставьте другую.

и вашу схему не мешало бы посмотреть

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


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

Скажите где стоит искать проблему?
Для начала - в вашем "железе". Приведите схему вашего подключения с распиновкой.

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


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

Посмотрел ДШ на преобразователь уровней. Минимальное питание 4.5 вольта. Но я бы не верил показаниям тестера а запитал бы через интегральный стабилизатор пятью вольтами.если не поможет то вполне реально,ещё что микросхема бракованая, поставьте другую.

 

Дааааа, программисты.... :)

 

 

Rinin, max232 проверить просто - закоротите txd и rxd с "логической" стороны и попечатайте в гипертерминале без эхо

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


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

Дааааа, программисты.... :)

maximiz, у меня был случай когда попадалась микросхема 232 которая отказывалась работать от 4.5 вольта. подал пять вольт - заработала. проверить как Вы сказали то можно, но если у человека идет с МК данные а на выходе ничего нету то обясните что от этого изменится?

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


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

что от этого изменится?

 

Особо ничего - проверим работает ли транслятор (этот экземпляр от имеемого питания).

 

 

 

у меня был случай когда попадалась микросхема 232 которая отказывалась работать от 4.5 вольта.

 

Вполне может случиться при высоких бодрейтах. На 1200n1 - не верю/либо мс откровенный брак.

 

 

но если у человека идет с МК данные а на выходе ничего нету то обясните что от этого изменится?

 

Это подозрения. Что "идёт". Если нет осциллоскопа, то можно светодиод повесить на txd контроллера через емкость примерно на 0,1 мкФ :)

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


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

Это подозрения. Что "идёт"

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

USART_Transmit (0xFF);

и сказал бы получил 4.2 вольта, выдавал 0x00 получил 1.1 вольт

тогда бы я сказалбы что "идёт".

Ну да ладно, давайте автора подождём. Пускай ещё тип МК скажет для пущей уверенности.

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


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

Пока закоротить и попечатать не помогло, завтра поменяю кой чего из железа, потому что не везде мне нравится как собрал, попробую поставить другой экземпляр макса и отпишусь.

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


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

Пока закоротить и попечатать не помогло,

А при закорачивании тхд контроллера хоть отключили? Может также помочь заресечивание контроллера на время теста, чтобы зет был на тхд.

 

Право-слово, Вы не обижайтесь. :) Для меня программирование пока проблема, а по аппаратной части не особо.

 

Осциллоскоп есть? На летающих емкостях мах-а посмотрите и есть ли по 9 вольт на плюс-минус? Плюс/минус можно глянуть стрелочным тестером тож

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


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

у меня был случай когда попадалась микросхема 232 которая отказывалась работать от 4.5 вольта.

5-ти вольтовые максы и от 2.5V работают.

Скорее компу не понравились выдаваемые уровни или брак.

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


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

Так:

unsigned int time;
//...
_delay_ms(time);

делать нельзя. Можно так:

_delay_ms(100);

Читайте или комментарии в delay.h, или форум.

 

F_CPU следует определить в Makefile, ну или хотя бы _до_ подключения delay.h эту константу использующего.

 

 

Дежавю! http://electronix.ru/forum/index.php?showtopic=51075

Изменено пользователем SysRq

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


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

Так:
unsigned int time;
//...
_delay_ms(time);

делать нельзя. Можно так:

_delay_ms(100);

Читайте или комментарии в delay.h, или форум.

 

F_CPU следует определить в Makefile, ну или хотя бы _до_ подключения delay.h эту константу использующего.

Совсем запугали...:)

// из delay.h
#ifndef F_CPU
/* prevent compiler error by supplying a default */
# warning "F_CPU not defined for <util/delay.h>"
# define F_CPU 1000000UL
#endif
...
void
_delay_ms(double __ms)
{
...
}

Это означает, что ежели юзер программер забыл задать F_CPU, компилятор будет считать F_CPU=1000000UL (но ругнется в лог), а в качестве аргумента _delay_ms() (как и _delay_us()) проглотит и double.

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


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

Осциллоскоп есть? На летающих емкостях мах-а посмотрите и есть ли по 9 вольт на плюс-минус? Плюс/минус можно глянуть стрелочным тестером тож
Он же написал что

На ноге выхода макса стабильные минус где-то 7-8В которые там сохраняются независимо от того соединен он с микросхемой или нет.
Значит инвертор и даблер макса работают.

ИМХО, основанное лишь на интуиции, подсказывает, что топик-стартер с подключением что-то там напутал.

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


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

5-ти вольтовые максы и от 2.5V работают.
Неправда, далеко не все. Когда-то в студенческие годы делал программататоры для сотовых на максе и 78L05 все это дело питалось от COM-порта. На некторых партиях напряжение просаживалось вольт до трех и ниче не работало.

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


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

Совсем запугали...:)

...

а в качестве аргумента _delay_ms() (как и _delay_us()) проглотит и double.

 

Еще одна цитата из delay.h:

 

\note In order for these functions to work as intended, compiler

optimizations <em>must</em> be enabled, and the delay time

<em>must</em> be an expression that is a known constant at

compile-time. If these requirements are not met, the resulting

delay will be much longer (and basically unpredictable), and

applications that otherwise do not use floating-point calculations

will experience severe code bloat by the floating-point library

routines linked into the application.

 

Анатолий.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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