Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/52: Рейтинг темы: голосов - 52, средняя оценка - 4.92
Vtod777
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 107
1

Совместимость Мега8 и Мега8535

09.02.2010, 18:58. Просмотров 9477. Ответов 12
Метки нет (Все метки)

Зашел в тупик! Спасайте!
Пробую запустить прогу на Меге8535 с прицелом потом перенести в готовое устройство на Меге8.
(В связи с отсутствием переходника на Мегу8 на отладочной плате).

Пишу на ассемблере.

1. таблица векторов прерываний у Меги8535 больше. Т.е. уже придется потом править исходник.
2. таймер0 у Меги8 в режиме сброс по совпадению не работает.
3. Ладно, строю все на таймере 2, в надежде на совместимость.

Вот так инициализирую таймер2:
(внутр. генератор на 4Мгц)

Код
;--------------------------- инициализация таймера ---------------------
ldi temp, (1<<WGM21)|(1<<CS20)|(1<<CS22)
out TCCR2, temp               ;установка режима - сброс по соапад.
;и предделителя 1024
ldi temp, TIMER_DIV
out OCR2, temp               ;при этом делителе прер. возн. прим. 100раз в сек.
ldi temp, 1<<OCIE2
out TIMSK, temp               ;разр. прер. по совп.тайм.
в результате диодик мигайт с частой примерно в 4-6 раз больше расчетной.

Переключаюсь на таймер0:
Код
      ldi temp, (1<<WGM01)|(1<<CS00)|(1<<CS02)
out TCCR0, temp               ;установка режима - сброс по соапад.
;и предделителя 1024
ldi temp, TIMER_DIV
out OCR0, temp               ;при этом делителе прер. возн. прим. 100раз в сек.
ldi temp, 1<<OCIE0
out TIMSK, temp               ;разр. прер. по совп. тайм.
Все в порядке, мигает как и запланировал!!!

Вот табл. векторо прерываний:

Код
   .cseg               ; установка сегмета программы
.org 0               ; сброс на 0 счетчика команд
rjmp init              ; перепрыгиваем таблицу векторов.
reti      ;INT0addr   = 0x0001   ; External Ymtirrupt 0
reti      ;INT1addr   = 0x0002   ; External Ymtirrupt 1
rjmp timer2   ;OC2addr   = 0x0003   ; Timer/Counter2 Compare Match
reti      ;OVF2addr   = 0x0004   ; Timer/Counter2 Overflow
reti      ;ICP1addr   = 0x0005   ; Timer/Counter1 Capture Ivimt
reti      ;OC1Aaddr   = 0x0006   ; Timer/Counter1 Compare Match A
reti      ;OC1Baddr   = 0x0007   ; Timer/Counter1 Compare Match B
reti      ;OVF1addr   = 0x0008   ; Timer/Counter1 Overflow
reti      ;OVF0addr   = 0x0009   ; Timer/Counter0 Overflow
reti      ;SPIaddr   = 0x000a   ; SPI Serial Transfer Complete
reti      ;URXCaddr   = 0x000b   ; USORT, RX Complete
reti      ;UDREaddr   = 0x000c   ; USORT Data Register Empty
reti      ;UTXCaddr   = 0x000d   ; USORT, TX Complete
reti      ;ADCCaddr   = 0x000e   ; ADC Conversion Complete
reti      ;ERDYaddr   = 0x000f   ; EEPROM Ready
reti      ;ACIaddr   = 0x0010   ; Analog Comparator
reti      ;TWIaddr   = 0x0011   ; Two-wire Serial Interfosi
reti      ;INT2addr   = 0x0012   ; External Ymtirrupt Request 2
reti   ;rjmp timer2   ;OC0addr   = 0x0013   ; TimerCounter0 Compare Match
reti      ;SPMRaddr   = 0x0014   ; Store Prokram Memory Read
.org INT_VECTORS_SIZE   ; Конец таблицы прерываний
Помогите плиз!!!

С ув.,
Влид.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2010, 18:58
Ответы с готовыми решениями:

Проблеммы с Мега8
Здравствуйте, есть проблема такова рода, есть несколько мег8 - 3 шт и у меня не получается...

Глючит Мега8
Мужики выручайте! Собрал лифт на 3 этажа, возит продукты с кухни в ресторан и сауну. Все на разных...

Таймер, мега8
Начал програмирование мк с мелкопаскаля и обламался, среда хоть и хороша новичкам но разработчики...

вопрос о подключении LCD к мега8
Добрый день! волнует такой вопрос: есть LCD 8х2 и 16х2 знакогенерирующие, разницы в подключении...

Мега8 греется при работающем реле
Есть проект, где мега8 в TQFP управляет нагрузкой. Реле Bestor BS-115C (катушка 12В) включено через...

12
Vtod777
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 107
09.02.2010, 19:29 2
Разобрался сам.
У Евстифеева написано - таймер-счетчик Т2 МОЖЕТ работать в асинхронном режиме.
И есть чудная табл. 7.12 на 352 странице, где указано обычный таймер-счетчик и асинхронный таймер-счетчик. Вобщем у них разные настрой предделителя. Для Т2 необх. установить еще и бит SC21. Вот тогда будет 1024.

Но вопрос насчет совместимости по таблице прерываний остался!!!! -))))
0
xroymom
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 727
09.02.2010, 21:03 3
Цитата Сообщение от Vtod777
Разобрался сам.
Но вопрос насчет совместимости по таблице прерываний остался!!!! -))))
а чо? у них таблица совместима до 18 вектора. Если не собираешься использовать INT2, Timer0 и spm, то после
Код
reti      ;TWIaddr   = 0x0011   ; Two-wire Serial Interfosi
уже можешь писать программу. Или отступи по размеру большей таблицы и пиши там. Главное чтобы совместимость была на уровне инструкций :)
0
DY HOTT
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 4,000
09.02.2010, 21:25 4
да совместимы они почти полностью. Выкинь ненужные вектора на меге8 и все. А лучше юзай макроопределения конца таблицы векторов, чтобы само нужный адрес подставляло.
0
09.02.2010, 21:25
Vtod777
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 107
09.02.2010, 21:31 5
Спасибо, так и сделаю!
Хотя конечно надо как-то развести переходник МЕГА16-МЕГА8.
Пока у меня без навесного монтажа не получается.
Есть переходники Tiny 13, 25, 2313 - очень удобно с ними прогу на отл. плате отлаживать!
Надо просить таки DI-HALTA что бы он к своей PIN BOARD разработал переходники!!!!!
0
DY HOTT
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 4,000
09.02.2010, 21:44 6
Да думаю уже над набором переходников. Варианта два:
1. Сделать в дип виде, но плата нужна двусторонняя.
2. Сделать в smd виде, но тогда нельзя будет из переходника микруху выдрать.
0
Vtod777
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 107
09.02.2010, 22:14 7
Цитата Сообщение от DY HOTT
Да думаю уже над набором переходников. Варианта два:
1. Сделать в дип виде, но плата нужна двусторонняя.
2. Сделать в smd виде, но тогда нельзя будет из переходника микруху выдрать.
На мой взгляд лучше в ДИПе. Один раз помучатся, сделать плату переходника - и вечный кайф!!! -)))
А так конечно отлаживать можно, а потом шить параллельным программатором??? Не,
не интересно!!! Давайте лучше двухстороннюю!!!!!!
0
Orsymus Orso
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 1,230
10.02.2010, 10:10 8
Двусторонняя плата сильно дороже односторонней? Там вроде всего 9 перемычек получается, можно обойтись перемычками из нулевых сопротивлений. Сам покупать не собираюсь, но мое мнение, что лучше ДИП корпуса юзать.
0
Vtod777
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 107
11.02.2010, 13:02 9
Да зачем покупать!!!
Сами сделаем!!!
Помогите только с грамотной разводкой в лайете!!!!
0
mothos
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 129
11.02.2010, 14:29 10
Кстати, если я правильно понимаю затею с переходниками, то на плате переходника должно быть 2 штуки PBS-20, которыми переходник будет одеваться на штыри пинборда.
Но фикус в том, что для той же меги8 на пинборд нужно будет развести только 12 ног - VCC, GND (питание), MOSI, MISO, SCK, RST (ISP), RX, TX (RS232), PD4-5 и PD7 (на светодиоды), ADC0. PC2-5 нафиг не сдались, бо JTAGа на 8ке нет. А на самом переходнике должны стоять все 28 штырей (с подписями, которые не влезут :( - возможно, из-за этого придётся делать переходник более широким - вплоть до ISP слева и до подстроечника справа), ну и такое же гнездо под кварц (чтобы не глючило), как на пинборде.
Для тинек с разводкой всё проще.
Для мк в tqfp штыри можно развести по 4м сторонам, как это делается на большинстве макеток.
0
Vtod777
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 107
11.02.2010, 14:40 11
Цитата Сообщение от mothos
Кстати, если я правильно понимаю затею с переходниками, то на плате переходника должно быть 2 штуки PBS-20, которыми переходник будет одеваться на штыри пинборда.
Не обязательно, можно и гребенки поставить для "втыкания" прямо в панельку... хотя это и жестоко! -)))
Тогда проблема со штырями (и подписями) - снимается!!!
0
mothos
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 129
11.02.2010, 14:54 12
Цитата Сообщение от Vtod777
Не обязательно, можно и гребенки поставить для "втыкания" прямо в панельку... хотя это и жестоко! -)))
Тогда проблема со штырями (и подписями) - снимается!!!
Нет, проблема не снимается.
1. Я, например, собираю пинборд сам и буду ставить цанговые панельки. В цанги штыри не лезут вообще (пробовал насильно, не получилось). В обычные панельки лезут, но после этого ламели приобретают покалеченный вид - контакт после такого может банально пропадать.
2. При установке другого мк подписи на самом пинборде уже не актуальны. Например, в той же меге8 RST сидит на одной ноге вместе с PC6, а в меге16 RST - совершенно отдельная нога, а PC6 делит ногу с TOSC1.
0
Vtod777
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 107
11.02.2010, 15:00 13
Я тоже собираюсь собирать пинборд сам, сейчас жду ее по почте. Но все равно собираюсь ставить обычную панельку. А проблему раздалбывания можно решить еще одной панелькой, такой себе буттер получается. -))) Ресет естественно необходимо заводить на Ресет, а вот несоответствия некоторых лап портов - можно отдельной бумажке записать! Все равно для работы нужна распечатка корпуса контроллера!
0
11.02.2010, 15:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2010, 15:00

Возможно изменение частоты на лету в мега8?
Я так понял по даташиту что нет.Получается придется использовать мега88. Трудно будет переделывать...

Совместимость
Добрый вечер форумчане, Имеется системник с мать. платой asus p5kpl-am, проц intel core 2 duo e7400...

Совместимость с IE
Недавно создал сайт и столкнулся с вот такой проблемой во всех браузерах сайт работает кроме...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru