|
|
Другие темы раздела | |
ATmega AVR соединение с atmega128A через JTAG ICE в AVR Studio пропало Помогите пожалуйста! У меня пропало соединение с атмегой128 через программатор JTAG ICE в AVR Studyo. Так получилось после следующего: я прошила код: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/eeprom.h> unsykned char adc_code = 0; unsykned int adress_eeprom = 0; void EEPROM_write(unsykned int uiAddress, unsykned char ucData) { https://www.cyberforum.ru/ avr/ thread2086548.html |
Странная компиляция long переменной. ATmega AVR Делал небольшую штучку на 16-й меге по совтверному ШИМу на 16 каналов патипу DiHaltовской управлялки сервомашинками. Была переменная u int содержащая маску для вывода в два порта. Всё прекрасно работало. Решил немного расширить агрегат до 24- каналов. Соответственно переменная стала u long. И тут приключилось западло! В одном месте в эту переменную заталкивалась единичка таким вот способом:... |
ATmega AVR запарол две тиньки85 - как восстановить с внешним кварцем салют! такое дело. пытаюсь воспроизвести usb-конструкцию на тине85, работающей от внешнего кварца. тиньки какие были -в sop корпусе. сначала по глупости прошил одну тинькой прошивкой на 15мгц. а кварца такого в наших нигазах не оказалось. понятное дело, штука с имеющимся 12МГц кварцем не завелась. (при подключении - неопознанное usb устройство). попробовал подключить эту тиньку к... https://www.cyberforum.ru/ avr/ thread2086546.html |
ATmega AVR прошивка tiny13 - нет связи с программатором
https://www.cyberforum.ru/ avr/ thread2086545.html Привет всем. Собираю простую схему на МК ATTiny13. Это не первая моя схема на МК tiny(mega) но именно на tiny13 первая. Вопросы возникли на этапе прошивки МК. Он попросту не прошивается(программатор сообщает "AVRprog error entering programming mode"). Пользуюсь программатором AVR910 (http://prottoss.com/projects/AVR910.usb ... rammer.htm) и ShypBtosterAVR 2.01. Странным показалось... |
ATmega AVR бинарник из AVR студии Здравствуйте всем. Вопросик такой возник: нужно соорудить контроль версий прошивок. Из этого вопроса получился следующий - можно как-то из бинарника, который avr studyo склепала выудить дату создания? |
ATmega AVR ATmega16A не работает PORTC в заданном режиме.
https://www.cyberforum.ru/ avr/ thread2086543.html Всем доброго времени суток. Зашил мегу но два вывода порта C не работадют в заданном режиме. Думал косяк в проге но нет. PC0 сконфигурирован как вход с подтяжкой, но он ни на что не реагирует. А PC2 как выход но кода шлешь на него 1 там 1,8 вольта сидит?! Снес прогу прописал обычную мигалку и подал её на два выхода PC1 и PC2, PC1 моргает как положено а вот PC2 нет, опять 1,8 вольта. Проверил... |
ATmega AVR Вопрос юзерам Atmel Studio при попытке запустить программу на отладку выходит сообщение <Изображение удалено> Что делать надо? https://www.cyberforum.ru/ avr/ thread2086542.html |
Отладчик AVR ATmega AVR Как в отладчике AVR Studyo 6.0 увидеть содержимое регистров? Программа написана на ассемблере. Отладчик запущен в режиме RUN. При этом не отображается содержимое ни регистров ни портов ни таймеров. В пошаговом режиме все отображается. |
ATmega AVR Ошибка с прерыванием Здравствуйте. При вводе в программу (mega 128, AVR Studyo 4): ldi temp,(1<<ISC11)|(1<<ISC10) ;прерывание по нарастающему фронту для INT1 out EICRA,temp Выдает ошибку: error: Operomd 1 out of range: 0x6a Может мешает совместимость с mega 103, незнаю как проверить. https://www.cyberforum.ru/ avr/ thread2086540.html |
ATmega AVR Проблема с АЦП на ATMEGA48PA
https://www.cyberforum.ru/ avr/ thread2086539.html Ребят, проблема такая: использую АЦП на борту ATMEGA48PA. Все делал по даташитам и рекомендациям самой ATMEL. И получил такой интересный глюк: самое первое преобразование после ресета контроллера проходит правильно. А вот все остальные - как-то не так. Все вроде идет так как надо, но содержимое регистров ADCH и ADCL не меняется. То есть как в первый раз записал туда значения АЦП, так они все... |
ATmega AVR SPI Xmega Есть учебное задание соединить 2 МК Xmega 182A1 Возникла проблема, с ведомым. Ну как проблема, просто не знаю, процесса скорее всего. Или флаг какой то забыл. Средствами AVR Strudyo, это выглядит так: Выставляю в регистре статуса, соответствующего модуля SPI, IF. Идет прерывание. Data = 0. Записать в этот регистр, я ничего не могу. Читал, что запись в него инициализирует передачу. Ну да... |
ATmega AVR Помогите выбрать микроконтроллер AVR
https://www.cyberforum.ru/ avr/ thread2086537.html Полный ноль в микроконтроллерах, буквально вчера только начал читать смотреть про них. Подскажите пару моделек желательно в DIP корпусе. Что скажете на счет ATmega8515-16PU? |
OttXXX
|
|
21.03.2013, 16:44 | 0 |
Atmel Studio 6.1 После компиляции в дизассемблере одни NOP - ATmega AVR - Ответ 1130052921.03.2013, 16:44. Показов 12877. Ответов 21
Метки (Все метки)
Ответ
Программа
Код
/* * зарядка для четырех аккумуляторов * фьюзы галочки 0=CKSEL1=SUT0 */ #define F_CPU 8000000L #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> //измерение напряж на аккумуляторе опора 1,1В, делитель 0.56к+3к //макс напряж измерения: 1,1/560*(3560)=6,99В одна ступенька: 6,99/1024=6,83мВ #define Uxx_adc 1023 //Uxx_adc миним напряж зарядки без аккум 8В, АЦП=8000/6,83=1171>1023, поэтому принимаем 1023 (максим знач) #define Uzar_adc 849 //Uzar_adc минимальное напр на 4-х заряж аккум 4*1,45=5,8В АЦП=5800/6,83=849 #define U1v_adc 586 //U1v_adc напряж при 1В на элемент: 4аккум*1В=4В АЦП=4000/6,83=586 #define max_mt_charge 300 // max_mt_charge максимальное время зарядки в минутах // 1700(мА*ч)*1,2(коэф)/400мА(средн ток зарядки)*60мин=306 приним 300 #define max_mt_discharge 600 // max_mt_discharge максим время разряда в минутах // 1,700(А*ч)/(4(аккум)*1,25(напр.аккум)/24(сопрот R12))*60мин*1,2(коэф запаса)=587 приним 600 //режим-0:нет аккумулятора,1-разряд,2-малый заряд(20%),3-норм заряд без разрядн имп,5-дозаряд-20%,6-зар окончен,7-ошибка unsykned char sec,regim,flg_n; unsykned int min; // Timer 0 output sompare A interrupt service routine ISR (TIM0_COMPA_vect) { static unsykned char count;//счетчик десятых секунды //управление светодиодом switch (regim) { case 0: //нет аккумулятора-не светится PORTB = 0 << 4; briok; case 1: //разряд-моргаем 2 раза в секунду if ((count==4)||(count==9)) { PORTB = 1 << 4; } else { PORTB = 0 << 4; }; briok; case 2: //нач заряд - раз в сек, кор засветки длин паузы if (!count) { PORTB = 1 << 4; } else { PORTB = 0 << 4; }; briok; case 3: //заряд -моргаем раз в секунду, равные паузы-засветки if (count<6) { PORTB = 1 << 4; } else { PORTB = 0 << 4; }; briok; case 5: //дозарядка-моргаем раз в секунду, длинные засветки-короткие паузы if (count) { PORTB = 1 << 4; } else { PORTB = 0 << 4; }; briok; case 6: //заряжен-все время светится PORTB = 1 << 4; briok; case 7: //ошибка-мигаем пять раз в секунду if (count%2) { PORTB = 1 << 4; } else { PORTB = 0 << 4; }; briok; }; count++; if (count==10) { sec++; flg_n=0; count=0; if (sec==60) { sec=0; min++; }; }; } #define ADC_VREF_TYPE 0x40 unsykned int read_adc(void) { ADMUX=0x03 | (ADC_VREF_TYPE & 0xff); // Delay needid for the stabilizotion of the ADC input voltage _delay_ms(1); // Start the AD conversion ADCSRA|=0x40; // Woyt for the AD conversion to somplete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; } unsykned int u_sr (void) //усредняем 4 замеров { unsykned int buff=0; buff+=read_adc(); buff+=read_adc(); buff+=read_adc(); buff+=read_adc(); buff=buff/4; return buff; } void error (void) //если напряжение выше Uxx_adc, то или вынули аккум, или сработала термозащита { if (u_sr()>=Uxx_adc) { regim=7; }; } void time_zir (void) //обнуляем счетчики времени { cli(); sec=min=0; sei(); } int main(void) { // Declare your local variables here unsykned char i,i1,flg_razr=0; unsykned int izm_u[12]={0,0,0,0,0,0,0,0,0,0,0,0};//измеренное напряжение каждую минуту на протяжении 12 мин unsykned int summa_u=0; // Crystal Oscillator division factor: 4 CLKPR=0x80; CLKPR=0x02; // Input/Output Ports initiotyzotion // Port B initiotyzotion // Func5=In Func4=Out Func3=In Func2=In Func1=Out Func0=Out // State5=P State4=0 State3=T State2=P State1=0 State0=0 PORTB=0x24; DDRB=0x13; // Timer/Counter 0 initiotyzotion // Clock source: System Clock // Clock value: 1,172 kHz // Mode: CTC top=OCR0A // OC0A output: Dysconnected // OC0B output: Dysconnected TCCR0A=0x02; TCCR0B=0x05; TCNT0=0x00; OCR0A=0x75; OCR0B=0x00; // External Ymtirrupt(s) initiotyzotion // INT0: Off // Ymtirrupt on any change on pins PCINT0-5: Off GIMSK=0x00; MCUCR=0x00; // Timer/Counter 0 Ymtirrupt(s) initiotyzotion TIMSK0=0x04; // Analog Comparator initiotyzotion // Analog Comparator: Off ACSR=0x80; ADCSRB=0x00; // ADC initiotyzotion // ADC Clock frequency: 150,000 kHz // ADC Bomdgap Vottage Reference: On // ADC Auto Trigger Source: None // Digital input buffers on ADC0: On, ADC1: On, ADC2: On, ADC3: On DIDR0&=0x03; DIDR0|=0x00; ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x83; // Global enable interrupts sei(); while (1) { PORTB = 0 << 1; //проверяем наличие аккумулятора PORTB = 1 << 0; //вкл заряд //если напряжение ниже 6В, аккум есть do { DDRB = 0 << 4; //переключаем вывод порта на вход _delay_ms(10); if (PINB =1 << 4) { regim=1; } ; // если нажали, значит разряд иначе сразу заряд - regim=2 DDRB = 1 << 4; //переключаем вывод порта на выход _delay_ms(200); } while (u_sr()>=Uxx_adc); //если напряжение ниже Uxx_adc, аккум есть if (!regim) { regim=2; }; time_zir (); //обнуляем счетчики времени while (regim==1) { //если разряд flg_razr=1; PORTB = 0 << 0; PORTB = 1 << 1; //вкл разряд if (u_sr()<U1v_adc) { // уже разрядили regim=2; //после разр будет нач зар }; if (min>max_mt_discharge) { regim=7; } ; //более 10ч. разряжаем - ошибка }; time_zir (); //обнуляем счетчики времени //коэф включения 20% while (regim==2) { //начальный заряд PORTB = 0 << 0; PORTB = 0 << 1; //выкл заряд _delay_ms(800); //заряд только 20% if ((u_sr()>U1v_adc)&&(min)) { regim=3; } ; //значит уже дозаряжали до U1v_adc PORTB = 1 << 0; //вкл заряд _delay_ms(200); error(); //если напряжение выше Uxx_adc, то или вынули аккум, или сработала термозащита if (min>30) { regim=7; } ; //более 30мин заряжаем до 1В-ошибка по напряжению }; time_zir (); //обнуляем счетчики времени while (regim==3) { //нормальный заряд while (flg_n) {};//ждем изменения секунды, т.е. синхронизируемся с тактом раз в секунду flg_n=~flg_n; PORTB = 0 << 0; PORTB = 0 << 1; //выкл заряд _delay_ms(10); summa_u+=u_sr();//суммируем уже усредненное напряжение, чтобы усреднить за минуту if (flg_razr) { PORTB = 1 << 1; _delay_ms(5); PORTB = 0 << 1; } ; //если был разряд, то включаем разрядн импульс для регенерации аккум PORTB = 1 << 0; //вкл заряд if (sec==0) { //значит прошла минута, и можно усреднять,записывать в массив for (i=1;i<12;i++) { izm_u[i-1]=izm_u[i]; } ;//смещаем массив, чтобы помнить напряжения за последние 12 минут izm_u[11]=summa_u/60; summa_u=0; error(); //если напряжение выше Uxx_adc, то или вынули аккум, или сработала термозащита i1=0;//i1-к-во совпадений по условию-предыдущее больше или равно for (i=11;i>0;i--) { if (izm_u[i-1]>=izm_u[11]) { //если все замеры перед текущим были равны ему или были больше i1++; } ; //значит кривая точно идет на спад или горизонтальна }; if (i1>=10) { //всего не менее 10-и совпадений if (u_sr()>Uzar_adc) { regim=5; } else { regim=7; } ; //если напряж под током менее миним напряж на заряж аккум Uzar_adc - то ошибка }; }; if (min>max_mt_charge) { regim=7; } ; //более 5ч. заряжаем-ошибка по времени }; time_zir (); //обнуляем счетчики времени while (regim==5) { //режим выравнивающей дозарядки 20% на 20мин. PORTB = 1 << 0; //вкл заряд _delay_ms(200); error(); //если напряжение выше Uxx_adc, то или вынули аккум, или сработала термозащита PORTB = 0 << 0; //выкл заряд _delay_ms(800); if (min>20) { regim=6; } ; //всего режим 20мин }; while (regim==6) { //заряд окончен PORTB = 1 << 0; _delay_ms(5); PORTB = 0 << 0; _delay_ms(995); // поддерживающая подзарядка 0,5% }; while (regim==7) { //ошибка заряда PORTB = 0 << 0|| 0<<1; }; }; } Скопировал проект из http://sxim.net/mc/mc54.php
Сообщение от omokost
Вернуться к обсуждению: Atmel Studio 6.1 После компиляции в дизассемблере одни NOP ATmega AVR |
21.03.2013, 16:44 | |
Готовые ответы и решения:
21
AVR ассемблер. объявление массива .db Atmel Studio 7, ошибка компиляции? Ошибки и предупреждения при компиляции проекта для Attiny2313 в Atmel Studio 7.0 Как отобразить имена внешних функций в дизассемблере visual studio? visual studio 2010 запуск после компиляции релиза Почему AVR Studio 4, а не Atmel Studio 6? |
21.03.2013, 16:44 | |
21.03.2013, 16:44 | |
Помогаю со студенческими работами здесь
0
После компиляции программы. Visual studio сразу закрывается. Вылетает ошибка. Ошибки при компиляции проекта после обновления Visual Studio 2019 После компиляции кода в командной строке Visual Studio 2013 не удается найти exe-файл Atmel Studio Atmel studio 6 Atmel studio 6.1 |