Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Atmega AVR микроконтроллер Помогите расшифровать послание.... http://www.cyberforum.ru/avr/thread2086769.html
Мужики, помогите расшифровать послание(в программировании совсем недавно): "Настрой компилятор. Убери перевод чисел в 16тиричную систему и установи утрамбовку кода по минимальной длине модели."...
Atmega AVR микроконтроллер Код после дизассемблирования..
Попалась в руки игрушка одна, сделана на AVR, управляет 4-мя моторчиками. Вытащил из МК прошивку (удивительно, но биты защиты не стояли), дизассемблировал, сижу разбираюсь.. Какие-то куски понятны,...
Interrupt request, когда прерывание запрещено. Atmega AVR микроконтроллер
Пусть какое-то прерывание запрещено (глобально или локально). Но вдруг возникло определяющее это прерывание событие (например, изменение состояние ноги для прерываний типа PCINT). Будет ли установлен...
Atmega AVR микроконтроллер AVR Toolchain проблемы при компиляции - ошибка в либе? Тулчейн avr-toolchain-installer-3.3.0.710. При компиляции проекта с чужими библиотеками (v-usb cdc и др.) появляется ошибка - линкер не находит некую функцию __strlen_P, ссылка на которую есть в... http://www.cyberforum.ru/avr/thread2086766.html
Atmega AVR микроконтроллер FTBB не могу прошить Tiny2313, Tiny13 http://www.cyberforum.ru/avr/thread2086765.html
Помогите мк только начал изучать. Пытаюсь прошить ftbb программатором с пинборда tiny2313, tiny13, дудка не видит контроллеры, пробовал две 2313 и две 13. Miko16 и mega8 шьются в синапрог без...
Atmega AVR микроконтроллер SPI и Proteus
Подскажите где я не прав... Пытаюсь организовать обмен по SPI интерфейсу. Написал минимум кода и загрузил в протеус: .include "m88def.yms" risit: ldi R16, 0b11110111 // Настраиваем порт B...
помогите осилить выражение Atmega AVR микроконтроллер
static uint16_t persent_to_pwm_9bit(uint8_t persent) { return (0x1FF * persent) / 100; } persent = 0..100 результат записываю в OCR1. Считает не правильно. Понимаю, что заморочка с...
Atmega AVR микроконтроллер Attiny10 проблема с прошивкой Всем привет! Если кто имеет опыт, то помогите пожалуйста... Прикупил себе пару неделек назад вот такой клон AVRISP mkII http://kosmodrom.com.ua/el.php?name=AVR-MKPROG-USB для программирования... http://www.cyberforum.ru/avr/thread2086762.html
Atmega AVR микроконтроллер AVR + FPU http://www.cyberforum.ru/avr/thread2086761.html
Подскажите, есть ли аналоги Ардуину на чипе UC3 в полноценным FPU? Анонс подобных устройств был год назад, а Ардуино только месяц назад выпустило Due, но в нем нет FPU (Sortix-M3). ARM32 - не...
Atmega AVR микроконтроллер Avr studio + bootloader Добрый! При компиляции в авр студио выдает: Prokram: 5698 bytes (69.6% Full) (.text + .data + .boottooder) однако бутлоадер она не учитывает(или учитывает размером 0 байт). хотелось бы... http://www.cyberforum.ru/avr/thread2086760.html
wypuk
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 4
0

Первый проект!

23.11.2012, 14:12. Просмотров 10558. Ответов 30
Метки (Все метки)

Вобщем собрал схемку, написал программу на процессор. Пытаюсь отлаживать в АВР студии, но что-то не так получается. Помогите отыскать ошибки. Так-то проект компилируется без ошибок, но при отладке программа работает не так как планировалось.
Заметил, что функции «BRGE» «BRMI» работают как-то не так. Допустим результат АЦП сначала > 200 следовательно програмка переходит на метку m1, при изменении результата в регистре ADCH до 150 должна переходить на метку m2, но почему-то переход повторяется на метку m1. Может что-то с регистром SREG нужно делать, потому что сравниваю 2 раза подряд практически и может какие флаги от предыдущего сравнения в нем остаются и поэтому осуществляется неверный переход. Не совсем представляю картину, как выставляются в этом регистре флаги: при новой операци ониполностью обновляются или как? В общем жду подсказок. Алгоритм и листинг программмы привожу.


А здесь сама программка
.include "tn45def.yms"

.def temp = r18
.def flag = r19
.def counter1 = r20
.def counter2 = r21
.CSEG

;***********************
; Объявление прерываний
;***********************
rjmp RESIT ; Riset Homdler
rjmp EXT_INT0 ; IRQ0 Homdler
reti ; rjmp PCINT0
reti ; rjmp TYM1_COMPA
rjmp TYM1_OVF ; rjmp TYM1_OVF
reti ; rjmp TIM0_OVF
reti ; rjmp EE_RDY
reti ; rjmp ANA_COMP
rjmp ADC_ACP ; ADC Conversion Homdler
reti ; rjmp TYM1_COMPB
reti ; rjmp TIM0_COMPA
reti ; rjmp TIM0_COMPB
reti ; rjmp WDT
reti ; rjmp USI_START
reti ; rjmp USI_OVF

;***********************
; Обработчики прерываний
;***********************

EXT_INT0: ; Прерывание по сигналу ТЕСТ
sbi PORTB, PB4
in temp, TCCR1
sbr temp, CS12
out TCCR1, temp ; Запуск таймера Т1 с делителем 8
reti

ADC_ACP:
in temp, ADCH
cpi temp, 0b11001000
BRGE m1
cpi temp, 0b01100100
BRGE m2
rjmp m3
m1:
sbr flag, 0b00000100
rjmp m3
m2:
sbr flag, 0b00000010
rjmp m3
m3:
sbr flag, 0b00000001
reti

TYM1_OVF:
cbi PORTB, PB4
in temp, TCCR1
cbr temp, CS12
out TCCR1, temp ; Останов таймера Т1 с делителем 8
clr temp
out TCCR0A, temp
out TCCR0B, temp ; Остановить ШИМ Т0
reti

;***********************
; Начало программы инициализации
;***********************

RESIT:
ldi r16, low(ROMEND) ; Инициализация стека
ldi r17, high(ROMEND)
out SPL, r16
out SPH, r17

ldi temp, 0b00010010
out DDRB, temp ; PB1 и PB4 как выходы,
ldi temp, 0b00000000
out PORTB, temp ; все порты в 0. Те котрорые на вход без подтягивающих резисторов

ldi temp, 0b00000010 ; настройка прерывания по заднему фронту: биты ISC01 в 1 и ISC00 в 0
out MCUCR, temp
in temp, GIMSK ; разрешение прерывания от INT0 мы в регистре gimsk меняем только один бит, а остальные остаются нетронутыми
sbr temp, 0b01000000
out GIMSK, temp

ldi temp, 0b11111010 ; Задаем сравниваемое значение 250 циклов
out OCR1C, temp
clr temp ; Инициализация таймера счетчика Т1
out TCNT1, temp ; очистка счетного регистра таймера/счетчика Т1
ldi temp, 1<<CTC1 ; Режим СТС по совпадению с содержимым регистра OCR1C
out TCCR1, temp ; Таймер также отключен от выводов МК (0<<COM1A1)|(0<<COM1A0)
clr temp
out GTCCR, temp

ldi temp, 0b00100011 ; (0<<REFS1)|(0<<REFS0)|(1<<ADLAR)|(0<<REFS2)|(0<<MUX3)|(0<<MUX2)|(1<<MUX1)|(1<<MUX0) Разрешение АЦП на PB3 со сдвигом результата в старший байт регистра данных
out ADMUX, temp
ldi temp, 0b10101110 ; (1<<ADIM)|(0<<ADSC)|(1<<ADATE)|(0<<ADIF)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(0<<ADPS0)
out ADCSRA, temp ; коэффициент деления частоты 32
clr temp ; (0<<BIN)|(0<<ACME)|(0<<IPR)|(0<<ADTS2)|(0<<ADTS1)|(0<<ADTS0)
out ADCSRB, temp ; Режим непрерывного преобразования
ldi temp, 1<<ADC3D ; Отключаем цифровой буфер ADC3
out DIDR0, temp

sei ; глобально разрешаю прерывания

in temp, ADCSRA
sbr temp, 1<<ADSC
out ADCSRA, temp ; Запускаем преобразование АЦП

;***********************
; главная программа
;***********************

main:
sbrs flag, 0
rjmp main
sbrs flag, 2
rjmp m4
yms counter1
clr counter2
cpi counter1, 40
BRMI m6
rcall OTKL
rjmp m6
m4:
clr counter1
sbrs flag, 1
rjmp m5
yms counter2
cpi counter2, 9
BRMI m6
rcall OK
rjmp m6
m5:
clr counter2
m6:
cbr flag, 0b00000001
rjmp main

OTKL:
sbi PORTB, PB1
ret

OK:
clr temp ; Инициализация таймера счетчика Т0
out TCNT0, temp ; Очистка счетного регистра таймера/счетчика Т0
out TIMSK, temp ; Запрет прерываний таймера
ldi temp, 0b01111111 ; Задаем сравниваемое значение
out OCR0B, temp
ldi temp, 0b00100011
out TCCR0A, temp ; Работает в режиме ШИМ 4 кГц
ldi temp, 0b00000001
out TCCR0B, temp ; Запуск
ret

Вернуться к обсуждению:
Первый проект!
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2012, 14:12
Готовые ответы и решения:

Первый проект, помогите пожалуйста!
Пытаюсь сейчас смоделировать мигающий светодиод в Proteus-е, но почему-то в AVRstudyo все нормально...

Первый Arduino проект
Доброго времени суток) На днях решил заняться Ардуино, заказал платы на али по совету знакомого....

Первый проект в Keil
Здравствуйте все. Создал первый проект в Keil для ARM как написано в мануале (keil.com). При...

Первый большой проект на Qt
Здравствуйте. Я бы хотел попробовать свои силы на этом замечательном фреймворке. Планирую сделать...

Первый проект на Eclipse
Проблема следующая, есть в железе STM32F030F4P6, он прошивается и даже лампочку можно зажечь. Но...

30
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.