AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Гагарин
Встал на лапы
Сообщения: 111
Зарегистрирован: Вс сен 09, 2007 12:59:18

Re: AVR studio 4 в вопросах и ответах

Сообщение Гагарин »

Большое спасибо!
Но все равно, программа не идет на вектор прерывания.
.org 0
rjmp reset

.org $004
rjmp An_Comp

reti
reset:
; ldi temp,0b10000000 razreshim prerivaniya
; out sreg,temp

ldi temp,0b11111111
out ddrd,temp

ldi temp,0b00000000
out ddrb,temp

out portb,temp

ldi temp,0b00001000
out acsr,temp

sei
K1: nop
rjmp k1
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение GP1 »

Ну ё-маё, а ACIE включить?
и студия не эмулирует аналоговые сигналы, попробуй VMLab - просто и со вкусом.
ну почитай ДШ, проблемы с аглицким - у Светы в библе есть книжки Евстифеева, там все по-русски.
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Pooher
Мучитель микросхем
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Re: AVR studio 4 в вопросах и ответах

Сообщение Pooher »

Ну и про стэк! писали же.

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

ldi tmp, LOW(RAMEND)
out SPL, tmp
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Аватара пользователя
Гагарин
Встал на лапы
Сообщения: 111
Зарегистрирован: Вс сен 09, 2007 12:59:18

Re: AVR studio 4 в вопросах и ответах

Сообщение Гагарин »

GP1 писал(а):Ну ё-маё, а ACIE включить?
и студия не эмулирует аналоговые сигналы, попробуй VMLab - просто и со вкусом.
ну почитай ДШ, проблемы с аглицким - у Светы в библе есть книжки Евстифеева, там все по-русски.

Включено. Вот:
ldi temp,0b00001000
out acsr,temp

Все равно, 4 бит ACI, ставлю "птичку", а прерывание не наступает!
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение GP1 »

Не симулирует, :dont_know: видимо глюк
Завтра буду пытать в VMLab.
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение GP1 »

Вот рабочий код, симулируется в VMLab 3.15
В контрольной панели слайдер S1 двигаешь вверх и происходит прерывание по адресу $0D (ANA_COMP)
Отличия от твоего кода:
1. инициализация стека
2. порт Д - входы
Кури ДШ

ЗЫ проверил и в студии тоже нормально работает
Вложения
4433.rar
(5.25 КБ) 300 скачиваний
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
romazan
Потрогал лапой паяльник
Сообщения: 335
Зарегистрирован: Чт май 21, 2009 13:54:07
Откуда: Москва
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение romazan »

Доброй ночи товарищи коты, у меня такой вопрос: принаписании кода: ok |= PINC(PC1);
Выводит ошибку: ../i2c_start.h:24: error: called object '*51u' is not a function
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Re: AVR studio 4 в вопросах и ответах

Сообщение smac »

romazan писал(а):Доброй ночи товарищи коты, у меня такой вопрос: принаписании кода: ok |= PINC(PC1);
Выводит ошибку: ../i2c_start.h:24: error: called object '*51u' is not a function

Дык Ваш код выдзывает функцию PINC(PC1), которой естественно не существует, т.к. PINC -это определение порта. Судя по всему компилятор у вас WinAVR, а вот что Вы хотите сделать - не понятно, если нужно считать выводы, то делается так

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

ok=PINC;
Если вы хотите сделать логическое или бита 1 переменной ok и ноги PC1, а остальные биты оставить без изменения, то примерно так:

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

ok |= PINC&(1<<PC1); 
Аватара пользователя
romazan
Потрогал лапой паяльник
Сообщения: 335
Зарегистрирован: Чт май 21, 2009 13:54:07
Откуда: Москва
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение romazan »

привет всем котам.
У меня такой вопрос:
Значит пишу программу с прерываниями, при компиляции кода выдаёт ошибку

../main.c:15: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'


и ссылается на это

#pragma vector=TIMER1_COMPA_vect
__interrupt void T1_COMPARE()
{
....
}
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Re: AVR studio 4 в вопросах и ответах

Сообщение smac »

romazan писал(а):Значит пишу программу с прерываниями, при компиляции кода выдаёт ошибку...

Правильно ссылается, синтаксис то явно не WinAVR-овский, а студия, насколько мне известно, только с WinAVR работает. Прочитайте в документации на WinAVR как оформлять прерывания.
приблизительно так

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

#include <avr/interrupt.h>

ISR(ADC_vect)
{
    // user code here
}
Аватара пользователя
Naddir
Открыл глаза
Сообщения: 44
Зарегистрирован: Пн июл 10, 2006 00:26:01
Откуда: Николаев

Re: AVR studio 4 в вопросах и ответах

Сообщение Naddir »

Люди помогите!!!!!
Не могу запустить AVRProg. Выает вот такое окно. Пробывал на дух ситемах Виста и Виндоус 7. Закачал все последние обновления.
Вложения
Безымянный.jpg
Вот такое окно постоянно.
(19.79 КБ) 369 скачиваний
Аватара пользователя
AI_Disable
Сверлит текстолит когтями
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение AI_Disable »

Он не видит ваш программатор. Смотрите драйвер, железо.
Аватара пользователя
Naddir
Открыл глаза
Сообщения: 44
Зарегистрирован: Пн июл 10, 2006 00:26:01
Откуда: Николаев

Re: AVR studio 4 в вопросах и ответах

Сообщение Naddir »

AI_Disable писал(а):Он не видит ваш программатор. Смотрите драйвер, железо.


Спасибо, вечером проверю. У меня FVR910.
Аватара пользователя
AndyWorld
Прорезались зубы
Сообщения: 209
Зарегистрирован: Вт сен 30, 2008 09:23:14
Откуда: Краснодарский край

Re: AVR studio 4 в вопросах и ответах

Сообщение AndyWorld »

Решил я выделить в отдельный файл инициализацию ЖК и еще один файл с задержками и прочими математическими штучками.
Вот так.
.device ATmega16
.nolist
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m16def.inc"
.include "C:\AVRProject\Mega_Timer\Mega16_Timer\LCD.prg"
.include "C:\AVRProject\Mega_Timer\Mega16_Timer\win2.prg"
Компилируется нормально. Но когда запускаю симуляцию программа начинается с LCD.prg а не с инициализации. Тоже самое когда открываю проект, первой открывается эта подпрограмма а не основное тело. В итоге мне пришлось отказаться от этого и пришлось все включить в основной листинг. Читаемость и передвижение усложнились многократно. Как правильно сделать?
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение Meteor »

Есть 2 пути.
Первый описывать макросами функции в файле, но тогда теряете в проверке и отладке...
Делать вызов нужного файла в теле где планируется функция, что то типа такого

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

set temp;
ldi tmp, 0x23
.include "NameFiles.asm"; Вызов файла
....
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
AndyWorld
Прорезались зубы
Сообщения: 209
Зарегистрирован: Вт сен 30, 2008 09:23:14
Откуда: Краснодарский край

Re: AVR studio 4 в вопросах и ответах

Сообщение AndyWorld »

Я тоже уже об этом подумал. Вызывать InitLCD после include. Только толку маловато. Как правило InitLCD идет после отработки основной инициализации МК.
А макросы тоже можно вынести в prg? И так же влючать в тело Include?
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: AVR studio 4 в вопросах и ответах

Сообщение Meteor »

Вот скрин включения файлов в тело программы.
Вложения
include_f.JPG
(67.78 КБ) 343 скачивания
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

Re: AVR studio 4 в вопросах и ответах

Сообщение ВитГо »

А есть ли средство в AVR Studio чтобы заполнить таблицу прерываний для выбранного проца ?

например выбрал при создании проекта проц, симуляцию, появилось окно куда набивать программу..

а как сделать конструкции например вида
.org прерывание_1
reti
.org прерывание_2
reti
.. и т д

или все руками по даташиту всегда набирают ?
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: AVR studio 4 в вопросах и ответах

Сообщение Engineer_Keen »

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

Re: AVR studio 4 в вопросах и ответах

Сообщение ARV »

ВитГо писал(а):А есть ли средство в AVR Studio чтобы заполнить таблицу прерываний для выбранного проца ?

например выбрал при создании проекта проц, симуляцию, появилось окно куда набивать программу..

а как сделать конструкции например вида
.org прерывание_1
reti
.org прерывание_2
reti
.. и т д

или все руками по даташиту всегда набирают ?
вы - первый из задающих вопросы, кто вознамерился сделать таблицу векторов прерываний правильно! я очень удивлен! и всячески поддерживаю вас, если вы и во всем программировании стараетесь придерживаться правил хорошего тона для создания качественных программ!

информация о символьных именах адресов для таблицы векторов хранится в include-файле для выбранного вами микроконтроллера, например, для atmega16 это будет файл m16def.inc, в котором ближе к концу есть нужное (ищите строку "INTERRUPT VECTORS"):

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

.equ   INT0addr   = 0x0001   ; External Interrupt Request 0
.equ   INT1addr   = 0x0002   ; External Interrupt Request 1
.equ   OC2addr   = 0x0003   ; Timer/Counter2 Compare Match
и так далее

теперь в своей программе только для тех векторов, которые вы действительно решили использовать, вы пишите, как и хотели:

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

   .org INT1addr
   rjmp INT1_handler_proc
и все!

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

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

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