WinAvr в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

Vergilium писал(а):Подскажите пожалуйста, как передать байт в регистр последовательно, т.е. есть переменная с определенным значением и нужно записать ее в внешний 8ми битный регистр последовательно бит за битом.
а в чем проблема? SPI, TWI или USART сделают это аппаратно, а программно - при помощи сдвига в цикле.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
Vergilium
Грызет канифоль
Сообщения: 260
Зарегистрирован: Ср фев 13, 2008 14:41:32
Откуда: Украина, Николаев

Сообщение Vergilium »

А можно напрямую обратится к определенному выводу парта, например к 6 выводу порта А. Что то вроде этого PORTA.6 не катит в WinAVR. Может какая то функция есть или что еще?
Немного нервов и девайс готов
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

Vergilium писал(а):А можно напрямую обратится к определенному выводу парта, например к 6 выводу порта А. Что то вроде этого PORTA.6 не катит в WinAVR. Может какая то функция есть или что еще?
а вы делайте, как будто работаете не с портом, а с обычной переменной... как в ней отдельный бит изменить? вот точно так же и с портом:

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

PORTA |= 1<<PA6; // естановить 6 пин порта в 1
PORTA &= ~(1<<PA6); // сбросить пин 6 порта в 0
PORTA ^= 1<<PA6; // изменить пин 6 порта на противоположный уровень
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
DimAlt
Вымогатель припоя
Сообщения: 576
Зарегистрирован: Пт май 19, 2006 05:39:11
Контактная информация:

Сообщение DimAlt »

Можно воспользоваться замечательными макросами

pin_macros.h
* Author: Oleksandr Redchuk aka ReAl (real@real.kiev.ua)
*
* Description: port bits access macros for AVR uC family (avr-gcc compiler)
*
* Based on macros by Ascold Volkov, Andy Mozzevilov, Aleksey Musin
Вложения
pin_macros.h
(4.01 КБ) 500 скачиваний
Реклама
Эиком - электронные компоненты и радиодетали
Noxilie
Родился
Сообщения: 1
Зарегистрирован: Пн окт 19, 2009 12:13:53

Сообщение Noxilie »

hunter03 писал(а):извиняюсь
Не могли бы Вы разъяснить эту строку

<< - битовый сдвиг как я понял
а |= что такое

просто на си писал очень давно
счас в книжку сунулся
там нет ничего такого нет

ЗЫ. или это 2 оператора |и =?


http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=37871 - это если владеете ангельским
А если не владеете, то да, это два оператора.

PORTC |= (1<<PC4);
что эквивалентно: PORTC = PORTC | (1<<PC4);

1<<PC4 - это сдвиг единицы на четыре бита влево (как показал тест на эмуляторе :) ), то бишь мы получим 10000 в двоичной сс

что-такое PC4 вот только не понятно мне) Откуда оно такое?
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

DimAlt писал(а):Можно воспользоваться замечательными макросами
pin_macros.h
можно, но стоит ли? не лучше ли использовать де-факто стандартные для AVR-GCC макросы, которые уже определены в avr-libc?

что-такое PC4 вот только не понятно мне) Откуда оно такое? писал(а):что-такое PC4 вот только не понятно мне) Откуда оно такое?
а это всего-навсего заранее определенная константа для обозначения конкретного разряда порта, точно так же, как, например, ADSC обозначает бит запуска АЦП в регистре ADCSRA, так и PC4 обозначает 4-й бит для DDRC, PORTC или PINC.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
DimAlt
Вымогатель припоя
Сообщения: 576
Зарегистрирован: Пт май 19, 2006 05:39:11
Контактная информация:

Сообщение DimAlt »

ARV писал(а):
DimAlt писал(а):Можно воспользоваться замечательными макросами
pin_macros.h
можно, но стоит ли? не лучше ли использовать де-факто стандартные для AVR-GCC макросы, которые уже определены в avr-libc?

А какой в них криминал? Мне интересно Ваше мнение.
Я сам начал приходить к таким макросам, но у меня на первых порах возникли трудности со склейкой, в поисках примеров нашел этот файл. Для меня это пример, как надо делать. Очень понравился, я не призываю им пользоваться, просто красива сама идея.
kaf
Открыл глаза
Сообщения: 53
Зарегистрирован: Сб фев 28, 2009 18:09:25
Откуда: Челябинск
Контактная информация:

Сообщение kaf »

DimAlt писал(а):А какой в них криминал?
криминала никаго - очень удобно, но ## мало какие компиляторы знают.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

криминала никакого. но большинство привыкают к тому, что есть у всех без исключения (кто пользует avr-gcc), и перепривыкать к вашим поделкам как-то не очень охота... к тому же мне показалось, что там что-то слишком уж лихо накручено... как-то непрозрачно...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
DimAlt
Вымогатель припоя
Сообщения: 576
Зарегистрирован: Пт май 19, 2006 05:39:11
Контактная информация:

Сообщение DimAlt »

ARV писал(а): перепривыкать к вашим поделкам как-то не очень охота...

Поделка автора Oleksandr Redchuk aka ReAl (real@real.kiev.ua), как то слово это, здесь не к месту.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

DimAlt писал(а):Поделка автора Oleksandr Redchuk aka ReAl (real@real.kiev.ua), как то слово это, здесь не к месту.
ну мы-то от вас об этой поделке узнали - вот и приписали вам :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Negor
Вымогатель припоя
Сообщения: 586
Зарегистрирован: Ср мар 07, 2007 22:58:02
Откуда: Черкассы, Украина
Контактная информация:

Сообщение Negor »

Есть ту счастливчики, что удачно пользуют либы из avrlib porcylan вместе с winavr и avrstudio? Пока рабочий вариант - этот makefile. Но это не есть гуд. Неужели нужно всегда создавать makefile самому для каждого проекта? Я понимаю что раньше так и было, но 21й век на дворе. Вобщем проблема как и у многих. На этапе сбора линкер кричит undefined reference to <avrlib> Вот. Т.е. Makefile который создаёт студия не полходит. Все директории везде прописаны(до этого просто не виделись файлы.)
Вложения
Makefile.rar
убрать расширение
(3.98 КБ) 383 скачивания
There is only 10 kind of people: those who understands binary code and those who dont!!!
Аватара пользователя
AI_Disable
Сверлит текстолит когтями
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб
Контактная информация:

Сообщение AI_Disable »

Как известно, у тини2313 по два регистра сравнения на таймер. Подскажите, можно ли сделать два прерывания от таймера1 по совпадению с регистром OCR1A OCR1B, но при этом чтоб первое прерывание не сбросило таймер?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

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

AI_Disable, при сравнении счетчик таймера не портится! т.е. если вы сами его не запортили, то все будет пучком.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
AI_Disable
Сверлит текстолит когтями
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб
Контактная информация:

Сообщение AI_Disable »

ARV писал(а):AI_Disable, при сравнении счетчик таймера не портится! т.е. если вы сами его не запортили, то все будет пучком.

То есть мне разрешить прерывания по совпадению в режиме normal, а не в CTC? Но тогда такой вопрос: если я буду вручную обнулять таймер из прерывания, не потеряю ли я на этом такты?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

вы огласите задачу: откуда можно было знать, что у вас СТС-режим был? может, оно и не надо - обнулять-то?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
AI_Disable
Сверлит текстолит когтями
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб
Контактная информация:

Сообщение AI_Disable »

Нужно, чтоб сначала таймер досчитал до OCR1A, вызвал прерывание, затем продолжил считать до OCR1B, вызвал прерывание и сразу же обнулился. То есть нужно, чтоб прерывание по совпадению с OCR1A было как "normal", а с OCR1B, как "CTC".
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

AI_Disable писал(а):Нужно, чтоб сначала таймер досчитал до OCR1A, вызвал прерывание, затем продолжил считать до OCR1B, вызвал прерывание и сразу же обнулился. То есть нужно, чтоб прерывание по совпадению с OCR1A было как "normal", а с OCR1B, как "CTC".
а наоборот нельзя? тогда СТС вы делали бы по OCR1A, как и положено, а по OCR1B прерывались бы...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
AI_Disable
Сверлит текстолит когтями
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб
Контактная информация:

Сообщение AI_Disable »

А таймер разве не сбросится по достижению OCR1B? Я боялся, что режим CTC выбирается для обоих регистров сравнения одновременно.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

AI_Disable писал(а):А таймер разве не сбросится по достижению OCR1B? Я боялся, что режим CTC выбирается для обоих регистров сравнения одновременно.
читайте даташит - СТС работает по OCR1A или ICR1.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Ответить

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