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

 
 
> mega128 -> UART1,2 -> mega162, аппаратная несовместимость, можно ли обойти ?
west329_
сообщение Nov 3 2008, 09:15
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Отлаживался проект до полного завершения на м128, изначально конечно использовать такой контроллер из за двух аппаратных юартов глупо, как замену был остановлен выбор на м162 собственно из за тех же 2 апаратных юартов.

Проект был закончен, вчера, попытались пересобрать на м162.

Как мы и предпологали, заменой одной только строчки
Код
#include "iom128.h"

на
Код
#include "iom162.h"

не обойдётся.

Сначало отказался работать таймер, пришлось коректировать
Код
void timer0_init(void)
{
#ifdef __ATmega128__
TCCR0 = 0x00; //stop             //10mSec
ASSR  = 0x00; //set async mode
TCNT0 = 0xB9; //set count
OCR0  = 0x47;
TCCR0 = 0x07; //start timer
TIMSK |= 0x01; //ovf T0 active
#endif

#ifdef __ATmega162__
TCCR0 = 0x00; //stop
TCNT0 = 0xB9; //set count
OCR0  = 0x47; //set compare value
TCCR0 = 0x05; //start timer

TIMSK |= 0x02; //timer interrupt sources
#endif
}


А также немного в других частях, в целом весь проект на С то 95% кода неизменно. А вот периферия sad.gif
Но как мы не старались запустить юарты у нас не получилось sad.gif
Из возможностей юарта используем только прерывание RX, при этом как только подключается устройство к порту контроллер падает и всё, помогает только передёргивание питания.


Если кто то уже использовал в свои разработках м162 с 2 юартами откликнитесь. Интересует участок инициализации.

С ув.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
west329_
сообщение Nov 3 2008, 20:26
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Всем кто помогал выражаю огромную благодарность, UART завижал как новенький smile.gif, и как говорят у меня на родине "Дякую всім!" smile.gif

Причина как всегда банальна лень читать даташиты smile.gif откуда шишки и растут sad.gif

Контроллер mega162 имеет сдвоеные регистры, их аш 2. На них и споткнулись.

В итоге
Код
#ifdef          __ATmega162__

UCSR1B = (1<<RXCIE1)|(1<<RXEN1)|(1<<TXEN1);
UCSR1C = (1<<URSEL1)|(3<<UCSZ10);

#elif defined __ATmega128__

UCSR1B = (1<<RXCIE1)|(1<<RXEN1)|(1<<TXEN1);
UCSR1C = (3<<UCSZ10);

#else

#error init UART

#endif


Сообщение отредактировал west329_ - Nov 3 2008, 20:34
Go to the top of the page
 
+Quote Post
Николай Иванович...
сообщение Nov 3 2008, 20:39
Сообщение #3


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

Группа: Новичок
Сообщений: 139
Регистрация: 26-09-08
Пользователь №: 40 510



Цитата(west329_ @ Nov 3 2008, 23:26) *
Контроллер mega162 имеет сдвоеные регистры, их аш 2.

Как у меги8.
Там тоже 2 регистра находятся по одному и тому же адресу.

А (стеняюсь спросить 05.gif ) что Вам мешало посмотреть на даташит на мегу162? Даже не на весь даташит, а на маленький раздельчик про UART. Религия не позволяла? Ведь в этом случае Вы бы решили свою суперсложную задачу в течении 15-ти секунд
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Nov 4 2008, 06:53
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(Николай Иванович Приходько @ Nov 3 2008, 23:39) *
...

Николай Иванович, хотите ли знать кто тут по Вам скучал пока Вы сидели в бане, а потом довольно долго паслись в оффтопике?
Никто!!!
А посему, раз уж Вы тут обьявились с явным оффтопом и ввиду неисправимого рецидивизма, прописываю Вам вечный бан.
Go to the top of the page
 
+Quote Post



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

 


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


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