|
|
  |
Начинающий Stage-1.01, ASM и разные Вопросы :) |
|
|
|
Jul 30 2005, 08:07
|
Группа: Новичок
Сообщений: 6
Регистрация: 30-07-05
Пользователь №: 7 213

|
Здесь я НЕ буду задавать вопросы типа AVR или PIC а может MCS-51 «С чего начать? Где скачать? Какие сайты для начинающих?» «ASM VS C++» «Где купить?» и тд. Изучаю работу Микроконтроллеров чисто для себя, так сказать для души. Хочу писать на Assembler. Так значит, что я имею: INFO: Книга: Evstifeev.Atmel.AVR.Tiny_Mega.Family DataSheet’s: AT90S8535.Full, ATmega8535.Full, Replacing AT90S8535 by ATmega8535 + разные мелкие доки. Сразу скажу с английским я так сказать не очень: В школе и в универе было «Отлично», при прочтении DataSheet’ов понимается процентов так 15-20%, в основном по картинкам и по смыслу догоняетя что к чему, (надобны как-нибудь электронный словарь достать lingvo например  ) Softaware: AVR Studio 4.11 SP3 Vmlab 3.11 free AvrReal PonyProg Hardware: ATmega8525, Кр1533ап5, АЛС318, 4MHz & 8MHz кварцы. Я думаю, что этого достаточно для начала. Сразу же первый вопрос: так как сначала я думал учиться на примере AT90S8535, заказал я его в магазине, пока ждал когда привезут (обещали 3 недели) узнал что этот МК сняли с производства теперь вместо него ATmega8535, через 2 месяца!!! привезли Atmegu За 185 р. Пришлось брать. Вопрос: можно ли прошивать (проги сложности типа: сложить два числа и выдать на Семисегментный индикатор результат) написаны для AT90 на Megu ? я так понял изменения коснулись управлением ADC, timer, USART, и чего там еще. Если непокатит то что нужно изменить?
--------------------
Данная эксклюзия является подмножеством астрациональных супремативных монотенных федоний кадонарного экстрафазория
|
|
|
|
|
Jul 30 2005, 08:09
|
Группа: Новичок
Сообщений: 6
Регистрация: 30-07-05
Пользователь №: 7 213

|
Значит стоит такая задача. 1. Организовать сложение двух чисел и индикацию младшей тетрады результата на семисегментном индикаторе HG2. На блоке управления располагаются кнопки и тумблеры. Кнопки SB2 и SB4 представляют собой младшие разряды первого слагаемого, т.е. возможен набор чисел от 0 до 3. Тумблеры SA4, SA5 представляют собой соответственно 3-й и 4-й разряды 2-го слагаемого, т.е. возможен набор десятичных чисел 0,4,8,12. На индикаторе высвечивать результат в шестнадцатеричном формате, т.е. 0...F. SB2: PINA,1 PORTC-на индикатор. SB4: PINA,3 PORTb,3 – транзюк на индикатор SA4:PIND,2 SA5:PIND,3 Вот Source: Скелет программы скопирован с примера, всю математику и вывод на индикатор я понял (сидел в тетрадке изображал из себя МК  не понял некоторые куски кода только .include "8535def.inc" ;--------------- .dseg .equ cod0=$64 ; Выделяю ячейки под коды семисегментов, .equ cod1=$65 ; а почему именно с этого адреса? И до какого .equ cod2=$66 ; можно? ……………… .equ codE=$72 .equ codF=$73 : ;--------------- .cseg ; А вот это я не понял в упор как оно работает .org 0 ; Думаю что-то связанно с сбросом мк rjmp reset ;? .org $30 ;? ;--------------- reset: ldi r16,$00 ;? out sph,r16 ;? ldi r16,$ff ;? out spl,r16 ;? ;--------------- ldi zl,$64 ;? ldi zh,$00 ;? ;Nastroika portov! ldi r16,$00 ; А вот интересно неиспользуемые выводы индикатора как лучше определить как входы или выходы что то все по разному говорят? out ddra,r16 ldi r16,$c out ddrb,r16 ldi r16,$ff out ddrc,r16 ldi r16,$00 out ddrd,r16 ;-----------------] Sbi portb,3 ;napruga na anod ;-----------------] ;Seven segmet Code ldi r16,$3f ; Загоняю коды в память sts cod0,r16 ldi r16,$06 sts cod1,r16 ……………… ldi r16,$71 sts codF,r16 ;--------------- m1: Организую вечный цикл in r17,pina ;считываю состояние кнопок in r18,pind ;считываю состояние тумблеров add r20,r17 ; Собсно складываю эти два числа add r20,r18 ;------------------ push zl ; Во а это крутая крутотень, когда я понял add zl,r20 ;как оно работает чуть со стула не упал ld r20,z ; блин круто получилось pop zl out portc,r20 ;Выводим результат на индикатор ldi r20,$00 ;Очищаем регистр где был результат Rjmp m1 ;Вечный цикл Прога работает, тока считает неправильно. «Кнопки SB2 и SB4 представляют собой младшие разряды первого слагаемого» А у меня по схеме они управляют Первым и Третьим битом то есть получаются цифры 0,2,8,10 Блин часа 2 не мог понять в чем фишка Есть 0000Х0Х0 => Надо 000000XX Как биты сдвинуть? я что то ваще не понял Приму любую помощь Заранее благодарен всем кто откликнется PS У мня еще много вопросов  по мере изучения буду спрашивать здесь надеюсь есть добрые люди помогут !
--------------------
Данная эксклюзия является подмножеством астрациональных супремативных монотенных федоний кадонарного экстрафазория
|
|
|
|
|
Aug 1 2005, 05:35
|
Группа: Новичок
Сообщений: 6
Регистрация: 30-07-05
Пользователь №: 7 213

|
Один вопрос решился. Копировать любой бит регистра позволяют команды BST, BLD в бит аккумулятор регистра SREG (и обратно) тем самым можем переместить любой бит рег. на нужное место. Спасибо “nml” за подсказку Вот что получилось: bst r17,1 ;копирую первый бит в битовый аккум. cbr r17,0b00000010 ;сбрасываю в ноль bld r17,0 ;копирую из аккум. на нужное место ;аналогично только третьи бит ->первый бит bst r17,3 cbr r17,0b00001000 bld r17,1
--------------------
Данная эксклюзия является подмножеством астрациональных супремативных монотенных федоний кадонарного экстрафазория
|
|
|
|
|
Aug 1 2005, 06:40
|
Участник

Группа: Новичок
Сообщений: 24
Регистрация: 17-06-05
Пользователь №: 6 089

|
Цитата(Skovorodka[TEFAL] @ Jul 30 2005, 12:09) Значит стоит такая задача. 1. Организовать сложение двух чисел и индикацию младшей тетрады результата на семисегментном индикаторе HG2. На блоке управления располагаются кнопки и тумблеры. Кнопки SB2 и SB4 представляют собой младшие разряды первого слагаемого, т.е. возможен набор чисел от 0 до 3. Тумблеры SA4, SA5 представляют собой соответственно 3-й и 4-й разряды 2-го слагаемого, т.е. возможен набор десятичных чисел 0,4,8,12. На индикаторе высвечивать результат в шестнадцатеричном формате, т.е. 0...F. SB2: PINA,1 PORTC-на индикатор. SB4: PINA,3 PORTb,3 – транзюк на индикатор SA4:PIND,2 SA5:PIND,3 Вот Source: Скелет программы скопирован с примера, всю математику и вывод на индикатор я понял (сидел в тетрадке изображал из себя МК  не понял некоторые куски кода только .include "8535def.inc" ;--------------- .dseg .equ cod0=$64 ; Выделяю ячейки под коды семисегментов, .equ cod1=$65 ; а почему именно с этого адреса? И до какого .equ cod2=$66 ; можно? ……………… .equ codE=$72 .equ codF=$73 : ;--------------- .cseg ; А вот это я не понял в упор как оно работает .org 0 ; Думаю что-то связанно с сбросом мк rjmp reset ;? .org $30 ;? ;--------------- reset: ldi r16,$00 ;? out sph,r16 ;? ldi r16,$ff ;? out spl,r16 ;? ;--------------- ldi zl,$64 ;? ldi zh,$00 ;? ;Nastroika portov! ldi r16,$00 ; А вот интересно неиспользуемые выводы индикатора как лучше определить как входы или выходы что то все по разному говорят? out ddra,r16 ldi r16,$c out ddrb,r16 ldi r16,$ff out ddrc,r16 ldi r16,$00 out ddrd,r16 ;-----------------] Sbi portb,3 ;napruga na anod ;-----------------] ;Seven segmet Code ldi r16,$3f ; Загоняю коды в память sts cod0,r16 ldi r16,$06 sts cod1,r16 ……………… ldi r16,$71 sts codF,r16 ;--------------- m1: Организую вечный цикл in r17,pina ;считываю состояние кнопок in r18,pind ;считываю состояние тумблеров add r20,r17 ; Собсно складываю эти два числа add r20,r18 ;------------------ push zl ; Во а это крутая крутотень, когда я понял add zl,r20 ;как оно работает чуть со стула не упал ld r20,z ; блин круто получилось pop zl out portc,r20 ;Выводим результат на индикатор ldi r20,$00 ;Очищаем регистр где был результат Rjmp m1 ;Вечный цикл Прога работает, тока считает неправильно. «Кнопки SB2 и SB4 представляют собой младшие разряды первого слагаемого» А у меня по схеме они управляют Первым и Третьим битом то есть получаются цифры 0,2,8,10 Блин часа 2 не мог понять в чем фишка Есть 0000Х0Х0 => Надо 000000XX Как биты сдвинуть? я что то ваще не понял Приму любую помощь Заранее благодарен всем кто откликнется PS У мня еще много вопросов  по мере изучения буду спрашивать здесь надеюсь есть добрые люди помогут ! reset: ldi r16,$00 ;? out sph,r16 ;? ldi r16,$ff ;? out spl,r16 ;? данный кусок кода не более чем настройка указателя стека на ячейку памяти в озу с адресом 0х255, не помню скока в АТ90S8535 памяти но обычно стек настраивают на самую последнюю ячейки т.к. он в AVR-ках падающий. .org $30 ;? - можна не писать просто расположение кода пометке reset по данному адресу. Повидимому освобождает первые 30 адресов под вектора прерываний. Успехов
|
|
|
|
|
Aug 31 2005, 11:47
|
Группа: Новичок
Сообщений: 6
Регистрация: 30-07-05
Пользователь №: 7 213

|
.....Otdix konchilsya, Skoro budu zadavat voprosi. Programmator spayal (АП5) toka prochivat boyus, nefiga ne ponyal pro "FUSE's", chas budu chitat Doki....
--------------------
Данная эксклюзия является подмножеством астрациональных супремативных монотенных федоний кадонарного экстрафазория
|
|
|
|
|
Sep 9 2005, 12:38
|
Группа: Новичок
Сообщений: 5
Регистрация: 13-08-05
Пользователь №: 7 598

|
Ага, начинайте изучать прямо сo строения атома, полупроводников, pnp npn переходов, транзистора, в конце концов :D
--------------------
AVRMicro.net - и ты можешь принять участие в продвижении сайта!
|
|
|
|
|
Sep 15 2005, 14:25
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(Skovorodka[TEFAL] @ Jul 30 2005, 11:09) Значит стоит такая задача. ........ .cseg ; А вот это я не понял в упор как оно работает .org 0 ; Думаю что-то связанно с сбросом мк ......... надеюсь есть добрые люди помогут ! с точки начинаются директивы ассемблера (это не инструкции процессора, а просто указание компилятору как компилировать). .cseg <- это обозначает что то, что ты дальше пишешь относится к сегменту кода, т.е. к памяти программ. .org 0 <- обозначает что то что ты дальше напишешь располагается со смещением 0 (т.е. в начале сегмента) соответственно ".org 30" это непосредственное указание что код дальше расположен по адресу 30.
|
|
|
|
|
Nov 7 2005, 13:54
|
Группа: Новичок
Сообщений: 6
Регистрация: 30-07-05
Пользователь №: 7 213

|
Все приехал блин, дошло дело до паяльника, спаял макетку, подрубил питание и встал. Программа avreal программатор Аля 5 проводков с резисторами (чета stk200\300 не заработал, надо будет потыкать его еще ) Atemga8535 кварц 4 МГц. Так вот прога говорит что все ок mega8535 detected список фузов мне выдает Osccal = a4,a6,9b,9d Bodlevel=1 Boden =1 Sut =2 Sksel =1 Blb1 =3 Blb0 =3 S8535 =1 Wdton = 1 Ckopt = 1 Eesave = 1 Bootsz = 0 BootRst = 1 Вроде пишет, стирает FLASH (vse ok говорит) Вот только когда снимаешь дамп в нем полная каша Кусок: Код :10000000FFFFFFFF02FFFFFFFFFFFFFFFFFFFFFFFD :10001000FFFFFFE11AFFFFFFFFFF0DE10E0E0FE1F3 :1000200010E1FFFFFFFFFFE114E115FFFFFFFFE11C :10003000FFFFFFFFFFFF36FFFFFFFFFFFFFF3FE177 :1000400040FFFFFFFFFF23E124E1FFFFFF4CFFFF25 :10005000FFFFFFE12AE12BE12CE12DE1FFFFFFE1B2 :1000600030E131E1646467E134E135E136E137E103 :1000700038FFFFFFFFE1FFFF7CE1FFFFFFFFFFE134 :1000800040E1FFFFFFFF83E1FFFFFFE146E147E1C2 :10009000FFFFFFFF9AE18BE14CFFFFFFFFFF9FE1B6 :1000A000D0E1B1E150FFFFFFFFFFFFE156FFAFE1FD :1000B000B8E159E1FFFFDBE15CE15D5DFFE15EFF7F :1000C000FFFFFFFFFFFFFFFFFFFFFFFFFFE1FFFF5E :1000D00068E169E16AFFD6EB6CE16DE16EE16FE129 :1000E00070FFFFFFFFFFFFFFFFFFFFFFEC17EFE1D8 :1000F000F8FF79E17AE17BE17CE17DE17EE17FFF60 :10010000FFFF82FFFFFFFFFFFFFFFFFFFFFFFFFF7C :1001100010E111E1FF14FFE10CE18DE18EE18FE1CF :1001200090E191E192FF93E19494FFFFFFFF2EFF96 :10013000FFFFFFE13AE19BE13CE13A3D1EE19F9F79 :1001400040E1A1E1A2E1A3FFFFE1A5A2FFFFFFFFC4 :10015000A8E1FF52FFFF5BE1ACFFADE1AEAEFFFFF8 :10016000FF60FFE1B2B0FFFFFFFF75E1FFFFFFE1BE :1001700078E1B9E1FFE1BBE1BCE1FFFFFFFFFFFF79 :10018000FFFFFFFF82E186FFFFFFFFFFFFE1C7E107 :1001900090E1C9E1CAFFFFFF8CE1CDE1CEE1CFFFE5 :1001A000FFE1D1FFFFFFFFFFA8FFFFFFFFFFFFE120 :1001B000D8E1F2FFFFFFFFFFDCE1DDE1FFFFBFE180 :1001C000E0FFFFFFFFFFFFFFFFE1E5E1E6FFFF13B9 :1001D000D0E1E9E1EAFFEBE1ECE1FFFFDCE1FFFF69 :1001E000FFFFFFE1E2E1F3FFFFE1EAFFFFFFFFFFB7 Причем снимаешь дамп несколько раз, делаешь сравнение файлов они всегда разные, процентов 80 различий Кабель от LPT до платы 20см длиной Люди помогите, скажите в каком направлении рыть, а то ваще звиздец полный. А еще хотел спросить, hex фаил весит 23 053 байт (22,5кб) Тогда на борту всего 8 кб – так должно быть или это Трабла???
--------------------
Данная эксклюзия является подмножеством астрациональных супремативных монотенных федоний кадонарного экстрафазория
|
|
|
|
|
Nov 7 2005, 14:45
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата ' date='Nov 7 2005, 16:54' post='62158'] Все приехал блин, дошло дело до паяльника, спаял макетку, подрубил питание и встал. Программа avreal программатор Аля 5 проводков с резисторами (чета stk200\300 не заработал, надо ...................... Кабель от LPT до платы 20см длиной Люди помогите, скажите в каком направлении рыть, а то ваще звиздец полный. А еще хотел спросить, hex фаил весит 23 053 байт (22,5кб) Тогда на борту всего 8 кб – так должно быть или это Трабла??? 1. Скорее всего в "5 проводках" причина несовпадения прочитанных данных. решить проблемму можно попробовав уменьшить скорость программирования (см. ключи AVREALа). или спаяв нормальный программатор. 2. Хекс файл содержит информайию в ХЕКС представлении,т.е. на один байт МИНИМУМ 2 символа, не считая контрольных сумм, адресов. переносов строк, и т.п.
|
|
|
|
|
Nov 8 2005, 16:04
|
Группа: Новичок
Сообщений: 6
Регистрация: 30-07-05
Пользователь №: 7 213

|
ZARABOTALO!!!! fishka bila s fuzami ! po umolchaniyu bilo Sksel = 1 Sut = 2 to est kak ya ponel vnutrenie kvarz, cho ne est good AVREAL -fCKSEL=f,sut=0 I vse poexalo kak nado !
Spasibo vsem kto otkliknulsya! Otdelnoe spasibo za pomoch Serega (radiokot.ru)
To Petka:
Obyazatelno dodelayu STK kak tolko v nach radiomagazin (on u nas odin v gorode) postupyat xxxxАП5
--------------------
Данная эксклюзия является подмножеством астрациональных супремативных монотенных федоний кадонарного экстрафазория
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|