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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> sim300dz. Проблема с приемом данных на мк, USART&sim300dz
Aleksey N.
сообщение Aug 27 2010, 07:09
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 27-08-10
Пользователь №: 59 132



С первой задачей, а именно взаимодействие sim300dz и RS232(комп), я отлично справился. Посылаю данные через терминал, модуль адекватно реагирует, отвечает и выполняет команды.
А вот с взаимодействием sim300dz и mega16 возникла проблема. Команды с контроллера успешно "доходят до жсм модуля" и выполняются (проверял, к примеру командой выключения AT+CPOWD=1 - модуль вырубается). Но на контроллер ответы приходят искаженные crying.gif .
Ответы с sim300dz вывожу на LCD на базе hd44780. Вместо "OK" выводится "cPU", а на команду "AT+CSMINS?" приходит ответ "PCMM", ну и т.д.
Причем это не наводки и не случайный мусор - ответы каждый раз одинаковые.
Совсем в ступоре, почему на комп приходят нормальные ответы, а на контроллер кракозябры. По первому впечатлению ошибка в программной части, но я ничего не смог исправить.

Очень надеюсь на вашу помощь.

Напряжение на max3232 - 2.8V, кондеры 0.1 мкф, подключение по даташиту.
Относительно mega16:
1) пробовал скорости обмена 9600, 115200 бод - ответы одинаковые и нечитаемые.
2) пробовал кварцы 4MHz и 7.3728Mhz - ответ на "AT" в первом случае был "b", во втором "cPU"
Фьюзы(avr studio): CKOPT установлен, SUT_CKSEL = "Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 64 ms"

Далее привожу часть проги:
CODE

#define USART_BAUDRATE 9600
#define BAUD_PRESCALE ((F_CPU/(USART_BAUDRATE * 16UL)) - 1)

int main (void)
{
cli();

lcd_init(LCD_DISP_ON);
lcd_puts("!LCD Test");
_delay_ms(1000);
lcd_clrscr();

UCSRB |= (1 << RXEN) | (1 << TXEN); // Turn on the transmission and reception circuitry
UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); // Use 8-bit character sizes

UBRRL = BAUD_PRESCALE; // Load lower 8-bits of the baud rate value into the low byte of the UBRR register
UBRRH = (BAUD_PRESCALE >> 8); // Load upper 8-bits of the baud rate value into the high byte of the UBRR register

UCSRB = ((1<<TXEN)|(1<<RXEN) | (1<<RXCIE)); // Enable receiver and transmitter and receive complete interrupt
sei(); // Enable the Global Interrupt Enable flag so that interrupts can be processed

USART_Transmit("AT\r\n");

lcd_puts("!z"); //debug message
_delay_ms(1000);

USART_Transmit("AT+CSMINS?\r\n");
lcd_puts("!z"); //debug message

for (;;) {}
}

ISR(USART_RXC_vect)
{
char ReceivedByte;
ReceivedByte = UDR; // Fetch the recieved byte value into the variable "ByteReceived"

lcd_putc(ReceivedByte);

/*if(ReceivedByte=='O'||ReceivedByte=='o')
lcd_puts("(o)");
if(ReceivedByte=='K'||ReceivedByte=='k')
lcd_puts("(k)"); - и это писал, т.к. даже в кодировке LCD засомневался*/
}


Сообщение отредактировал Aleksey N. - Aug 27 2010, 07:13
Go to the top of the page
 
+Quote Post
CADiLO
сообщение Aug 27 2010, 07:28
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 6 023
Регистрация: 26-08-05
Из: Днепр
Пользователь №: 7 988



А мега что, тоже через MAX3232 подключена ?

Как Вы мегу согласовываете с модулем ?


--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
Go to the top of the page
 
+Quote Post
kovz
сообщение Aug 27 2010, 07:58
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 25-07-05
Пользователь №: 7 079



1. "AT\r\n" - в командах отсылаемых модему \n не нужен
2. ответ "OK" от модема будет прислан как "\r\nOK\r\n". Это касается всех ответов за очень редким исключением.
3. успевает ли вывестись символ на экран, до того как будет получен новый(зависит от реализации lcd_putc() )? Это можно узнать проверив флаг переполнения буфера приема перед чтением очередного байта.

Сообщение отредактировал kovz - Aug 27 2010, 08:00
Go to the top of the page
 
+Quote Post
Aleksey N.
сообщение Aug 27 2010, 10:52
Сообщение #4





Группа: Новичок
Сообщений: 7
Регистрация: 27-08-10
Пользователь №: 59 132



Цитата(CADiLO @ Aug 27 2010, 13:28) *
А мега что, тоже через MAX3232 подключена ?

Как Вы мегу согласовываете с модулем ?

Да, мега через MAX3232: 14 ножка макса (Т1out) -> Rx меги, 13-ая(R1in) -> Tx меги
12-ая макса (R1out) -> RXD жсм модуля
11-ая макса (T1in) -> TXD жсм модуля
Конденсаторы 0.1 мкф по даташиту

Сообщение отредактировал Aleksey N. - Aug 27 2010, 10:54
Go to the top of the page
 
+Quote Post
Slonofil
сообщение Aug 27 2010, 10:53
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



Ай-ай-ай, надо же документацию читать внимательно! МАХ нужна только при подключении SIM к ПК, при соединении модема с МК нужно лишь согласовать уровни при питании МК свыше 3В.
Go to the top of the page
 
+Quote Post
Aleksey N.
сообщение Aug 27 2010, 10:57
Сообщение #6





Группа: Новичок
Сообщений: 7
Регистрация: 27-08-10
Пользователь №: 59 132



Цитата(kovz @ Aug 27 2010, 13:58) *
1. "AT\r\n" - в командах отсылаемых модему \n не нужен
2. ответ "OK" от модема будет прислан как "\r\nOK\r\n". Это касается всех ответов за очень редким исключением.
3. успевает ли вывестись символ на экран, до того как будет получен новый(зависит от реализации lcd_putc() )? Это можно узнать проверив флаг переполнения буфера приема перед чтением очередного байта.

Спасибо, kovz, внесу коррективы в программу и проверю еще раз
Go to the top of the page
 
+Quote Post
CADiLO
сообщение Aug 27 2010, 10:59
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 6 023
Регистрация: 26-08-05
Из: Днепр
Пользователь №: 7 988



Да уж - выход макса который может быть до 12 вольт подать на мегу..... Жестоко.....

Изучаем форум - вопрос согласования разбирался неоднократно.


--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
Go to the top of the page
 
+Quote Post
Aleksey N.
сообщение Aug 27 2010, 11:13
Сообщение #8





Группа: Новичок
Сообщений: 7
Регистрация: 27-08-10
Пользователь №: 59 132



Цитата(Slonofil @ Aug 27 2010, 16:53) *
Ай-ай-ай, надо же документацию читать внимательно! МАХ нужна только при подключении SIM к ПК, при соединении модема с МК нужно лишь согласовать уровни при питании МК свыше 3В.

А МК у меня питается от 5В

Цитата(CADiLO @ Aug 27 2010, 16:59) *
Да уж - выход макса который может быть до 12 вольт подать на мегу..... Жестоко.....

Изучаем форум - вопрос согласования разбирался неоднократно.

Ээ, мда, я думал выход макса3232 ~5В, а макса232 ~12В. Извините если не прав, щас возьму даташит

CADiLO, спасибо за замечание. Я очень жестоко ошибся с уровнем T_OUT
Go to the top of the page
 
+Quote Post
kovz
сообщение Aug 27 2010, 11:37
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 25-07-05
Пользователь №: 7 079



у max3232 нижний предел напряжений ниже.
Go to the top of the page
 
+Quote Post
Slonofil
сообщение Aug 27 2010, 11:45
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 327
Регистрация: 6-10-09
Из: РФ :: Ленинград
Пользователь №: 52 781



В принципе, подавая на МЕГУ напряжение с выхода МАХ, ничего страшного произойти не должно. У драйверов RS-232 выходное напряжение не превышает удвоенного напряжения питания (внутри стоит DC/DC удвоитель, для чего снаружи обычно подключаются конденсаторы). Поэтому для МАХ3232 напряжение на выходе не должно быть больше 6В. Плюс к этому, входы МЕГИ должны иметь ограничительные диоды на землю и питание. Это я к тому, что сжечь контроллер Вы, конечно, не сожгли, но такая схема включения не будет работоспособна. Модем имеет входные-выходные уровни в ТТЛ, т.е. 0...0,3В - это лог.0, 0,8*VCC...VCC - это лог.1. У интерфейса RS-232 всё по-другому.
Go to the top of the page
 
+Quote Post
CADiLO
сообщение Aug 27 2010, 12:09
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 6 023
Регистрация: 26-08-05
Из: Днепр
Пользователь №: 7 988



Добавлю что дело даже не в повышеном напряжении. На RS-232 ведь формируется еще и отрицательное напряжение.
А по спецификации может гулять от 3 до 12 вольт как в плюс так и в минус.
Вобщем товарищу нужно сделать просто нормальное согласование из 5 в 2.8 и большая часть проблем пропадет.
Посмотреть можно тут.
http://microchip.ua/simcom/GSM-GPRS-GPS/Ap...seminar2009.ppt
страничка 24 и потом здесь
http://microchip.ua/simcom/GSM-GPRS-GPS/Ap...0%20seminar.ppt
страничка 16

Ну и вообще полезно оба семинара прочитать....


--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
Go to the top of the page
 
+Quote Post
Aleksey N.
сообщение Aug 27 2010, 12:26
Сообщение #12





Группа: Новичок
Сообщений: 7
Регистрация: 27-08-10
Пользователь №: 59 132



Спасибо всем за помощь, буду разбираться...
Go to the top of the page
 
+Quote Post
Mitsufan
сообщение Aug 27 2010, 16:23
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 13-03-07
Пользователь №: 26 123



Вопрос к CADiLO.

Так можно ли подключаться к SIM300 от контроллера с питанием 3.3В с использованием последовательных резисторов? Недавно на форуме вы вроде бы говорили, что только 3В допустимо. Теоретически, по аналогии с микроконтроллерами с защитными диодами, работать с 3.3В сигналами и резисторами модуль должен, но как происходит реально в жизни, сталкивались ли вы (или ваши клиенты) с проблемами при 3.3В питании?
Go to the top of the page
 
+Quote Post
uzz
сообщение Aug 27 2010, 20:20
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 31-03-08
Пользователь №: 36 362



Почитайте рекомендации в семинарах:

SIM300 seminar.ppt
SIM300 seminar2009.ppt
Go to the top of the page
 
+Quote Post
Aleksey N.
сообщение Aug 28 2010, 09:24
Сообщение #15





Группа: Новичок
Сообщений: 7
Регистрация: 27-08-10
Пользователь №: 59 132



1.
Цитата(CADiLO @ Aug 27 2010, 18:09) *
Добавлю что дело даже не в повышеном напряжении. На RS-232 ведь формируется еще и отрицательное напряжение.
А по спецификации может гулять от 3 до 12 вольт как в плюс так и в минус.
Вобщем товарищу нужно сделать просто нормальное согласование из 5 в 2.8 и большая часть проблем пропадет.

CADiLO, повторюсь еще раз, что команды, передаваемые с контроллера на sim, успешно выполняются модулем. Проблема только с приемом ответа, т.е. с цепочкой MAX T_OUT <-> MEGA RX. Я взял осциллограф и подцепился к T_OUT макса. Высокий уровень сигнала составил ~5.5 В, низкий ~ -3.5 В.
Помойму даже при прямом подключении MAX T_OUT <-> MEGA RX контроллер должен корректно обработать уровни напряжений и выдать читаемый ответ(, но у меня вместо "ОК" - "PC"). - или я не прав?

2.

Цитата(Slonofil @ Aug 27 2010, 17:45) *
Модем имеет входные-выходные уровни в ТТЛ, т.е. 0...0,3В - это лог.0, 0,8*VCC...VCC - это лог.1. У интерфейса RS-232 всё по-другому.

Честно говоря, поиском не утруждал себя, поскольку щас немного тороплюсь, поэтому задам вопрос: у меня в голове небольшая нестыковка между утверждениями
* Все нижеперечисленные(TXD, RXD,...) сигналы (кроме ADC) имеют логический уровень 2.8V (SIM300 seminar.ppt, 12 page)
*
Цитата(Slonofil @ Aug 27 2010, 17:45) *
Модем имеет входные-выходные уровни в ТТЛ, 0,8*VCC...VCC - это лог.1
- т.е. примерно 3.2В - 4.0 В.

Будьте добры, разъясните, если не сложно.

Сообщение отредактировал Aleksey N. - Aug 28 2010, 09:24
Go to the top of the page
 
+Quote Post

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

 


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


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