AVR studio в вопросах и ответах
Не поймет никак, поскольку в стандартном инклуднике эти дефайны определены и связаны с конкретными регистрами, что можно сделать самостоятельно и для ДРУГИХ регистров!
- Реклама
так вот компилится
.def r16l = r16
.def r16h = r17
.macro ldwi
ldi @0l,low(@1)
ldi @0h,high(@1)
.endmacro
ldwi r16,0x1234
но это все регистры определить надо
.def r16l = r16
.def r16h = r17
.macro ldwi
ldi @0l,low(@1)
ldi @0h,high(@1)
.endmacro
ldwi r16,0x1234
но это все регистры определить надо
Так то оно конечно, но для других регистровых пар уже работать не будет. Придется их всех (регистровых пар) определять. Тогда какой смысл в макросе?
Может проще, таки, два регистра в макрос передать?
Во-первых, явно будет указано с чем работает макрос.
Во-вторых, регистры можно в разнобой передавать (в особо извращенских случаях
).
Во-первых, явно будет указано с чем работает макрос.
Во-вторых, регистры можно в разнобой передавать (в особо извращенских случаях
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Дык теряется главное преимущество макроса - ленивость
-- один символ накалякал, а он его раздраконил на два ( и более )
- Реклама
Так вынеси определения всех регистров в отдельный инклуд, подключи его в начале программы и делов. Место не занимает, дополнительный функционал радует.
Приветствую уважаемые радиокоты. Практическое изучение программирования начал с программы Atmel Studio 6,0 . Если не ошибаюсь это и есть AVR studio. По аналогии с видеоуроком попытался скомпилировать файл (кнопкой Build) На что выскочила ошибка (прилагаю). Подскажите пожалуйста, что не так делаю...
========
С этим вопросом уже разобрался. Все дело было в названиях папок. Они должны быть на латиннице. Теперь другая проблема: в протеусе МК почему-то не работает по прошивке... не могу найти косяк, помогите пожалуйста. При этом указанный путь в протеусе на МК почему-то сам выставляется по умолчанию на другой... Прошивку прилагаю (файл hex).
========
С этим вопросом уже разобрался. Все дело было в названиях папок. Они должны быть на латиннице. Теперь другая проблема: в протеусе МК почему-то не работает по прошивке... не могу найти косяк, помогите пожалуйста. При этом указанный путь в протеусе на МК почему-то сам выставляется по умолчанию на другой... Прошивку прилагаю (файл hex).
- Вложения
-
- GccApplication1.hex
- (447 байт) 137 скачиваний
-
- сам код.c
- (601 байт) 256 скачиваний
-
- Output-Build.txt
- (981 байт) 114 скачиваний
- Сообщения: 232
- Зарегистрирован: Чт янв 01, 2015 13:44:12
Ваша прошивка работает в Proteus. Да и код написан верно. Когда задаете вопрос указывайте какой микроконтроллер используете.
Скинте свой проект в Proteus-е.
Скинте свой проект в Proteus-е.
Все гениальное - просто
- Сообщения: 148
- Зарегистрирован: Ср дек 29, 2010 21:19:03
В цикле while должно быть так:
по ошибке - в путях видны крякозябры, уберите русские буквы из пути и имени файлов.
Код: Выделить всё
//Подать сигнал
PORTB = 0xFF
c717411, этот момент по крякозябрам я уже уяснил, все исправил. Спасибо.
Но почему на данный момент (все нормально без ошибок компилируется) эта прошивка не заряжается в протеусе в атмегу8? Проект протеуса выложил пару сообщений назад по имени "1"
Но у меня так и есть там. Или что именно вы имеете в виду, не ставить точку с запятой в конце?В цикле while должно быть так:
Код:
//Подать сигнал
PORTB = 0xFF
- Сообщения: 148
- Зарегистрирован: Ср дек 29, 2010 21:19:03
нет, у Вас тамОлегыч1 писал(а): Но у меня так и есть там.
Код: Выделить всё
//Подать сигнал
DDRB = 0xFF;- Сообщения: 232
- Зарегистрирован: Чт янв 01, 2015 13:44:12
Это я что то внимательно не посмотрел Ваш код. С717411 правильно заметил, вот ваш код, который вы скидывали раньше:
А должно быть
Какой версией протеуса Вы пользуетесь? Какие видеоуроки смотрите?
Код: Выделить всё
int main(void)
{
preset();
while(1)
{
//Подать сигнал
DDRB = 0xFF;
//Выдержать время
_delay_ms(1000);
//Убрать сигнал
PORTB = 0x00;
//Выдержать время
_delay_ms(1500);
}
} Код: Выделить всё
int main(void)
{
preset();
while(1)
{
//Подать сигнал
PORTB = 0xFF;
//Выдержать время
_delay_ms(1000);
//Убрать сигнал
PORTB = 0x00;
//Выдержать время
_delay_ms(1500);
}
} Все гениальное - просто
исправил. Все тоже самое
Видеоурок:
https://www.youtube.com/watch?v=u-iI6EDUtA4
Здесь кстати об этом упоминулось. Но у меня почему-то не получается запустить в протеусе свой МК по данному коду. Вернее видно, что код действует... Но светодиоды не горят. Не могу с землей понять как быть... Поставил батарейку, но светодиоды все равно не загораются...
Версия протеуса - 8
На всякий случай еще раз выложу конечный исправленный код
и проект протеуса по имени "2"
https://www.youtube.com/watch?v=u-iI6EDUtA4
Здесь кстати об этом упоминулось. Но у меня почему-то не получается запустить в протеусе свой МК по данному коду. Вернее видно, что код действует... Но светодиоды не горят. Не могу с землей понять как быть... Поставил батарейку, но светодиоды все равно не загораются...
Версия протеуса - 8
На всякий случай еще раз выложу конечный исправленный код
и проект протеуса по имени "2"
- Вложения
-
- 2.rar
- (15.92 КБ) 138 скачиваний
-
- Исправленный код.c
- (561 байт) 254 скачивания
- Сообщения: 148
- Зарегистрирован: Ср дек 29, 2010 21:19:03
Все у Вас сделано теперь правильно и должно работать. Выкладывайте на будущее сразу в архиве проект протеуса, исходник и hex, ибо иногда лень или нечем компилировать.
При симуляции в протеусе резисторы в цепях диодов можно (даже нужно) не ставить, не надо загружать симулятор лишними деталями. Батарею тоже.
При симуляции в протеусе резисторы в цепях диодов можно (даже нужно) не ставить, не надо загружать симулятор лишними деталями. Батарею тоже.
- Сообщения: 232
- Зарегистрирован: Чт янв 01, 2015 13:44:12
Попробуйте 7 версию Proteus, мне кажется что у автора видеоуроков то же седьмая и сделайте все как у автора и должно заработать. Не могу сказать точно, но может в 8 есть какие то отличия мешающие запустить проект.
Все гениальное - просто
Есть специальные цифровые резисторы. Но и это в протеусе без необходимости, там есть специальные логические пробники, выполняющие роль светодиодов.
Да, протеус моделирует своеобразно - состояние светодиодов фиксируется на момент события перерисовки экрана, которая происходит раз в 10 секунд примерно и какое состояние попадётся на момент перерисовки такое у него и будет до следующей - никаких полутонов от ШИМ-а а наблюдаемое беспорядочное моргание, поскольку внутреннее время симуляции является переменной величиной и постоянно меняется когда не хватает ресурсов для реального времени.
Из этого вытекает ещё одна причина по которой у вас схема может "не работать" - 1 секунда работы контроллера может запросто оказаться одной минутой(или вообще 30-ю минутами) в реальном времени симулятора из-за нехватки вычислительных ресурсов на симуляцию схемы - поэтому имейте за правило не использовать ЛИШНИХ деталей, особенно нелинейных как полупроводники, где это возможно используйте специально упрощённые модели компонентов - цифровой(digital) резистор для подтяжек и т.д.
Не уверен, но там кажется даже цифровые транзисторы есть.
Смотрите в строке состояния симулятора, там после запуска отображается внутреннее время симулируемой схемы, и если там бегут не секунды а десятые доли секунды или вообще миллисекунды - ваша схема слишком сложна для данного железа, нужен процессор помощнее но как правило это слабо помогает.
Если симуляция вообще не запускается, смотрите сообщения симулятора - обычно это признак проблемы в моделях или тонких настройках симуляции - модель не получается построить из-за отсутствия земли в изолированном участке схемы или симуляция начинается сразу с необходимости слишком малого шага по времени для обеспечения нужной точности в какой-то из моделей компонента используемого в схеме.
Да, протеус моделирует своеобразно - состояние светодиодов фиксируется на момент события перерисовки экрана, которая происходит раз в 10 секунд примерно и какое состояние попадётся на момент перерисовки такое у него и будет до следующей - никаких полутонов от ШИМ-а а наблюдаемое беспорядочное моргание, поскольку внутреннее время симуляции является переменной величиной и постоянно меняется когда не хватает ресурсов для реального времени.
Из этого вытекает ещё одна причина по которой у вас схема может "не работать" - 1 секунда работы контроллера может запросто оказаться одной минутой(или вообще 30-ю минутами) в реальном времени симулятора из-за нехватки вычислительных ресурсов на симуляцию схемы - поэтому имейте за правило не использовать ЛИШНИХ деталей, особенно нелинейных как полупроводники, где это возможно используйте специально упрощённые модели компонентов - цифровой(digital) резистор для подтяжек и т.д.
Не уверен, но там кажется даже цифровые транзисторы есть.
Смотрите в строке состояния симулятора, там после запуска отображается внутреннее время симулируемой схемы, и если там бегут не секунды а десятые доли секунды или вообще миллисекунды - ваша схема слишком сложна для данного железа, нужен процессор помощнее но как правило это слабо помогает.
Если симуляция вообще не запускается, смотрите сообщения симулятора - обычно это признак проблемы в моделях или тонких настройках симуляции - модель не получается построить из-за отсутствия земли в изолированном участке схемы или симуляция начинается сразу с необходимости слишком малого шага по времени для обеспечения нужной точности в какой-то из моделей компонента используемого в схеме.
- Сообщения: 148
- Зарегистрирован: Ср дек 29, 2010 21:19:03
не пишите ерунду. Прочитал раза три Ваш пост, какая-то словесная диарея.Alexeyslav писал(а):Да, протеус моделирует своеобразно - состояние светодиодов фиксируется на момент события перерисовки экрана, которая происходит раз в 10 секунд примерно и какое состояние попадётся на момент перерисовки такое у него и будет до следующей - никаких полутонов от ШИМ-а а наблюдаемое беспорядочное моргание, поскольку внутреннее время симуляции является переменной величиной и постоянно меняется когда не хватает ресурсов для реального времени.
- Сообщения: 232
- Зарегистрирован: Чт янв 01, 2015 13:44:12
В Poteus есть особенности в моделировании, он не всегда правильно и точно моделирует и это нужно учитывать. Конечно программы вроде той о которой мы говорили он моделирует правильно.
Все гениальное - просто



