.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;
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;
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Сделал все как сказали , изменил состояние выхода компаратора с «1» на «0» в протеусе сделал точ точ как на видео, у меня не входит в прерывания и все. Че за хрень не знаю чуть поже выложу видео. Большое спасибо за видео. Вот видео с протеуса: https://drive.google.com/open?id=0B997q ... 1A3d3dRd1U
Последний раз редактировалось strengerst Ср ноя 01, 2017 13:55:16, всего редактировалось 1 раз.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Сделал все как сказали , изменил состояние выхода компаратора с «1» на «0» в протеусе сделал точ точ как на видео, у меня не входит в прерывания и все. Че за хрень не знаю чуть поже выложу видео. Большое спасибо за видео.
Народ, подскажите пожалуйста, чё я не так делаю (я только учусь)! Использую 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 ? Как правильно поступать в таком случае? Как грамотно компилировать код из разных исходных файлов?
В 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 будет определена.
Заголовок сообщения: Re: AVR studio в вопросах и ответах
Добавлено: Ср ноя 15, 2017 09:23:56
Мучитель микросхем
Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Ср янв 26, 2011 13:43:30 Сообщений: 414 Откуда: С того берега моря
Рейтинг сообщения:0
Всем привет. Ребята что-то туплю с ШИМ. Сдела простую програмку, которая изменяет регистр OCR2 в Atmega16 и выводит на 1602. Все работает, только как-то не получается отмасштабировать значение 0 -255 в 0 - 100%.
Мне нужно OCR2 / OCR2 * 100 что бы перевести в проценты? Или я что-то не правильно понимаю?
_________________ - Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует!
Да да, я это и имел ввиду. Но такой момент, на экране через задержку сразу 100 или 0. Т.е нет ступенчатого изменения с дискретностью 1. Или создать отдельную переменную, и туда записать что-то вроде
_________________ - Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует!
Заголовок сообщения: Re: AVR studio в вопросах и ответах
Добавлено: Ср ноя 22, 2017 12:15:16
Прорезались зубы
Зарегистрирован: Ср янв 06, 2010 22:02:25 Сообщений: 210 Откуда: Уфа сити
Рейтинг сообщения:0
добрый день. вопрос может немного не в тему... короче решил я поковыряться с ардуиной. как известно, родная ее среда очень убога в плане разработки, поэтому по старой памяти перешел на atmel studio (лет 5 назад было дело занимался железками на мегах8). так вот гружу свой elf в протеус, а он из всего кода дает ставить брекпоинты только в несокльких местах и то на выходе из функции. что я делаю не так?
_________________ Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
Если вы перешли на Atmel Studio, то, боюсь, ничего у вас с отладкой в протеусе по шагам или брейкпойнтам не выйдет... AVR-GCC свежее 3.x.x выдает отладочную инфу не так, как понимает протеус...
Можете попробовать отключить оптимизацию, но и это, скорее всего не поможет, тем более что и памяти может в этом случае не хватить...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Если вы перешли на Atmel Studio, то, боюсь, ничего у вас с отладкой в протеусе по шагам или брейкпойнтам не выйдет... AVR-GCC свежее 3.x.x выдает отладочную инфу не так, как понимает протеус...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения