Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Может вам обратить внимание на ООП? В целях самообразования, так сказать...
Реклама
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

"черный ящик" и к ООП применим, только пока необходимости не было использовать ООП применительно к микроконтроллерным программам.
Контактная информация:
Реклама
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Я же сказал - для самообразования.
А принцип разделения ассемблерной программы на отдельные логические блоки ("чёрные ящики"), а так же их независимая отладка применяется повсеместно.
Друг Кота
Аватара пользователя
Сообщения: 6323
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

ploop писал(а):Может вам обратить внимание на ООП? В целях самообразования, так сказать...
Я, конечно, дико извиняюсь, просто мимо проходил, но любопытно стало глянуть на все эти инкапсуляции, полиморфизмы и наследования, если у тебя ОЗУ всего 512 байт. Хотя конечно, чего не сделаешь крутизы ради : можно и камень взять под ту же задачу раз в 8 дороже.
Я так думаю.
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Вот блин, началась! :)))

Кто говорил про ООП применительно к контроллерам? Я говорил - в целях самообразования. То есть, чтобы человек понял, что всё "большое" программирование есть работа с "чёрными ящиками", собирание чего-то из готового конструктора "лего". И по другому нельзя!
Реклама
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Так вот в чем суть-то... начинающему надо понять что такое черный ящик, и почему он собственно черный. Самое трудное это вначале научится забывать все что не касается главного.
А ведь посмотрите с чего начинается любой курс обучения? Правильно ... с деталей, с частностей. Поэтому и не выходит освоить все быстро, качественно и с наскока.
Мне кажется, начинать-то надо с Главного, научится отделять мух от котлет а потом уже переходить к практике.
Но нет же, люди упорно начинают с "помигать светодиодом" и закономерно для них становится "как тут все сложно".
Контактная информация:
Реклама
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

А ведь посмотрите с чего начинается любой курс обучения? Правильно ... с деталей, с частностей. Поэтому и не выходит освоить все быстро, качественно и с наскока.
Всё правильно. Эти частности кто должен делать? Сам обучаемый. А потом уже уметь абстрагироваться от них.
Мучитель микросхем
Аватара пользователя
Сообщения: 458
Зарегистрирован: Пн дек 13, 2010 13:01:59
Откуда: Украина

Сообщение DJ_Kiridza »

Всем привета.
Такой вопрос: собираю одну схемку attiny2313a, которая должна дружить с компьютером через ком-порт (иже rs-232). Для развязки стоит MAX232. Наметал код в AVR Studio4, прогнал - все вроде работает. Залил в атиньку - не работает. На компьютере прием сигнала из тиньки смотрю через Terminal v1.9b. Для начала пытаюсь послать в комп простой код, например 0xAA, но ничего не идет

Код: Выделить всё

...
.equ PORTINOUT = PORTD
.equ DDRINOUT  = DDRD
.equ PININOUT  = PIND
...
.CSEG

ldi temp,(1<<PORTD5)|(1<<PORTD6)|(1<<0)|(1<<1) //(1<<PORTD5)|(1<<PORTD6) - два входа; |(1<<0)|(1<<1) - добавлено позже при переборе вариантов
out PININOUT,temp
out PORTINOUT,temp ;Включаем подтягивающие резисторы на входах TermoPort+KeyInPort
com temp
out DDRINOUT, temp ;Инициализация порта TermoPort+KeyInPort на вывод
nop

;Инициализация USART : Set baud rate 38.4k 8B 1Sb parity 0 - UDRIE - выключен
ser temp
ldi temp0,0x12
out UBRRH, temp
out UBRRL, temp0
ldi temp, (1<<RXEN)|(1<<TXEN) ; Enable receiver and transmitter
out UCSRB,temp
ldi temp, (0<<USBS)|(3<<UCSZ0)|(0<<UPM0) ; Set frame format:  stop bit=1; data =8bit; parity=0
out UCSRC,temp
ldi temp,0xAA
out UDR,temp
...
Что характерно, замыкаю Rx на Tx со стороны схему после преобразования Макса (в TTL уровнях) - петля с компа назад не возвращается, отключаю Тиньку от входов Макса и замыкаю - петля работает, подключаю - опять перестает.
Когда нажимаю ресет - тинька на время "просаживает" свои ноги в 0 - в этот момент в комп попадает "0" (на этапе инициализации порта).
Выставлял в терминале разные скоростя и т.д. - подозреваю что неправильно инициализирован порт, пытался менять - не помогает.
Понимаю, что где-то туплю, но сам не вижу...
мысли мысли штош вы вйотесь
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город

Сообщение Мастер Ломастер »

лично я наступал на самые тупые грабли несколько раз: перепутывал номера контактов разъема порта 2 и 3 - один из них помечен RX, другой - TX. неединожды соединял выход TX контроллера с не тем контактом... вдруг и у вас та же песня? (в код не смотрел)
битва с дураками проиграна, победители торжествуют. слава победителям!
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

подозреваю что неправильно инициализирован порт
Скорее всего так и есть.
Вот пример инициализации UART на 2313 (рабочий)

Код: Выделить всё

.equ xtal = 14318180                     ; кварц
.equ baudrate = 9600                     ; скорость UART
.equ bauddivider = xtal/(16*baudrate)-1

Код: Выделить всё

ldi R16, low(bauddivider)
out UBRRL,R16
ldi R16, high(bauddivider)
out UBRRH,R16

ldi R16,(1<<TXEN)|(1<<RXEN)|(1<<RXCIE)    ; разрешаем только приём и прерывание по нему
out UCSRB,R16

ldi R16,(1<<UCSZ0)|(1<<UCSZ1)
out UCSRC,R16
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

UCSRC = (1<<URSEL)|(3<<UCSZ0) ; Set frame format: 8data, 1stop bit


Выведи в контроллере, при проверке наличия данных на отдельные выводы состояние бит ошибок приема - посмотришь что не так.
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 458
Зарегистрирован: Пн дек 13, 2010 13:01:59
Откуда: Украина

Сообщение DJ_Kiridza »

Прошу прощения за безпокойство, проблема оказалась не в коде.
Уже после того, как опубликовал пост, на всякий случай еще разок промыл плату (главное - уже наступал на эти грабли) - дело в том что корпус SOIC сразу не заметил, что-то попало между ножкой кварца и ТХ... результат думаю предсказуемый :) после того как промыл - заработало... Всем пасиб за советы!!
мысли мысли штош вы вйотесь
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 383
Зарегистрирован: Пн мар 16, 2009 23:35:42
Откуда: Украина Новоднестровск

Сообщение nibiluk »

Уважаемые гуру асесблера подскажите как просканировать такую клаву на 4 кнопки, ато с обучалкой совсем запутался.
Вложения
123.jpg
(88.81 КБ) 381 скачивание
Последний раз редактировалось nibiluk Вт мар 06, 2012 00:04:16, всего редактировалось 1 раз.
Всем известно что любая микросхема работает на дыме, и если волшебный дым из неё вышел то она перестает работать.
Встал на лапы
Сообщения: 128
Зарегистрирован: Пт сен 23, 2011 23:49:20
Откуда: Симферополь, Украина

Сообщение juzik »

Схемку забыли? :)
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 383
Зарегистрирован: Пн мар 16, 2009 23:35:42
Откуда: Украина Новоднестровск

Сообщение nibiluk »

формат рисунка не то был, исправил.
Вложения
123.jpg
(88.81 КБ) 419 скачиваний
Всем известно что любая микросхема работает на дыме, и если волшебный дым из неё вышел то она перестает работать.
Встал на лапы
Сообщения: 128
Зарегистрирован: Пт сен 23, 2011 23:49:20
Откуда: Симферополь, Украина

Сообщение juzik »

Какая-то странная схема. Вы уверены что она правильная? Почему R4 R5 R7 в воздухе висят?
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 383
Зарегистрирован: Пн мар 16, 2009 23:35:42
Откуда: Украина Новоднестровск

Сообщение nibiluk »

Это входы, схема с протеуса, динамическую индикацию понял, а вот клаву никак.
Всем известно что любая микросхема работает на дыме, и если волшебный дым из неё вышел то она перестает работать.
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Диоды надо н акнопки. и вход подпереть к "+" или "-" чтобы не висел в воздухе когда ни одна кнопка не нажата. Иначе что будет если нажать ДВЕ кнопки?

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

Ага, не заметил сразу косяк... у тебя будут реагировать кнопки все кроме той которая подключена к зажженому сегменту. А должно быть наоборот, срабатывать должна только та кнопка индикатор которой зажжен. Сделай отвод кнопок с баз транзисторов(непосредственно с выводов порта) через диоды, и станет гораздо легче.
Контактная информация:
xkp
Опытный кот
Аватара пользователя
Сообщения: 781
Зарегистрирован: Ср ноя 18, 2009 12:50:31
Откуда: ковров

Сообщение xkp »

ну.... как то так надо бы... где ограничение по току на индикацию? почему транзисторы не той структуры? как вы представляли их работу? вообщем в картинке все написано


а... еще резисторы на бызы транзисторов
Вложения
123.rar
(86.38 КБ) 150 скачиваний
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Контактная информация:
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

В протеусе можно и без ограничительных резисторов, в нем дым никак пойти не сможет!
Контактная информация:
Ответить

Вернуться в «AVR»