|
sim300dz. Проблема с приемом данных на мк, USART&sim300dz |
|
|
|
Aug 27 2010, 07:09
|

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

|
С первой задачей, а именно взаимодействие sim300dz и RS232(комп), я отлично справился. Посылаю данные через терминал, модуль адекватно реагирует, отвечает и выполняет команды. А вот с взаимодействием sim300dz и mega16 возникла проблема. Команды с контроллера успешно "доходят до жсм модуля" и выполняются (проверял, к примеру командой выключения AT+CPOWD=1 - модуль вырубается). Но на контроллер ответы приходят искаженные  . Ответы с 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
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 32)
|
Aug 27 2010, 10:52
|

Группа: Новичок
Сообщений: 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
|
|
|
|
|
Aug 27 2010, 10:57
|

Группа: Новичок
Сообщений: 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, внесу коррективы в программу и проверю еще раз
|
|
|
|
|
Aug 27 2010, 11:13
|

Группа: Новичок
Сообщений: 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
|
|
|
|
|
Aug 27 2010, 11:45
|

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

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

Гуру
     
Группа: Свой
Сообщений: 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 Ну и вообще полезно оба семинара прочитать....
--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
|
|
|
|
|
Aug 27 2010, 12:26
|

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

|
Спасибо всем за помощь, буду разбираться...
|
|
|
|
|
Aug 27 2010, 16:23
|
Участник

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

|
Вопрос к CADiLO.
Так можно ли подключаться к SIM300 от контроллера с питанием 3.3В с использованием последовательных резисторов? Недавно на форуме вы вроде бы говорили, что только 3В допустимо. Теоретически, по аналогии с микроконтроллерами с защитными диодами, работать с 3.3В сигналами и резисторами модуль должен, но как происходит реально в жизни, сталкивались ли вы (или ваши клиенты) с проблемами при 3.3В питании?
|
|
|
|
|
Aug 28 2010, 09:24
|

Группа: Новичок
Сообщений: 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
|
|
|
|
|
Aug 29 2010, 14:57
|

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

|
Хотел было ехать за буферами К155ЛП9 (хотел сделать схему из семинара MCU 5.0V <-> SIM), но... Проблему решил 3-вольтовым питанием МК.
|
|
|
|
|
Aug 30 2010, 06:20
|

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

|
>>>Модем имеет входные-выходные уровни в ТТЛ, 0,8*VCC...VCC - это лог.1- т.е. примерно 3.2В - 4.0 В. >>>Будьте добры, разъясните, если не сложно.
Не сложно. Обычная описка, потому как в даташите SIM300DZ_HD_V2.07.pdf (где и следовало посмотреть) сказано 0,7*2.93...2.93. А для SIM300C 0,8*VDD_EXT...VDD_EXT Где VDD_EXT = 2.9v.
Кстати для SIM900 фокус с согласованием резисторами с процем на 3.3 вольта уже нежелателен. Потому как в 300й серии супрессоры защитные стояли на 3.6 вольта, а в 900й стоят на 3.3 вольта. Малейшее превышение и.....
--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
|
|
|
|
|
Aug 30 2010, 07:43
|

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

|
На самом деле, это не описка. Это изложение принципа различения уровней ТТЛ. Вместо VCC для обычных мелкосхем подставляйте VDD_EXT для модема; 0,7 или 0,8 как множитель - не существенно, главное принцип. Надо иметь в виду, что внутри модема есть линейный стаб для питания цифровой части (те самые 2,9...3В), вот от них и надо отталкиваться. Питание модема 3,7...4,2В подаётся, насколько я понимаю, на радиочастотную часть.
Отличие RS-232 от ТТЛ состоит в том, что у него есть отрицательный потенциал (до -18В по стандарту). И пороговые уровни лог.0 и лог.1 тоже отличаются от ТТЛовских. Поэтому Вам в Вашей схеме МАХ вообще не нужна, следует лишь согласовать уровни модема и контроллера. Идеально, конечно, запитывать МК от 3В, тогда никаких дополнительных согласующих элементов не понадобится.
Сообщение отредактировал Slonofil - Aug 30 2010, 07:44
|
|
|
|
|
Aug 30 2010, 08:32
|

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

|
Согласен - я выбрал неудачное слово. Просто Вы дали общее описание, а товарищ понял его применимо к конкретному случаю. Бывает.... >>>>Идеально, конечно, запитывать МК от 3В, тогда никаких дополнительных согласующих элементов не понадобится. Тем более что 3-вольтовые контроллеры сейчас на любой вкус выпускаются.... Ну и про резисторы на SIM900 - если на SIM300 работало 150-220 ом, то на SIM900 меньше 200ом уже открывается защита - порт не работает, а больше 220ом - искажается обмен на скорости выше 9600. Это то что мне попалось увидеть. Так что для массового выпуска я бы на резисторах не делал. Лучше поставить нормальный контроллер 3в. Не, ну можно еще 5% 200ом
--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
|
|
|
|
|
Aug 30 2010, 09:07
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(CADiLO @ Aug 30 2010, 12:32)  то на SIM900 меньше 200ом уже открывается защита - порт не работает, а больше 220ом - искажается обмен на скорости выше 9600. Это то что мне попалось увидеть. Так что для массового выпуска я бы на резисторах не делал. Лучше поставить нормальный контроллер 3в. Не, ну можно еще 5% 200ом  Хм. У меня питание контроллера около 3.6, резисторы 1 кило последовательно просто как защита, и еще 4.7K на "землю" для снижения уровня. На 115200 - без проблем. Килоомные резисторы и на 4 MHz SPI проблем не вызывали. Ну тут да, супрессоры, емкость... Однако ж еще у меня там для отладки FT232 стоит, через те же резисторы - так флешер на 460800 тоже без сбоев работает. Я что-то не так делаю ? P.S. Супрессоры, говорите ? И как тогда получается емкость порядка 20..30 pF по ноге (это я в макете глянул, там от монтажа и разъема еще 5...10 набежало как минимум)...
|
|
|
|
|
Aug 30 2010, 10:33
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 13-08-10
Пользователь №: 58 893

|
Я думаю если питание м.к. будет 4в и модуля тоже праблем недалжно быть и ненада мудрить можно даже напрямую уменя 4.8в общее питание и подключение зделал напримую нармально работает с (sim300).
|
|
|
|
|
Aug 30 2010, 10:48
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 13-08-10
Пользователь №: 58 893

|
<Это из разряда "Вредные советы" Скажите, как зовутся Ваши устройства... чтобы уберечься от покупки >
это 3 года назат было ненайдете но работало нормално я думаю от 3 до 4 в если питание обшее будет нармально, что в этом нетак?? просто 4.8 мне нужно было.
Сообщение отредактировал Prizrac - Aug 30 2010, 10:54
|
|
|
|
|
Aug 30 2010, 11:22
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 13-08-10
Пользователь №: 58 893

|
Там 3,2 + 0,7 а не 3 ...? насколько я помню.
|
|
|
|
|
Aug 30 2010, 11:59
|
Профессионал
    
Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364

|
Цитата это 3 года назат было ненайдете но работало нормално я думаю от 3 до 4 в если питание обшее будет нармально, что в этом нетак?? просто 4.8 мне нужно было. Не так уровни от модуля к процессору и большие токи через порты если нет резистора от процессора к модулю. Рекомендация из разряда "так делать очень плохо". Хорошо если повезет и неприятности вылезут сразу. А если пойдет в серию эта дрянь может вылезать к примеру при изменении температуры...
|
|
|
|
|
Aug 30 2010, 12:37
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 13-08-10
Пользователь №: 58 893

|
да уже прасматриваю, а за дезинфармацию извиняюсь... Цитата а для sim900 такое есть, или это и к sim900 относяца ?????
Сообщение отредактировал Prizrac - Aug 30 2010, 12:51
|
|
|
|
|
Sep 1 2010, 04:26
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 13-08-10
Пользователь №: 58 893

|
я прасматрел дествительно я не так помнил у меня на сим300 было 3.8в а не 4.8в не так помнил, ето било давно.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|