Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
03.02.2009, 13:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Сообщение от FedorChek
|
Не совсем понял какой результат компиляции должен я привести. Функция использующая таймер1 приведена в прикрепленном файле выше.
|
Нужен результат компиляции. Типа такого:
Код:
|
113: EICRA = (EICRA & (~(1‹‹ISC00))) | (1‹‹ISC01);
+000001D3: E6E9 LDI R30,0x69 Load immediate
+000001D4: E0F0 LDI R31,0x00 Load immediate
+000001D5: 8180 LDD R24,Z+0 Load indirect with displacement
+000001D6: 7F8C ANDI R24,0xFC Logical AND with immediate
+000001D7: 6082 ORI R24,0x02 Logical OR with immediate
+000001D8: 8380 STD Z+0,R24 Store indirect with displacement
114: EIMSK |= (1‹‹INT0);
+000001D9: 9AE8 SBI 0x1D,0 Set bit in I/O register |
Сообщение от FedorChek
|
Что касается
DDRD.2=1;
PORTD.2=1;
тут я явно чтото не понимаю мы строкой DDRD.2=1; подключаем подтягивающий резистор, а строкой PORTD.2=1; подаем на ногу 2 напряжение или как...
|
Или как. DDRD.2 = 1; это включение режима "выход" для PD2, PORTD.2 = 1; это установка на PD2 высокого уровня. Резистор действует только когда линия порта сконфигурирована как вход (DDRD.2 = 0). Вот тогда можно включить резистор - PORTD.2 = 1; или отключить PORTD.2 = 0;
|
|
|
|
03.02.2009, 14:05
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Скорее всего я ошибся в DDRD.2=1; при каком значении 1 или 0 идет напряжение но дело не в этом почему работает только когда всему порту присвоишь DDRD=(1 или 0); а вариант DDRD.2=(1 или 0); не прокатывает
|
|
|
|
03.02.2009, 14:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Сообщение от FedorChek
|
Скорее всего я ошибся в DDRD.2=1; при каком значении 1 или 0 идет напряжение но дело не в этом почему работает только когда всему порту присвоишь DDRD=(1 или 0); а вариант DDRD.2=(1 или 0); не прокатывает
|
Смотрите ассемблерный листинг. Все ответы там. Попробуйте стандартную сишную запись:
DDRD |= 0x04; // то же что DDRD.2 = 1;
DDRD &= ~(0x04); // то же что DDRD.2 = 0;
Вообще баловаться с компилятором, который не соответствует стандарту языка С дело неблагодарное.
А что значит "не прокатывает"? Компилятор ругается или тишина, но в железе не работает?
|
|
|
|
03.02.2009, 16:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Сообщение от FedorChek
|
Скорее всего я ошибся в DDRD.2=1;
работает только когда всему порту присвоишь DDRD=(1 или 0); а вариант DDRD.2=(1 или 0); не прокатывает
|
Это растолковано в задаче-кпражнении 1 курса по AVR
http://avr123.nm.ru/z1.htm
Там же даны примеры управления битами регистров для разных компиляторов Си для AVR.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
03.02.2009, 16:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
DDRD.2=1 в CVAVR компилится нормально.
; 46 DDRD.2 = 1; //
000045 9a8a SBI 0x11,2
; 47
; 48 }
Сообщение от FedorChek
|
DDRD.2=1;
PORTD.2=1;
тут я явно чтото не понимаю мы строкой DDRD.2=1; подключаем подтягивающий резистор, а строкой PORTD.2=1; подаем на ногу 2 напряжение или как...
|
Устройство ножки и порта AVR - http://avr123.nm.ru/02.htm
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
03.02.2009, 17:13
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от kison
|
Вообще баловаться с компилятором, который не соответствует стандарту языка С дело неблагодарное.
А что значит "не прокатывает"? Компилятор ругается или тишина, но в железе не работает?
|
Что значит "баловаться с компилятором, который не соответствует стандарту языка С дело неблагодарное."
Вы хотите сказать что "КодеАВР" не соответствует стандарту языка С. Не прокатывает в моем случае не работает в железе, а компилятор компилирует без ошибок.
|
|
|
|
03.02.2009, 18:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Сообщение от FedorChek
|
Что значит "баловаться с компилятором, который не соответствует стандарту языка С дело неблагодарное."
Вы хотите сказать что "КодеАВР" не соответствует стандарту языка С.
|
Угу, именно это.
И еще - у CV крайне примитивный оптимизатор. Из за этого программы становятся большими и тормознутыми. От результата компиляции пробивает на смех. Отлаживать по результирующему ассемблерному листингу это себя не уважать.
В IDE нет даже простенького отладчика. И за это Г нужно еще и платить ![Улыбка](images/smilies/icon_smile.gif) Библиотеки просто жесть. В хидерах код, переменные объявляются. Открытостью библиотек мало того что не пахнет, так и за деньги их не дадут. Хотя кому они нужны, при таком качетве. Разве что как пособие - никогда так не делайте
|
|
|
|
03.02.2009, 18:24
|
|
Частый гость
Регистрация: 17.12.2006
Сообщений: 26
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Все правильно, ставится WinAVR, и забывается про него. Потом ставится AVR Studio, и в студии после этого можно писать и программы на ассемблере, и на Си, и компилировать, и отлаживать, и просматривать получившийся код, и программировать родным или сделанным под родной программатором, и не надо при этом париться с разными прогами для написания программы, её отладки и конечного программирования!!!
Фирменая студия все делает сама, просто использует библиотеки и компилятор WinAVR. При этом для пользователя это абсолюто незаметно. И ни одна из этих двух программ не требует какого либо взлома-кряка!!! И на родных сайтах очень оперативно появляются свежие версии для поддержки новых кристаллов!!!
И код у компилятора WinAVR, которых пользует для себя АВР Студия, получается самый компактный из того что могут предложить БЕСПЛАТНЫЕ компиляторы.
|
|
|
|
03.02.2009, 18:36
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Ну наконецто пришли к какомуто мнению т.е. конкретный совет выкинуть "КодеАВР" и поставить "дельные" проги. И действительно мое незнание приводит к жутким извращениям откомпилировать код в "КодеАВР", получить hex, открыть "АВРСтудию" в ней открыть хекс посмотреть как работает и так в бесконечном цикле
|
|
|
|
03.02.2009, 19:28
|
|
Частый гость
Регистрация: 17.12.2006
Сообщений: 26
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Ну вообще-то в инете много ссылок про то, что WinAVR сам интегрируется в AVR Studio, и позволяет без лишней головной боли писать проги, И при этом имеет очень непрохие параметры по размеру результатирующего кода. Да и новые версии все более лучшие выходят каждее 3-5 месяцев.
Так что дерзайте.
У меня, например, и программатор под AVR Studio, делал по схеме в журнале Радио, Аналог STK-500.
Вся эта связка отлично работает!!! И никаких крэков. Все что требует крэка, и эти крэки есть в инете, не такое уж и свежее. А все свежее - небесплатно.
Так что WinAVR+AVR Studio - выбор чемпионов!!!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:44.
|
|