Микроконтроллер от и до.......

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Микроконтроллер от и до.......

Сообщение vitalik_1984 »

hfelyx писал(а):как объединить два порта PORTD и PORTB в один ,для последующего использования его в световых эффектах,с помощью одной переменной?

интересный вопрос...какой средой пользуетесь язык какой

так то несложно

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

insigned int ports_control;
#define PORTS_Hbyte PORTB
#define PORTS_Lbyte PORTC
void ports_out(insigned int ports_control){
      PORTS_Lbyte= ports_control & 0x00ff;
      PORTS_Hbyte= ports_control>>8;
     
     
}

//проделали операции с нужной переменной
//вызвали функцию для вывода
      ports_control=0x0001;
 while(ports_control){ 
      ports_control++;
      ports_out(ports_control);
       _delay_ms(500);
}
В поисках истины человек развивается.
hfelyx
Встал на лапы
Сообщения: 102
Зарегистрирован: Вт дек 28, 2010 18:25:31

Re: Микроконтроллер от и до.......

Сообщение hfelyx »

Задача: С помощью портов В и Д микроконтроллера ATtiny 2313,реализовать световой эффект, например ,бегущей точки.От PINB.0 до PINB.7 могу ,а как передать управление от PINB.7(когда бегущая точка дойдет до него) на PIND.0 ,для продолжения светового эффекта внутри порта Д???
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Микроконтроллер от и до.......

Сообщение ploop »

Тот же самый сдвиг, только с переносом.
hfelyx
Встал на лапы
Сообщения: 102
Зарегистрирован: Вт дек 28, 2010 18:25:31

Re: Микроконтроллер от и до.......

Сообщение hfelyx »

ploop писал(а):Тот же самый сдвиг, только с переносом.

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

Re: Микроконтроллер от и до.......

Сообщение ploop »

На Си не знаю, на ассемблере подсказал бы...
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Микроконтроллер от и до.......

Сообщение vitalik_1984 »

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

#define PORTS_Lbyte PORTB
#define PORTS_Hbyte PORTC

void ports_out(insigned int ports_control){
      PORTS_Lbyte= ports_control & 0x00ff;
      PORTS_Hbyte= ports_control>>8;   
}

hfelyx писал(а):А как это написать в программе на Си?

Это итак на си написано
В поисках истины человек развивается.
hfelyx
Встал на лапы
Сообщения: 102
Зарегистрирован: Вт дек 28, 2010 18:25:31

Re: Микроконтроллер от и до.......

Сообщение hfelyx »

vitalik_1984 писал(а):#define PORTS_Lbyte PORTB
#define PORTS_Hbyte PORTC

void ports_out(insigned int ports_control){
PORTS_Lbyte= ports_control & 0x00ff;
PORTS_Hbyte= ports_control>>8;
}
hfelyx писал(а):А как это написать в программе на Си?

Это итак на си написано

А можно как то прокоментировать программу,а то я новичек....или литературу посоветовать для ознакомления???
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Микроконтроллер от и до.......

Сообщение vitalik_1984 »

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

Re: Микроконтроллер от и до.......

Сообщение Alexeyslav »

Вот тут в теме говорилось про работу портов, хотелось бы добавить. Если внимательно посмотреть в даташит то там ясно написано что PINx представляет собой именно состояние выводов контроллера независимо от того в каком режиме они находятся, ввода или вывода. Это очень важно, поскольку иногда может быть такая ситуация что на выходе порта установлена "1" но он принудительно замкнут на общий провод, в таком случае PINx будет выдавать "0" на этом выводе.

PORTx - помещает переданное значение в регистр-защелку и даже если вывод находился в режиме ввода его состояние хранится в регистре, и как только переключить его на выход - оно тут же проступит наружу.

К чему это все. А к тому что есть такие команды для работы с отдельными битами порта, но аппаратно микроконтроллер не поддерживает побитный доступ - поэтому такие команды реализованы как операции над всем портом целиком, даже если меняем 1 бит - сначала СЧИТЫВАЕТСЯ значение всех 8 бит с порта, потом меняется бит и записывается в регистр. Вот здесь и кроется засада. Считывается то реальное состояние выводов - а значит если в регистре-защелке была записана "1" но снаружи этот вывод порта надежно сидит на "0"(кнопка например), то при следующей попытке изменить любой отдельный бит порта туда запишется "0" что может оказаться несколько неожиданным.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Микроконтроллер от и до.......

Сообщение ploop »

К чему это все. А к тому что есть такие команды для работы с отдельными битами порта, но аппаратно микроконтроллер не поддерживает побитный доступ - поэтому такие команды реализованы как операции над всем портом целиком, даже если меняем 1 бит - сначала СЧИТЫВАЕТСЯ значение всех 8 бит с порта, потом меняется бит и записывается в регистр.

Теперь открываем даташит, смотрим на команды CBI/SBI, и видим, что они выполняются за два такта. Как это еще можно провернуть, кроме как на аппаратном уровне?
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Микроконтроллер от и до.......

Сообщение vitalik_1984 »

Alexeyslav писал(а):Если внимательно посмотреть в даташит то там ясно написано что PINx представляет собой именно состояние выводов контроллера независимо от того в каком режиме они находятся, ввода или вывода. Это очень важно, поскольку иногда может быть такая ситуация что на выходе порта установлена "1" но он принудительно замкнут на общий провод, в таком случае PINx будет выдавать "0" на этом выводе.

правильно,а если порт при этом настроен на выход,то он еще и сгореть может
Alexeyslav писал(а):
PORTx - помещает переданное значение в регистр-защелку и даже если вывод находился в режиме ввода его состояние хранится в регистре, и как только переключить его на выход - оно тут же проступит наружу.

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

Re: Микроконтроллер от и до.......

Сообщение ploop »

а менять пинх смысла не имеет,поэтому его просто считываем там,где нам нужны эти данные.

Имеет. На новых сериях. Запись единицы в PINx приводит к инверсии в PORTx.
Простой генератор меандра будет выглядеть так:

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

loop:
  sbi PINx, Y
  rjmp loop
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Микроконтроллер от и до.......

Сообщение vitalik_1984 »

а новые это какие? мега8 к ним относится?

Поправка к моему посту выше
только они не для всего диапазона вродерегистров работают,там где много портов могут не работать в дальних портах (смотрим список распределения адресов в памяти)

I/O registers within the address range $00 - $1F are directly bit-accessible using the SBI and CBI instructions. In these reg-
isters, the value of single bits can be checked by using the SBIS and SBIC instructions.

в портах ввода вывода на всех должны работать они чаще в начале таблицы регистров стоят(к нашей радости)
Последний раз редактировалось vitalik_1984 Чт фев 09, 2012 14:49:25, всего редактировалось 3 раза.
В поисках истины человек развивается.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Микроконтроллер от и до.......

Сообщение Engineer_Keen »

Нет :( В 8-16-32, 8515-8535 мегах нет. Есть например в 13-х4-х5-2313 тиньках и х8-х14 мегах.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Микроконтроллер от и до.......

Сообщение ploop »

классическая 8 не знаю, 8А должна.
48/88/168 и тини2313 работают точно, штук пять проектов, где этот приём использую.
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Микроконтроллер от и до.......

Сообщение МитяРа »

ploop писал(а): где этот приём использую.
На правах оФФФтопа..
"Бедные AVR-щики.." :cry:
Битовый процессор и все операции с битами у МК51-х изначально: были, есть и будут есть.. :)))
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Микроконтроллер от и до.......

Сообщение Engineer_Keen »

ploop писал(а):классическая 8 не знаю, 8А должна.

Че-то я в описалове этого не видел... Да и как-же программная совместимость с не-А?

МитяРа писал(а):"Бедные AVR-щики.." :cry:
Битовый процессор и все операции с битами у МК51-х изначально: были, есть и будут есть.. :)))


Ну да, первое время после 51 не удобно, потом быстро приспосабливаешься. Да и AVR все равно быстрее считает-изменит-запишет нужный бит, пока классический 51-й его одной командой проинвертирует :P
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Микроконтроллер от и до.......

Сообщение МитяРа »

Engineer_Keen писал(а):AVR все равно быстрее считает-изменит-запишет нужный бит, пока классический 51-й его
Ещё один оФФФтоп и всё..

Раз пошла такая "пьянка", то надо сравнивать AVR-ки не с классикой, а с уже тогда имеющимися 51-ми с укороченным циклом..
Это, например, серия LPC9хх от Филлипса и МК от Cygnal-а, теперь SiLabs, а даже с той-же LPC-серией 51-х от того-же Атмела..
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Микроконтроллер от и до.......

Сообщение ploop »

Че-то я в описалове этого не видел... Да и как-же программная совместимость с не-А?

Я тоже не видел, просто предположил. А проверить не на чем.
На счет совместимости - код из "не А" 100% будет работать на "А". Обратное верно частично, т.к. запись в PINx никто не запрещал, она просто не приведёт к желаемому эффекту. А может приведёт, просто эту возможность проще не документировать, чем специально изменять аппаратную часть, т.к. есть подозрение, что у x8 и новых "А"-серий она очень похожа.

Это всё чисто мои предположения, т.к. лень бесцельно рыть документацию...
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Микроконтроллер от и до.......

Сообщение Gudd-Head »

ploop писал(а):А проверить не на чем... Это всё чисто мои предположения, т.к. лень бесцельно рыть документацию...

Почему бесцельно? Для самообразования: вот Figure 22. General Digital I/O на восьмёрку и 8А (справа) и тиньку2313 (слева):
Изображение
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Ответить

Вернуться в «Теория»