Перейти к содержанию

diclonius9

Members
  • Постов

    6
  • Зарегистрирован

  • Посещение

Весь контент diclonius9

  1. Фьюз проверял.... Режим совместимости выключен. Может чип неисправен?
  2. Попробовал прошить чип, чтобы проверить исправность выводов... Напряжение на выводах присутствует, все в порядке... А таймер никак не хочет выдавать сигналы
  3. Прошу помочь советом!!! Задача стоит изготовить контроллер с шестиканальным управлением нагрузкой, снимая параметры через АЦП. Посему был выбран чип ATmega64A. С программным кодом, АЦП и Т/С №1 проблем нет. Не могу запустить Т/С № 3 в режим ШИМ на три канала. Причем Proteus моделирует, а в реальной схеме не работает. Может есть какие то подводные камни? Перелопатил даташит - никаких идей.... Прикладываю блок начальной инициации. Заранее благодарю. .device ATmega64a .nolist .include "C:\m64adef.inc" .list .def temp =R16 .dseg .cseg .org 0 jmp RESET RESET: ;Инициализация ;инициация стека ldi temp, low(RAMEND) out SPL, temp ldi temp, high(RAMEND) out SPH, temp ;Порт B ldi temp, 0b11111111 ;Запись числа в регистр R16 out DDRB, temp ;назначение порта B выходом ldi temp, 0b00000000 ;Запись числа в регистр R16 out PortB, temp ;сброс в 0 состояния порта B ;Порт E ldi temp, 0b11111111 ;запись числа в регистр R16 out DDRE, temp ;назначение порта E выходом ldi temp, 0b00000000 ;запись числа в регистр R16 out PortE, temp ;Задание начального состояния порта E ;Порт F (вход АЦП) ldi temp, 0b00000000 ;запись числа в регистр R16 sts DDRF, temp ;назначение порта F входом ldi temp, 0b00000000 ;запись числа в регистр R16 sts PortF, temp ;Отключение подтягивающих резисторов порта F ; Инициализация АЦП sbi ADCSRA, ADEN ;АЦП разрешен cbi ADCSRA, ADATE ;Режим одиночного преобразования АЦП cbi ADMUX, MUX0 ;Включить cbi ADMUX, MUX1 ;в АЦП cbi ADMUX, MUX2 ;только cbi ADMUX, MUX3 ;вход cbi ADMUX, MUX4 ;№0 sbi ADMUX, ADLAR ;выравнивание результата АЦП влево sbi ADMUX, REFS0 ;источник опорного напряжения - напряжение питания cbi ADCSRA, ADPS0 ;коэфициент деления sbi ADCSRA, ADPS1 ;частоты преобразования sbi ADCSRA, ADPS2 ;64 sts ADCSRB, temp ldi temp, (1<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (1<<COM1C1) | (0<<COM1C0) | (0<<WGM11) | (1<<WGM10); out TCCR1A, temp ldi temp, (0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10); out TCCR1B, temp ldi temp, (1<<COM3A1) | (0<<COM3A0) | (1<<COM3B1) | (0<<COM3B0) | (1<<COM3C1) | (0<<COM3C0) | (0<<WGM31) | (1<<WGM30); sts TCCR3A, temp ldi temp, (0<<ICNC3) | (0<<ICES3) | (0<<WGM33) | (1<<WGM32) | (0<<CS32) | (0<<CS31) | (1<<CS30); sts TCCR3B, temp ;Задание начальной скважности импульсов ldi temp, 0 out OCR1AH, temp ldi temp, 128 out OCR1AL, temp ldi temp, 0 out OCR1BH, temp ldi temp, 128 out OCR1BL, temp ldi temp, 0 out OCR1CH, temp ldi temp, 128 out OCR1CL, temp ldi temp, 0 sts OCR3AH, temp ldi temp, 128 sts OCR3AL, temp ldi temp, 0 sts OCR3BH, temp ldi temp, 128 sts OCR3BL, temp ldi temp, 0 sts OCR3CH, temp ldi temp, 128 sts OCR3CL, temp jmp START
  4. Еще почему то не получается запустить Т/С №3 на этом чипе. В Proteus моделируется, а на реальном чипе не работает. Блок инициации идентичен Т/С №1. Может я чего то не знаю и есть какие то подводные камни? Перечитал внимательно даташит - не могу понять в чём дерево.....
  5. Попробовал переписать эту часть по людски..... Все равно запустить не могу ldi temp, (1<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (1<<COM1C1) | (0<<COM1C0) | (0<<WGM11) | (1<<WGM10); sts TCCR1A, temp ldi temp, (0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10); sts TCCR1B, temp ldi temp, (0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (1<<OCIE1A) | (1<<OCIE1B) | (1<<TOIE1) | (0<<OCIE0) | (0<<TOIE0); sts TIMSK, temp ldi temp, 128 sts OCR1AL, temp sts OCR1BL, temp sts OCR1CL, temp ldi temp, 0 sts OCR1AH, temp sts OCR1BH, temp sts OCR1CH, temp
  6. Приветствую радиолюбителей! Подскажите пожалуйста неграмотному. Пытаюсь освоить режим ШИМ на 16-битном Т/С МК ATmega64A. Не могу правильно настроить. Сначала пробовал напрямую на МК прошить, не получилось. Загнал исходник в Proteus. Тоже не получается. Подскажите что не так делаю. Исходник блока инициации прикладываю .device ATmega64A .nolist .include "C:\m64adef.inc" .list .def temp =R16 .dseg .cseg .org 0 jmp RESET RESET: ;Инициация ldi temp, low(RAMEND) out SPL, temp ldi temp, high(RAMEND) out SPH, temp ldi temp, 0b11111111 out DDRA, temp ;назначение порта A выходом out DDRB, temp ;назначение порта B выходом out DDRC, temp ;назначение порта C выходом out DDRD, temp ;назначение порта D выходом out DDRE, temp ;назначение порта E выходом sts DDRF, temp ;назначение порта F выходом sts DDRG, temp ;назначение порта G выходом ldi temp, 0b00000000 out PortA, temp ;сброс в 0 состояния порта A out PortB, temp ;сброс в 0 состояния порта B out PortC, temp ;сброс в 0 состояния порта C out PortD, temp ;сброс в 0 состояния порта D out PortE, temp ;сброс в 0 состояния порта E sts PortF, temp ;сброс в 0 состояния порта F sts PortG, temp ;сброс в 0 состояния порта G ldi temp, 0b10101001 sts TCCR1A, temp ldi temp, 0b00001001 sts TCCR1B, temp ldi temp, 0b11100000 sts TCCR1C, temp ldi temp, 0 sts OCR1AH, temp sts OCR1BH, temp sts OCR1CH, temp ldi temp, 128 sts OCR1AL, temp sts OCR1BL, temp sts OCR1CL, temp jmp start
×
×
  • Создать...