Краткий Курс - программирование AVR - часть V

 
1 2 3 4 5 6 7 12
RU termostat #13.02.2005 02:05
+
-
edit
 

termostat

аксакал

Да, они, отдал на тестирование качества связи.


А вот кстати вспомнил прогу-осцилограф на звук курту ПК, очень фнуциональная SpectraLab.v4.32.17

здесь лежит:

вместе с кучей книг по МК по Алгоритмам и софт проги по теме.
Это сообщение редактировалось 13.02.2005 в 02:51
Здравствуйте!
Вот прошел ваш курс, но ничего не понял-неделю пытался понять.
Что можно еще почитать именно об основах?

Спасибо
 
Ну подскажите!!!
А то си я понимаю немного, но нехватает именно знаний всяких функций типа: инкрементировать, декрементировать, сравнить и т.д.
Направьте меня куда-нить пожалуйста!!
 
RU termostat #13.02.2005 03:00
+
-
edit
 

termostat

аксакал

Ты не спеши.

инкремент это увеличить на 1
декремент уменьшить на 1

Литература по Си на стр. 5 курса.
в начале там сылочка на
"Руководство полного идиота по Си"
http://avr123.nm.ru/c_book.rar проще уж некуда.

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

По ходу работы записывай на листок вопросы какие возникают, затем поищи на них ответы в курсе и в литературе что выше обознчена. Если вопросы останутся - спрашивай. Только информативно: что именно не получается и что непонятно и что ты сделал чтоб это понять.

А первую страницу конфы ты читал?
Первую страницу сейчас в оффлайне буду читать.

А ссылка то битая :(
 
Так же мне непонятно, как обращаться только к одному биту порта, и делать условия, и прерывания, а то в ассемблере научился и довольно легко.
 
RU termostat #13.02.2005 03:16
+
-
edit
 

termostat

аксакал

Guest> Вот прошел ваш курс, но ничего не понял-неделю пытался понять.
Guest> Что можно еще почитать именно об основах?
 


Если просто читать то вряд ли поймешь, нужно делать задачи курса, они делаются на ПК - нужно только софт скачать.
+
-
edit
 

aliens6

новичок
Так я и делаю.
Только моделирую в другой программе
 
+
-
edit
 

termostat

аксакал

Guest> Так же мне непонятно, как обращаться только к одному биту порта, и делать условия, и прерывания, а то в ассемблере научился и довольно легко. [»]
 


т.е. неделю читая ты задачу 01 не прочитал?

Дык почитай. Там и инкремент - написано что такое, и как обращаться только к одному биту порта в РАЗНЫХ компиляторах написано.

Не читал вот ты только...

о прерываниях в задаче 03.

А задачи делай с 01 и далее...

+
-
edit
 

aliens6

новичок
И первый я читал. Там идет "описание как начать работать с ICC"
Во второй идет изучени микро-лаба, а в третьей считыватель и передача по усарту
А вы не изменяли архив? а то я с него читаю
 
RU termostat #13.02.2005 03:33
+
-
edit
 

termostat

аксакал

Ну открой еще раз задачу 01



QIP.RU: почта, поиск, новости, знакомства, игры и развлечения


QIP.RU - новости и развлечения. Сайт объединяет в себе все необходимые пользователям сервисы: почту, поиск, знакомства, хранение данных: фото, видео, файлов, а так же широкий спектр различных онлайн игр.

// avr123.nm.ru
 


разве там нет о инкременте и побитному обращению к порту? и не мало написано.

Какой компилятор ты используешь?
+
-
edit
 

aliens6

новичок
Только что открыл.
Инкремент есть PORTB++

А вот остального нету.
Все компиляторы такие как написано в курсе
 
RU termostat #13.02.2005 03:36
+
-
edit
 
+
-
edit
 

aliens6

новичок
Все нашел запару.
Архив старый, сейчас буду с сайта качать
 
RU termostat #13.02.2005 03:41  @aliens6#13.02.2005 03:36
+
-
edit
 

termostat

аксакал

aliens6> Только что открыл.
aliens6> Инкремент есть PORTB++
aliens6> А вот остального нету.
aliens6> Все компиляторы такие как написано в курсе [»]
 


Блин у нас что интернет разный?????

вот это ты увидел:


PORTB++; // Increment PORTB

Увеличить на 1 предыдущее значение в PORTB - если было 135 стало 136, а вот если было 255 то станет 0 - потому что байт это десятичное число от 0 до 255.
 


А ниже у тебя нет??? вот этого: Написано красными крупными буквами:

Очень важно!

Битовые операции!

Как вы уже поняли МК должен "дергать ножками" - создавать на них то "1" то "0" то считывать что там на них есть.

И часто не всеми сразу, а по одной!

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


и далее подробно как...


+
-
edit
 

aliens6

новичок
Не было в архиве. (09.2004)
Сейчас зашел на сайт, там все есть. А что только 2 урока?
 
RU termostat #13.02.2005 03:50
+
-
edit
 
RU termostat #13.02.2005 03:52
+
-
edit
 
+
-
edit
 

aliens6

новичок
Спасибо!

Кстати, вот сегодня вечером написал просто для проверки на ICC и на асме одинаковую прогу (инкремент и вывод в порт), только на си она 100 байт а на асме 15! это я что-то не то делаю, или так и надо?
Коды(асм):
.include "2313def.inc"

.def temp=r16

rjmp Reset

RESET:

ldi temp,0xff
out DDRB,temp
ldi temp,0x7f
out DDRD,temp
ldi temp,0

START:

inc temp
out PORTB,temp


rjmp Start

СИ:
#include <io2313v.h>

unsigned char tmp;

void port_init(void)
{
PORTB = 0x00;
DDRB = 0xff;
PORTD = 0x00;
DDRD = 0x7f;
}


void main(void)
{
port_init();
while(1)
{
tmp++;
PORTB=tmp;
}
}


 
+
-
edit
 

aliens6

новичок
Эмулятор есть, неделю назад скачал.
 
RU termostat #13.02.2005 04:09
+
-
edit
 

termostat

аксакал

aliens6> Спасибо!
aliens6> Кстати, вот сегодня вечером написал просто для проверки на ICC и на асме одинаковую прогу (инкремент и вывод в порт), только на си она 100 байт а на асме 15! это я что-то не то делаю, или так и надо?
 


Если обе проги работают в симуляторе одинаково, то все правильно. А что компилятор добавил можно увидеть в АСМ листинге который он произвел.

+AlS+

новичок
Подскажите каким образом можно реализовать алгоритм определения набираемого телефонного номера микроконтроллером включенном в телефонную линнию (соответственно параллельно ТА).

Есть согласующая схема, преобразующая уровени в телефоной сети в ТТЛ уровни.

Временные характеристи импульсных номеронаберателей (мс), в скобках приведены номинальные значения:
Время замыкания контактов- 34-46 (40)
Время размыкания контактов- 53-70 (60)
Период повторения- 95-105 (100)
Межсерийная пауза, не менее- 650 (800)


Еще вопрос можно ли напрямую соединить две ноги МК одна из которых будет работать как вход, а другая настроена как INT0 (например falling edge - по заднему фронту).
 

Yuran

опытный

Собсвтенно, хочется поделится горьким опытом работы с Tiny2313.
1) Я понял что проблемы начнуться когда увидел в даиашите префикс Preliminary..., всё что прекрасно работало на 2313 (а именно external interupt INT0, INT1 на 0 уровень, работать перестало)...
2) Сходство с at90s2313 только в распайке пинов и последних 4 цифрах, в остальном это абчолютно разные чипы причём документ который описывает миграцию с s2313 на tiny, не содержит всех отличий.

3) Последняя версия AVR Studio глючит при работе с прерываниями от таймера Compare mode, с этим пришлось долго повозиться потом забил, и залил в том виде в котором по теории это должно работать, и оно действительно стало работать =))), так что бкдем ждать свежую AVR Studio с исправленными багами по Тиньке.

Собсвенно, основной неприятный затык по сравнению s2313 в следующем.
Допустим на выводе INT0 висит кнопка на землю. Интерапты разрешены и выставлен режим срабатывания по 0 уровню.
DDRD 0b00001100
PORTD 0b00001100
C данными настройкми, на 2313 всё прекрасно работало на tiny 2313 работать перестало, причём всевожможные варианты с направлением порта на ввод, вывод подключением и отключением Пулапов проблему не решили, так что вполне может быть хардварный баг, такой же как невозможность програмировать паралельным способом, о чём они сознались правда, и уже походу пофиксили =)
 
RU termostat #13.02.2005 16:10
+
-
edit
 

termostat

аксакал

+AlS+> Подскажите каким образом можно реализовать алгоритм определения набираемого телефонного номера
 


залогить происходящее на линии при наборе номера звуковой картой ПК, и проанализировать например в проге что я недавно указал.

Програмно изобразить это. Телефонный интерфейс можно взять из раздела схемы телесистем - линк на 1-й страничке курса avr123.nm.ru - схема по моему GSM моста.

+AlS+> можно ли напрямую соединить две ноги МК
 


Можно, но они не должны "перетягивать" друг-друга, т.е. если они обе выходы то будь внимательней.
+
-
edit
 

aliens6

новичок
Вопросы по курсу: :)
1.Почему в первом задании работает таймер, но мы не задавали TIMSK?(т.е. не включили таймер)
Это я беру из ассемблера.
2.Как считать бит из порта (PIN)?
3.Можно ли использовать знак |= дл превращения в 0, когда все единицы?
4.Как считать данные по УСАРТ у
5.Как сдвигать ? с помощью << не получается, или я е правильно пишу, или это вообще не сдвиг. :rolleyes:
 
Это сообщение редактировалось 14.02.2005 в 02:37
1 2 3 4 5 6 7 12

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru