Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Разгон ATMega128-16
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Lisitsin
Доброго времени суток. Прошу консультации знающих. Озвучу проблему:
Разгоняю ATMega128-16 до 21 МГц. В проекте два одинаковх контроллера. Напряжение питания 5В, тактовую частоту подаю снаружи с ATTiny2313 из ейного порта. Размах тактов 5В. Фьюзы ставлю на внешний источник тактовых импульсов, CKOPT запрограммирован. Так вот один процессор работает без проблем, а второй (я его уже два раза заменял) при чтении из внутреннего ОЗУ с постинкрементом или командой POP с чтением опаздывает на 1. Т Е корректные данные получаются только в следующем чтении.
Кто нибудь может подсказать что это?
Заранее благодарен.
Схему проекта прилагаю.
GDI
Почему бы не применить 20-мегагерцовые атмеги?
Lisitsin
Цитата(GDI @ Dec 2 2010, 15:21) *
Почему бы не применить 20-мегагерцовые атмеги?

Это ни ATXMega ли?


Есть ещё один момент: на рабочий процессор такты я подаю через разделительную ёмкость, а на нерабочий - напрямую с порта. Кто нибудь знает на что это влияет?
Палыч
Цитата(Lisitsin @ Dec 2 2010, 15:59) *
Это ни ATXMega ли?
Есть и ATmega работающие на частоте до 20МГц. В основном это - МК, имеющие в обозначении дополнительную цифру 4 или 8 (mega328, 48, 88, 168, 1284, 644...), но есть и другие (mega325A, например)... У производителя посмотрите.
Lisitsin
Цитата(Палыч @ Dec 2 2010, 16:08) *
Есть и ATmega работающие на частоте до 20МГц. В основном это - МК, имеющие в обозначении дополнительную цифру 4 или 8 (mega328, 48, 88, 168, 1284, 644...), но есть и другие (mega325A, например)... У производителя посмотрите.

Вообще то мне нужно 128К FLASH минимум плюс внешний RAM интерфейс.
zombi
Цитата(Lisitsin @ Dec 2 2010, 15:38) *
Так вот один процессор работает без проблем, а второй (я его уже два раза заменял) при чтении из внутреннего ОЗУ с постинкрементом или командой POP с чтением опаздывает на 1. Т Е корректные данные получаются только в следующем чтении.

Че то я не пойму:
Если при следующем чтении данные правильные то пост инкремент всетаки РАБОТАЕТ, а не работает (или не правильно работает) инициализация регистра адреса!!!
Lisitsin
Цитата(zombi @ Dec 2 2010, 19:16) *
Че то я не пойму:
Если при следующем чтении данные правильные то пост инкремент всетаки РАБОТАЕТ, а не работает (или не правильно работает) инициализация регистра адреса!!!

А кто там знает какая у него там архитектура на машинном уровне? DATASHEETы пишутся для законопослушных пользователей, которые так не гонят.
Тестовая программа у меня такаяЖ
RAMTST: LDI ZH,0X02
LDI ZL,0X00
LDI BUF,0X00
LOOP1: ST Z+,BUF
INC BUF
CPI BUF,255
BRNE LOOP1


LDI ZH,0X02
LDI ZL,0X00
LDI BUF,0X00
OUT EEARH,BUF
OUT EEARL,BUF
LD BUF,Z+



ELP: OUT EEARL,ZL
LD BUF,Z+
OUT EEDR,BUF
SBI EECR,EEMWE
SBI EECR,EEWE
EELP: SBIC EECR,EEWE
RJMP EELP
CPI ZL,255
BRNE ELP

WWWW: RJMP WWWW



В результате в EEPROM по адресу 00 - непонятное число, по 01 - 00, по 02 - 01 и т д.
Беда точно с чтением ОЗУ, а не с записью - это я проверял.
ILYAUL
Цитата(Lisitsin @ Dec 2 2010, 19:39) *
А кто там знает какая у него там архитектура на машинном уровне? DATASHEETы пишутся для законопослушных пользователей, которые так не гонят.
Тестовая программа у меня такаяЖ
RAMTST: LDI ZH,0X02
LDI ZL,0X00 ; Устанавливаем адрес 0x0200
LDI BUF,0X00 ; Очищаем счётчик
LOOP1: ST Z+,BUF ; Записываем в SRAM значения от 0X00 до 0XFF
INC BUF ;
CPI BUF,255 ;
BRNE LOOP1


LDI ZH,0X02 ; Устанавливаем адрес SRAM 0x0200
LDI ZL,0X00
LDI BUF,0X00 ; Очищаем счётчик
OUT EEARH,BUF ;Заодно и адрес EEPROM
OUT EEARL,BUF
LD BUF,Z+ ; Получаем 0x00 из SRAM и прибавляем 1 к ZL

ПЕРВАЯ ЗАПИСЬ В EEPROM

ELP: OUT EEARL,ZL ; Прибавляем к младшему адресу EEPROM (1)-цу = 0x0001
LD BUF,Z+ ; Получаем из SRAm (1)-цу и увеличиваем адрес для EEPROM И SRAM 0x0002 и 0x0202
OUT EEDR,BUF ; Посылаем (1) по адресу 0x0001
SBI EECR,EEMWE ; - разрешаем запись
SBI EECR,EEWE ; Записываем 1 по адресу 0x0001
EELP: SBIC EECR,EEWE
RJMP EELP
CPI ZL,255
BRNE ELP ; Ну и так далее

WWWW: RJMP WWWW



В результате в EEPROM по адресу 00 - непонятное число ( то что не "рассосалось" после выкл питания то и осталось, по 01 - 01, по 02 - 02 и т д.
Беда точно с записью EEPROM , а не чтением - это я проверял.
zombi
Цитата(Lisitsin @ Dec 2 2010, 19:39) *
.
.
.
OUT EEARL,BUF
LD BUF,Z+
ELP: OUT EEARL,ZL
LD BUF,Z+
OUT EEDR,BUF
.
.
.
В результате в EEPROM по адресу 00 - непонятное число, по 01 - 00, по 02 - 01 и т д.
Беда точно с чтением ОЗУ, а не с записью - это я проверял.

И че должно по вашему быть в еепроме по адресу 00 если вы туда нечего не пишете?
mdmitry
Цитата(Lisitsin @ Dec 2 2010, 14:38) *
Разгоняю ATMega128-16 до 21 МГц.

Для самоделок пойдет разгон, для серьезной аппаратуры не пройдете климатику.
IMHO: использовать компоненты в соответствие с документацией производителя.
Lisitsin
В программе может быть ошибка. В оригинальном тесте я пишу в EEPROM из 0X200 и 00, из 0X201 в 01 и т д. Пишу один этот тест сначала в один процессор, потом в другой - резудьтат разный. Я бы и рад не разгоняться, но нет у ATMELa нужных мне контроллеров, а ARM я не знаю. Простите, исправлюсь ...!
KKV2003
А если "запитать" не от 21, а от 16 Мегагерц? Может тоже работать по разному будут?
Lisitsin
Цитата(KKV2003 @ Dec 4 2010, 06:09) *
А если "запитать" не от 21, а от 16 Мегагерц? Может тоже работать по разному будут?

Если от 16 не заработает - значит datasheet не прав. А это практически невозможно. Или девайс дохлый - но я их уже 3 щтуки сменил. Дело в разгоне.
zombi
Цитата(Lisitsin @ Dec 4 2010, 12:11) *
Если от 16 не заработает - значит datasheet не прав. А это практически невозможно. Или девайс дохлый - но я их уже 3 щтуки сменил. Дело в разгоне.

Кроме даташита, девайса и разгона есть еще и программа biggrin.gif
Lisitsin
Цитата(zombi @ Dec 4 2010, 15:14) *
Кроме даташита, девайса и разгона есть еще и программа biggrin.gif

Гениально!
Палыч
Цитата(Lisitsin @ Dec 4 2010, 16:03) *
Гениально!

Вам уже указали на ошибку в программе:
Цитата(zombi @ Dec 3 2010, 01:27) *
И че должно по вашему быть в еепроме по адресу 00 если вы туда нечего не пишете?
а Вы всё про разгон, да про разгон...
Lisitsin
Цитата(Палыч @ Dec 4 2010, 22:18) *
Вам уже указали на ошибку в программе:
а Вы всё про разгон, да про разгон...

Читайте внимательнее мой ответ на это замечание
И ещё один момент: на эффект влияет фьюз CKOPT. Если он не запрограммирован - эффект пропадает. Но что-то я боюсь в этом случае за устойчивость работы. Второй процессор на этот бит не реагирует.
Палыч
Цитата(Lisitsin @ Dec 4 2010, 22:32) *
Читайте внимательнее мой ответ на это замечание
Внимательно прочитал. Собственно, Вы ничего толком не сказали:
Цитата(Lisitsin @ Dec 3 2010, 20:06) *
Пишу один этот тест сначала в один процессор, потом в другой - резудьтат разный.
Что значит - "разный"? Не выполняется правильно - что? Ваши утверждения о неправильности работы в исходном посте - результат ошибки в программе. Если эту ошибку устранить,то что получим на разогнанном МК? Ошибку записи в EEPROM? Это - критично? Уж если очень нужен разгон, то может внешнюю память применить, коль внутренняя неправильно работает? А действительно ли она неправильно работает?



Цитата(Lisitsin @ Dec 4 2010, 22:32) *
на эффект влияет фьюз CKOPT. Если он не запрограммирован - эффект пропадает.
Читаем DS:
Цитата
By programming the CKOPT fuse, the user can enable an internal 36 pF capacitor between XTAL1 and GND.

ILYAUL
Всегда убивает это не понятное и абсолютно не нужное -"разгон" Какой-то детский сад. Если не изменяет память с XT-шек всё и началось.
Ну нет нужного проца у данного производителя - поищи другой. Зачем сразу закладываться на вечный русский авось .... А asm он и в Африке asm
Lisitsin
Короче, свем спасибо. Никто не помог. Честные люди говорят просто "не знаю".
А теперь информация только для гонщиков:
Вешаем близко к корпусу конденсаторы 0,47 мкФ керамический и 47 мкФ танталовый. Тактовую ему в душу прямо без разделительной ёмкости с порта. Фьюз CKOPT выключаем. Работает нормально. Всем успехов.
ILYAUL
Цитата(Lisitsin @ Dec 5 2010, 11:21) *
А теперь информация только для гонщиков:
Вешаем близко к корпусу конденсаторы 0,47 мкФ керамический и 47 мкФ танталовый. Тактовую ему в душу прямо без разделительной ёмкости с порта. Фьюз CKOPT выключаем. Работает нормально. Всем успехов.

Бесполезная информация.
zombi
Цитата(Lisitsin @ Dec 5 2010, 12:21) *
Короче, свем спасибо. Никто не помог. Честные люди говорят просто "не знаю".

Т.е. Вы ожидали получить инструкцию по правыльнаму разгону мег biggrin.gif


Цитата(Lisitsin @ Dec 5 2010, 12:21) *
А теперь информация только для гонщиков:
Вешаем близко к корпусу конденсаторы 0,47 мкФ керамический и 47 мкФ танталовый.

Близко это скоко? А если чуть дальше, то не работает? biggrin.gif

Цитата(Lisitsin @ Dec 5 2010, 12:21) *
Тактовую ему в душу прямо без разделительной ёмкости с порта.

А зачем вобще нужна эта "разделительная ёмкость"? laughing.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.