AVR studio в вопросах и ответах
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: AVR studio в вопросах и ответах
Ничего там не происходит, компилятор выкинул все это, как ничего не делающее. Отключите оптимизацию и попробуйте снова.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: AVR studio в вопросах и ответах
Отключил оптимизацию полет нормальный :/
- strengerst
- Вымогатель припоя
- Сообщения: 516
- Зарегистрирован: Пт янв 18, 2013 15:11:02
Re: AVR studio в вопросах и ответах
И снова компаратор, не могу сделать прерывания от компаратора что я уже не перепробовал, может кто еще поможет
Вот код:
Вот код:
Спойлер
Код: Выделить всё
.include "tn13def.inc" ; Header files
//.equ MCUclock=4000000 ; 4MHz
.list; // Отоброжения листинга исполнения команды.
.cseg; работаем с програмной памятью а не озу или eeprom
.org 0; устанавливаем начальную позицию строки
rjmp START; Reset Handler
rjmp START; IRQ0 Handler
rjmp START;; PCINT0Z Handler
rjmp START; Timer0 Overflow Handler
rjmp START; EEPROM Ready Handler
rjmp Comparator; Analog Comparator Handler
rjmp START; TIM0_COMPA CompareA Handler
rjmp START; Timer0 CompareB Handler
rjmp START; Watchdog Interrupt Handler
rjmp START; ADC Conversion Handler
//Оброботка прерывания от компаратора
Comparator:
cbi DDRB,4;
cbi PORTB,4; - Подкючаем подтягивающий резистор для включения лампы
reti; - Выход с под программы прерывания
//оброботка прерывания порта INT0, по высокому сигналу.
//Определяем начальные параметры микроконтролера.
START:
CLI; команда запрещает глобальные прерывания.
//инициализация стэка.(установка максимально размера ОЗУ);
ldi R17, RAMEND;
out SPL, R17;
//Отключаем аналогово-цифровой преобразователь
CBI ADCSRA, ADEN;
//Подключаем компаратор для сравнения сигналов
//Разрешаем прерывания
sbi ACSR, ACIE;
//Подключаем внутрений ион 1,23 Вольт. на AIN0 вывод.
sbi ACSR, ACBG;
LDI R22,1<<AIN1D|1<<AIN0D;//Если какой-либо из входов ADC3-0 используется как аналоговый,
OUT DIDR0,R22;//то в соответствующий бит ADC3D-ADC0D нужно устанавливать логическую единицу.
//Устанавливаем работу портов на вход и выход.
//Устанавливаем выходы DDB1 и DDB0 работу на вход для компаратора
//Если порт DDB установлен в 1 то данный порт является выходам,
//а если в 0 то входам.
ldi R16,1<<DDB4;
out DDRB,R16;
ldi R16, 1<<PB4;
out PORTB, R16;
//Разрешаем глобальные прерывания
sei;
//Переходим к основному циклу проверки
rjmp START1;
START1:
nop;
rjmp START1;
.exit
- Вложения
-
- картинка.png
- (25.02 КБ) 316 скачиваний
Re: AVR studio в вопросах и ответах
Вы хоть читаете что вам пишут?strengerst писал(а):И снова компаратор
Принцип работы компаратора
Очередное видео
И да еще кое что
Спойлер
Код: Выделить всё
sbi ACSR, ACIS1; // Изменение состояния выхода компаратора с «1» на «0» ACIS1=1 ACIS0=0
- strengerst
- Вымогатель припоя
- Сообщения: 516
- Зарегистрирован: Пт янв 18, 2013 15:11:02
Re: AVR studio в вопросах и ответах
Сделал все как сказали , изменил состояние выхода компаратора с «1» на «0» в протеусе сделал точ точ как на видео, у меня не входит в прерывания и все. Че за хрень не знаю чуть поже выложу видео. Большое спасибо за видео.
Вот видео с протеуса:
https://drive.google.com/open?id=0B997q ... 1A3d3dRd1U
Вот видео с протеуса:
https://drive.google.com/open?id=0B997q ... 1A3d3dRd1U
Последний раз редактировалось strengerst Ср ноя 01, 2017 13:55:16, всего редактировалось 1 раз.
Re: AVR studio в вопросах и ответах
Открой мой проект. Работает?strengerst писал(а):Сделал все как сказали , изменил состояние выхода компаратора с «1» на «0» в протеусе сделал точ точ как на видео, у меня не входит в прерывания и все. Че за хрень не знаю чуть поже выложу видео. Большое спасибо за видео.
- strengerst
- Вымогатель припоя
- Сообщения: 516
- Зарегистрирован: Пт янв 18, 2013 15:11:02
Re: AVR studio в вопросах и ответах
ОТкрываю твой проект и он у меня не работает. Наверное протеус глючит, попробую переустановить. Большое спасибо за уделенное время и помощь.
Re: AVR studio в вопросах и ответах
strengerst выложи свой проект.
Re: AVR studio в вопросах и ответах
Народ, подскажите пожалуйста, чё я не так делаю (я только учусь)!
Использую AVR Studio 4.19.
Пытаюсь вынести функции в отдельный .c файл, при этом объявляя их в отдельном подключаемом заголовочном .h файле.
Получается конструкция примерно такого вида (упрощённо для примера):
main.c
test.h
tect.c
Вот почему теперь, после попытки компиляции, получаю варнинг:
Не смотря на то, что в main.c я определил F_CPU ? Надо полагать, что и нужную частоту (16МГц), заданную в main.c, компилятор тоже не задействовал, а использовал дефолтную 1МГц из test.h ?
Как правильно поступать в таком случае? Как грамотно компилировать код из разных исходных файлов?
Использую AVR Studio 4.19.
Пытаюсь вынести функции в отдельный .c файл, при этом объявляя их в отдельном подключаемом заголовочном .h файле.
Получается конструкция примерно такого вида (упрощённо для примера):
main.c
Код: Выделить всё
#define F_CPU 16000000UL
#include "test.h"
int main(void)
{
while (1) {
doNothing();
}
}test.h
Код: Выделить всё
#ifndef TEST_H
#define TEST_H
#ifndef F_CPU
#warning "F_CPU not defined for test.h"
#define F_CPU 1000000UL
#endif /* F_CPU */
extern void doNothing(void);
#endif /* TEST_H */tect.c
Код: Выделить всё
#include "test.h"
void doNothing(void) {}Вот почему теперь, после попытки компиляции, получаю варнинг:
Код: Выделить всё
../test.h:5:4: warning: #warning "F_CPU not defined for test.h"Не смотря на то, что в main.c я определил F_CPU ? Надо полагать, что и нужную частоту (16МГц), заданную в main.c, компилятор тоже не задействовал, а использовал дефолтную 1МГц из test.h ?
Как правильно поступать в таком случае? Как грамотно компилировать код из разных исходных файлов?
Re: AVR studio в вопросах и ответах
Не смотря на то, что в main.c я определил F_CPU
В main.c оппределил.
Но ругается не при компиляции main.c а при компиляции test.c!!!
В си раздельная компиляция: т.е. когда компилируется test.c, компилятор ничего не знает про другие исходники (про ваш main.c). Если надо константу (или еще что-то) иметь во многих *.c файлах, выносите ее в h-файл и этот h-файл включайте где надо: в Вашем случае, test.h включается и в main.с и test.c, если определите F_CPU в test.h, то в обоих исходниках (и в main.с и в test.c) F_CPU будет определена.
- Jman
- Мучитель микросхем
- Сообщения: 414
- Зарегистрирован: Ср янв 26, 2011 13:43:30
- Откуда: С того берега моря
- Контактная информация:
Re: AVR studio в вопросах и ответах
Всем привет. Ребята что-то туплю с ШИМ. Сдела простую програмку, которая изменяет регистр OCR2 в Atmega16 и выводит на 1602. Все работает, только как-то не получается отмасштабировать значение 0 -255 в 0 - 100%.
В бесконечном цикле делаю следующую операцию...
В этом коде у меня при нажатии кнопки инкрементируется значение в OCR2;
Настройка.
Мне нужно OCR2 / OCR2 * 100 что бы перевести в проценты? Или я что-то не правильно понимаю?
Код: Выделить всё
#ifndef F_CPU
#define F_CPU 8000000L
#endif
#include "delay.h"
#include <avr/io.h>
#include "main.h"
#include "lcd_lib.h"
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdio.h>
//Настройка кнопок
#define UP (!(PINB) &(1<<PINB0))
#define DOWN (!(PINB) &(1<<PINB1))
#define TEST_LED_ON (PORTA &=~(1<<PINA0))
#define TEST_LED_OFF (PORTA |=(1<<PINA0))
#define DUTY OCR2
#define PWM_STEP 0x01
#define UPPER_THRESHOLD 0xff
#define LOWER_THRESHOLD 0x00
mcu_init();
sei();
В бесконечном цикле делаю следующую операцию...
Код: Выделить всё
if(!(PINB & (1<<PINB0)) && (DUTY<UPPER_THRESHOLD))
{
TEST_LED_ON;
DUTY=DUTY + PWM_STEP;
timerDelayMs(5);
}
else
{
TEST_LED_OFF;
}
В этом коде у меня при нажатии кнопки инкрементируется значение в OCR2;
Настройка.
Код: Выделить всё
ASSR=0<<AS2;
TCCR2=(1<<WGM20) | (1<<COM21) | (0<<COM20) | (1<<WGM21) | (1<<CS22) | (0<<CS21) | (0<<CS20);
TCNT2=0x00;
OCR2=0x00;
TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);
Мне нужно OCR2 / OCR2 * 100 что бы перевести в проценты? Или я что-то не правильно понимаю?
- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует!
Re: AVR studio в вопросах и ответах
OCR2/255*100 или лучше 100*OCR2/255
Последний раз редактировалось akl Ср ноя 15, 2017 10:23:08, всего редактировалось 1 раз.
- Jman
- Мучитель микросхем
- Сообщения: 414
- Зарегистрирован: Ср янв 26, 2011 13:43:30
- Откуда: С того берега моря
- Контактная информация:
Re: AVR studio в вопросах и ответах
OCR2/255*100
Да да, я это и имел ввиду. Но такой момент, на экране через задержку сразу 100 или 0. Т.е нет ступенчатого изменения с дискретностью 1.
Или создать отдельную переменную, и туда записать что-то вроде
Код: Выделить всё
volatile unsigned char test;
test = ((DUTY - PWM_STEP) / 255) * 100;
lcd_gotoxy(0,0);
lcd_num_to_str(test, 4);
Добавлено after 26 minutes 59 seconds:
OCR2/255*100 или лучше 100*OCR2/255
Спасибо, заработало.
- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует!
- Ромыч
- Прорезались зубы
- Сообщения: 210
- Зарегистрирован: Ср янв 06, 2010 22:02:25
- Откуда: Уфа сити
- Контактная информация:
Re: AVR studio в вопросах и ответах
добрый день. вопрос может немного не в тему... короче решил я поковыряться с ардуиной. как известно, родная ее среда очень убога в плане разработки, поэтому по старой памяти перешел на atmel studio (лет 5 назад было дело занимался железками на мегах8). так вот гружу свой elf в протеус, а он из всего кода дает ставить брекпоинты только в несокльких местах и то на выходе из функции. что я делаю не так?


Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: AVR studio в вопросах и ответах
Если вы перешли на Atmel Studio, то, боюсь, ничего у вас с отладкой в протеусе по шагам или брейкпойнтам не выйдет... AVR-GCC свежее 3.x.x выдает отладочную инфу не так, как понимает протеус...
Можете попробовать отключить оптимизацию, но и это, скорее всего не поможет, тем более что и памяти может в этом случае не хватить...
Можете попробовать отключить оптимизацию, но и это, скорее всего не поможет, тем более что и памяти может в этом случае не хватить...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Ромыч
- Прорезались зубы
- Сообщения: 210
- Зарегистрирован: Ср янв 06, 2010 22:02:25
- Откуда: Уфа сити
- Контактная информация:
Re: AVR studio в вопросах и ответах
Да... оптимизация не помогла. а есть ли какие то другие среды для софтварной отладки ардуин? у меня протеус 7.х
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: AVR studio в вопросах и ответах
На сколько я в курсе, ничего "отдельного" для ардуин нет.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Ромыч
- Прорезались зубы
- Сообщения: 210
- Зарегистрирован: Ср янв 06, 2010 22:02:25
- Откуда: Уфа сити
- Контактная информация:
Re: AVR studio в вопросах и ответах
поставил протеус 8.6 - такая же шляпа
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: AVR studio в вопросах и ответах
Я же вам сразу сказал - вы не слушаете, что ли?
ARV писал(а):Если вы перешли на Atmel Studio, то, боюсь, ничего у вас с отладкой в протеусе по шагам или брейкпойнтам не выйдет... AVR-GCC свежее 3.x.x выдает отладочную инфу не так, как понимает протеус...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Ромыч
- Прорезались зубы
- Сообщения: 210
- Зарегистрирован: Ср янв 06, 2010 22:02:25
- Откуда: Уфа сити
- Контактная информация:
Re: AVR studio в вопросах и ответах
я с той надеждой, что 8.6 все таки 2017 года и может быть там поправили этот косяк, тем более там уже есть готовые наборы для отладочных плат.
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"