Страница 2 из 3
Добавлено: Вс фев 10, 2008 22:43:03
Tohey
А лучше всего shell воспользуйся отладчиком быстрее будет и полезней.
Добавлено: Пн фев 11, 2008 21:46:34
shells
Каким например?
Добавлено: Пн фев 11, 2008 21:54:07
shells
Если не трудно, помогите написать прогу. Так как в рабочей проге мне будет проще разобраться что и как.
Добавлено: Вт фев 12, 2008 22:38:20
Tohey
VMLAB например. Открываешь ихние примеры (в папке AVR_demo), компилируешь(F9) и разбираешься в пошаговом режиме(F7), наблюдая что происходит с регистрами, переферией и т.д. Мне лично очень это помогло...
Добавлено: Чт фев 14, 2008 12:43:31
shells
Конечно спасибо за совет ,но мне бы помогла написаная программа где ясно что и как работает!Я даже не нашёл описание как запрограммировать ацп .
Добавлено: Чт фев 14, 2008 18:01:45
Tohey
В сети книг валом
Добавлено: Чт фев 14, 2008 19:42:48
Sergey.67
СПАСИБО за советы!!!
НО, хотелось бы сделать регулятор переменным резистором. А программирование с АЦП я еще не освоил.
Может у кого есть подобного типа схема и исходник?
Заранее спасибо!!!
Если ни когда не занимались программированием то рекомендую
компилятор BASCOM AVR, там куча всяких примеров - как настраивать порты, работа с АЦП, с прерываниями и многое другое, очень быстро можно самому научится программировать контроллеры АВР.
А просить что-бы добрый дядя за Вас написал программу, навряд-ли кто нибудь будет этим заниматься.
Добавлено: Сб фев 23, 2008 21:52:26
shells
схема мигалки!
Добавлено: Пн фев 25, 2008 03:18:38
Danny_Kornev
Рекомендую в вышеприведенной схеме диоды перевернуть катодами на землю - так больше вероятность, что они светиться станут
Shells, я недавно нашел книжку Вольфганга Трамперта "Измерение и управление при помощи микроконтроллеров AVR". Так вот, в этой книженции рассматривается работа АЦП авр-ок с подробным описанием всех ацп-шных регистров и настройкой оных перед началом работы. Более того, там даже приведен код программы на асме, по которой можно понять как, чего и куда. Вот на нее сцылочка (точнее, не именно на нее, а на страничку со всякими книженциями, сама ссылка на книгу находится в самом низу, предпоследняя):
http://radiodvd.mylivepage.ru/file/71_% ... 0%B8%D0%B5
Удачи!
Добавлено: Ср фев 27, 2008 13:41:48
shells
Спасибо ! Я вот только не пойму как задержку прописать?

Добавлено: Ср фев 27, 2008 16:39:52
tych
shells писал(а):Спасибо ! Я вот только не пойму как задержку прописать?

В
CVAVR вот так :
Код: Выделить всё
delay_ms(число сколько мС нужна пауза - от 1 до 65535);
// т.е. до 65 секунд одной строкой
delay_us(число сколько микро секунд нужна пауза );
Добавлено: Ср фев 27, 2008 19:09:07
Barni
Только вначале не забудь добавить
#include <delay>
Добавлено: Чт фев 28, 2008 09:37:07
Danny_Kornev
В AVR-Stuido на асме это будет выглядеть так (кстати, глянь в обучалке про мигающие светодиоды):
ldi R16,0 ;посылаем 0 в РОН R16
ldi R17,0 ;посылаем 0 в РОН R17
Loop1:dec R16 ;декрементируем R16
brne Loop1 ;branch not equal - ветвиться, если не равно (сравнение с нулем)
dec R17 ;те же операции с РОН R17
brne Loop1
Вот такой нехитрый ход. Впрочем, можешь дать свое мыло, я кину тебе программку AVRDelayloop - прога, в которой просто прописываешь необходимую задержку (в количестве тактов или в секундах), и она тебе выдает готовый код на ассемблере.
Добавлено: Сб мар 01, 2008 14:18:34
shells
Спасибо,но я имел в виду как преобразованный результат АЦП вставить в зодержку.соответственно будет меняться скорость мигания светодиодов при регулировки резистора! или есть более актуальный способ менять скорость при помощи АЦП?
Добавлено: Сб мар 01, 2008 22:52:59
Danny_Kornev
Ну можешь задать вначале какую-то конкретную задержку. Какую-нить придумаешь, я думаю. Затем читаешь из АЦП, сравниваешь с константой (соответствующей опеределенному уровню). Больше - увеличиваешь задержку, меньше - уменьшаешь. Или наоборот. Записываешь в какой-нить зарезервированный РОН значение АЦП. При следующем преобразовании сравниваешь результат уже с этим числом, записанным в резервированном РОН. Опять тот же цикл. И т.д. Это если я правильно понял твою мысль. Щас мозг барахлит - только-только из командировки. Надо будет код - пиши, чо-нить придумаем;) Пусть даже не совсем верный)))
ЗЫ: Ясен хрен, что следующее значение АЦП изменится при изменении положения движка переменного резистора
Добавлено: Вс мар 02, 2008 15:50:25
shells
#include <avr>
#include <avr>
#include <avr>
#include <avr>
INTERRUPT(SIG_ADC)
{
unsigned int ADCdata;
ADCdata = ADCW ;//ADCW;
ADCSR = ADCSR | 0x40;
}
int main (void)
{
DDRD = 0xFF;
ADMUX = 0x40;
ADCSR = 0xCE;
void Pause(int ms)
{
PORTD = 0; //
_delay_loop_2(ms); //
}
start:
PORTD = 0x01; // 1
_delay_loop_2(ADCW * 70); //
PORTD = 0x02; // 2
_delay_loop_2(ADCW * 70); //
PORTD = 0x04; // 3
_delay_loop_2(ADCW * 70); //
PORTD = 0x08; // 4
_delay_loop_2(ADCW * 70); //
PORTD = 0x10; // 5
_delay_loop_2(ADCW * 70); //
PORTD = 0x20; // 6
_delay_loop_2(ADCW * 70); //
PORTD = 0x40; // 7
_delay_loop_2(ADCW * 70); //
PORTD = 0x80; // 8
_delay_loop_2(ADCW * 70); //
sei();
goto start;
}
Добавлено: Вс мар 02, 2008 16:04:27
shells
У меня получилась вот такая рабочая программа , но я не смог сзделать чтобы бегущий огонь полностью останавлевался . Как прогу довести до ума ?

Добавлено: Пн мар 03, 2008 04:27:59
Danny_Kornev
Поясни, что значит "полностью останавливался"? Не понимаю...
Добавлено: Пн мар 03, 2008 12:21:01
shells
это бесконечная задержка . то есть начинается с 0 до большой - бесконечной задержки . я что то не могу сделать большую задержку например 1 с - 10 с что бы всё нормально работало. короче говоря надо что бы скорость светодиодов была от 0 до максимума.
Добавлено: Пн мар 03, 2008 12:25:01
ARV
определи новую функцию, и используй ее везде вместо ADCW:
Код: Выделить всё
uncigned int replace_ADCW(void){
while(ADCW >= 1022);
return ADCW;
}