Проблема с UART
- Войдите на сайт для отправки комментариев
Вс, 21/09/2014 - 23:27
Доброго дня всем.
Есть рабочий проект на Уно с GPRS модемом работающим по UART0 при переносе проекта на Мегу проект не работает. Есть подозрение что проблема в портах МК на К=Уно UART на порту D на Меге на порту E.
ниже кусочки библиотеки, вопрос куда рыть.
void UART0_rx_reset( void ) | |
{ | |
UCSR0B &= ~(1<<RXCIE0); | |
rx_i = rx_wr_i = 0; | |
rx_overflow = rx_ack = 0; | |
rx_buffer[ rx_wr_i ] = '\0'; | |
} | |
void UART0_rx_on( void ) | |
{ | |
UCSR0B |= ( 1 << RXCIE0 ); | |
} | |
void UART0_rx_off( void ) | |
{ | |
UCSR0B &= ~( 1 << RXCIE0 ); | |
} | |
void UART0_setSearchString( unsigned char Response ) | |
{ | |
UCSR0B &= ~( 1 << RXCIE0 ); | |
searchFor = (const char*)pgm_read_word(&searchStrings[Response]); | |
searchStr = Response; | |
rx_i = 0; | |
} | |
static u8 getchar( void ) | |
{ | |
while ( !(UCSR0A & (1<<RXC0)) ) | |
{ | |
} | |
; | |
return UDR0; | |
} |
А пример работает?
это кусочек библа.
Могу выслать всю библиотеку, но думаю никто рыть её не будет.
нужно принципиальное понимание, что поправить что бы обрашение бело на нужный порт.
это кусочек библа.
Могу выслать всю библиотеку, но думаю никто рыть её не будет.
нужно принципиальное понимание, что поправить что бы обрашение бело на нужный порт.
Руки?
Дельный совет!
Другие мысли есть? или знаниев не хватает! хаить все могут, а вот дельный совет дать могут только единицы.
жди лешака
жди лешака
Гыыы. Думаеш лешак поймет какие там порты К и Е и остальной алфавит. А в хрустальном шаре увидит модель модуля который установили.
хз. но может ему будет не лень ковырятся
хотя наверно даже ему будет лень лезть в даташит и искать какие регистры надо поменять
Берем схемы УНО и Мега смотрим и видим порты. Как я понимаю большой разницы нет, что за девейс подключен к UART0 если он молчит то любой девайс работать не будет.
В моем случае это GPRS модем, залив скеч модем не обменивается данными с МК. подсоединил к UART УНО в качестве монитора, там тишина, проверил на остальных портах тоже тишина, заменил МК ситуация таже.
в теории должно работать НО.
ты выложил код из библиотеки. и там не используются ардуиновские функции, а прописаны сразу регистры
и соответственно переехать на другой камень не поменяв регистры не получится
уно собрана на Atmega328. а мега на Atmega2560. это разные камны, регистры тоже разные
это если использовать ардуиновские функции можно легко переехать
В этом и вопрос, вот часть скетча и части библиотеки куда он обращается
уже писал. жди лешака. может он захочет ковырятся и переписывать либу
Весь пример с библиотеками
Я сам её готов переписать, мне бы путь указать :-), чую что unt то рядом но вот где????
А кто такой unt?
Я сам её готов переписать, мне бы путь указать :-),
У ATMega328 за работу с USART-портом отвечают регистры UDRn, UCSRnA, UCSRnB, UCSRnC, UCSRnL, UCSRnH.
У ATMega2560 - те же UDRn, UCSRnA, UCSRnB, UCSRnC, UCSRnL, UCSRnH.
n здесь - номер порта.
Похоже, что черт - который в деталях - сидит где-то в конкретных полях этих регистров.
Составьте табличку: слева - поля регистров в ATMega328, справа - соответствующие им по функциям поля регистров в ATMega2560. Если какую-то строчку не удастся заполнить, вот ее то для консилиума и выкладывайте. А так вы едва ли найдете энтузиаста, который за вас всю черновую работу сделает.
Учитывая что в 328 один хард порт то все регистры будут с номером 0 и естественно должны работать на Меге на на UART0, но не работают.
[...] естественно должны работать на Меге на на UART0 [...]
Из чего следует естественность?
из сопоставления регистров портов. я не обнаружил разницы для обоих камней в вашем посту если и вместо n поставить 0.
в любом случае спасибо за попытку помощи.
из сопоставления регистров портов. я не обнаружил разницы для обоих камней в вашем посту если и вместо n поставить 0.
Паралогизм детектед.
Кроме моего поста есть еще даташиты на рассматриваемые камни - по 4-5 сотен страниц каждый.
А в каталоге <...\hardware\tools\avr\avr\include\avr> - сотни полторы заголовочных файлов, определяющих - в том числе - имена UCSRnX. И какой из этих заголовочных файлов подключается к вашему проекту - х.з.
:-) эхххх пойду за большой лопатой, копать мне видимо долго придется.
а зачем было ардуинку менять если все работало на уно?
необходимость расширения проекта, не хватает каналов для управления и контроля перефирии.
так может писать к самим людям которые поднимали этот проект. не все же на уно сидят. может уже переделывали под мегу
написал, но они молчат.
плюсом я уже половину библиотеки переписал, так как у меня мопед на другом процессоре а он не все AT команды воспринимает.
разработчики ответили, библа под уно на меге работать не будет, а то я сам не знаю. Дельных советов не дают.
вопрос открытый,
ну кому надо переделывать. это же время. даташиты курить
а функционал можно расширить подцепив 2 ардуину например по i2c
видимо придется так делать, но хочется то эстетики
ну тогда в ищу исполнителя. может найдется человек, который за денюжку тебе перелопатит библиотеку, и твое чувство высокого немного в тебе успокоится
Братья есть мысль что проблема в UCSR0C
есть мысли