Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
26.11.2008, 18:24
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Ну просто ОГРОМНЕЙШЕЕ Вам СПАСИБО. Еще бы объяснили, что такое вектора прерывания (на маленьком примере). И еще в довеску
//UCSRB&=0xe7;ATMega8
UCSR0B&=0xe7;// Изменено под ATMega88
|
|
|
|
26.11.2008, 22:29
|
|
Временная регистрация
Регистрация: 13.02.2008
Сообщений: 60
Сказал спасибо: 10
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Сообщение от FedorChek
|
Ну просто ОГРОМНЕЙШЕЕ Вам СПАСИБО. Еще бы объяснили, что такое вектора прерывания (на маленьком примере). И еще в довеску
//UCSRB&=0xe7;ATMega8
UCSR0B&=0xe7;// Изменено под ATMega88
|
Да тут все верно, о векторах постараюсь написать завтра.
|
|
|
|
28.11.2008, 14:53
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Жду с нетерпением.
|
|
|
|
30.11.2008, 17:59
|
|
Временная регистрация
Регистрация: 13.02.2008
Сообщений: 60
Сказал спасибо: 10
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Вот ради спортивного интереса решил написать программу
для автоматического перевода кода с ATMega8 на ATMega88.Это бета версия, могут быть глюки.К сожелению программа понимает только 16ти и 10тиричное представление чисел,все остальное игнорируется(пока).
Преобразования касаются толко регистров, все остальное не преобразовывается(например вектора прерываний).Будут глюки пишите.Да еще вставка и копирование кода производится стандартными горячими клавишами Windows.
Прикрепленный файл: 6699055.rar
|
|
|
|
01.12.2008, 11:32
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Прикольная прога только вот почему или как правильно перевести код
DDRD.6=0; // порт на вход
PORTD.6=0; // pull-up disable
DDRD.7=0; // порт на вход
PORTD.7=0; // pull-up disable
// Analog Comparator initialization
// Analog Comparator: On
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x00;
SFIOR=0x00;
под мегу88
DDRD.6=0; // порт на вход
PORTD.6=0; // pull-up disable
DDRD.7=0; // порт на вход
PORTD.7=0; // pull-up disable
// Analog Comparator initialization
// Analog Comparator: On
// Analog Comparator Input Capture by Timer/Counter 1: Off
//ACSR=0x00;
ACSR = 0x00;
//SFIOR=0x00;
Вот тут вопрос??? Судя по даташиту не хватает MCUCR=0x00;
GTCCR = 0x00;ADCSRB = 0x00;;
или как?
[/b]
|
|
|
|
01.12.2008, 11:41
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Прикольная прога только вот почему или как правильно перевести код
DDRD.6=0; // порт на вход
PORTD.6=0; // pull-up disable
DDRD.7=0; // порт на вход
PORTD.7=0; // pull-up disable
// Analog Comparator initialization
// Analog Comparator: On
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x00;
SFIOR=0x00;
под мегу88
DDRD.6=0; // порт на вход
PORTD.6=0; // pull-up disable
DDRD.7=0; // порт на вход
PORTD.7=0; // pull-up disable
// Analog Comparator initialization
// Analog Comparator: On
// Analog Comparator Input Capture by Timer/Counter 1: Off
//ACSR=0x00;
ACSR = 0x00;
//SFIOR=0x00;
Вот тут вопрос??? Судя по даташиту не хватает MCUCR=0x00;
GTCCR = 0x00;ADCSRB = 0x00;;
или как?
[/b]
|
|
|
|
01.12.2008, 20:58
|
|
Временная регистрация
Регистрация: 13.02.2008
Сообщений: 60
Сказал спасибо: 10
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Добрый Вам вечер FedorChek.Да действительно не корректно преобразовывались все регистры на выходе которых должно быть по 3 регистра (SFIOR,TIFR и TIMSK),глюк исправлен.Спасибо Вам за помощь, после более тщательной проверки выложу исправленный вариант.Я также хочу извениться за то, что не ответил на Ваш вопрос о векторах(увлекся программой), но лучше чем хорошая книга, Вам никто не расскажет.На просторах Интернет масса книг по AVR на русском языке.
Судя по синтаксису
DDRD.6=0; // порт на вход
PORTD.6=0; // pull-up disable
DDRD.7=0; // порт на вход
PORTD.7=0; // pull-up disable
это сруктура, возможно макрос или особенности компилятора, который Вы используете(я в С новичек(а каким компилятором Вы пользуетесь?)).
Суть кода мне ясна, насколько я понял - изменение конкретного бита в регистре.Если руки дойдут внесу эту особенность в программу.
Тем не менее для уменьшения выходного кода необходимо учитывать какими именно битами вы хотите манипулировать.
|
|
|
|
02.12.2008, 17:05
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Пишу и компилирую в CodeVisionAVR потом .hex загоняю в AVR Studio
Не могу разобраться почему CodeVisionAVR ругается на строку while((--time_out)&&(!ACSR.5)); // Wait for first
time_out=65000;
while((--time_out)&&(!ACSR.5)); // Wait for first impulse
TCCR1B=0x01; // запуск таймера f=32768/1 Гц
также говорит что символ не найден TCNT1
TCNT1=0x0000; // обнуление регистра счетчика
как это исправить?
|
|
|
|
02.12.2008, 19:23
|
|
Временная регистрация
Регистрация: 13.02.2008
Сообщений: 60
Сказал спасибо: 10
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
while((--time_out)&&(!ACSR.5));
может быть так:
while((time_out›0)&&((ACSR & 0x20)==0))--time_out;
ждем пока не истечет время или не сработает компаратор.
TCNT1=0x0000; // обнуление регистра счетчика
как это исправить?
TCNT1H = 0;
TCNT1L = 0;
но не наоборот это важно!
Я не пользовался CodeVisionAVR, но если вы используете его в паре с AVRStudio для отладки, тогда могу Вам посоветовать компилятор от фирмы ImageCraft для AVR, полнофункциональную демо можно скачать с официального сайта(у них лимит по объему 64к),да еще и плагин для AVRStudio, чтобы писать и отлаживать непосредственно в нем.И он без проблем понимает TCNT1 как шестнадцатиразрядный регистр(тип int),да и арифметические функции с плавающей запятой он генерит лучше чем IAR (ИМХО).
|
|
|
|
08.12.2008, 15:59
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
DrunyaRuma Спасибо что-то начинает получатся только вот не понял одну фишку если
DDRD.2=0;//вход
PORTD.2=1;//pull-up enable
оставить код без изменения индикатор не горит, а если
вот так
DDRD=0;//вход
PORTD.2=1;//pull-up enable
то все нормально с чем это связано?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:58.
|
|