Re: AVR studio в вопросах и ответах
Добавлено: Пн фев 12, 2018 14:28:13
Народ! У кого 7 студия установлена? Как сделать выхлоп для 4 студии? Чтобы получить файл *.dbg для симулятора 4 студии.
Здесь можно немножко помяукать :)
https://radiokot.ru/forum/
Код: Выделить всё
int maine() {
asm( "nop" );
}Я писал вручную и ошибся при написании.int maine() {
asm( "nop" );
}
никогда не видел, чтобы студия 4.18 работала с вот этим интерпретатором (см. выделение). и папка не характерная для Windows /usr/bin/shrvk писал(а):0 [main] sh 11944 sync_with_child: child 8076(0x1F0) died before initialization with status code 0xC0000142
24366 [main] sh 11944 sync_with_child: *** child state waiting for longjmp
/usr/bin/sh:
Откланяюсь, сударь. Честь и хвала тебе. Потому что проблема решена.WinAVR установлен?
было похожее еще на win8.1, тут возможно решение, мне тогда помогло:
http://www.avrfreaks.net/forum/windows- ... r?page=all
для протеуса это не надо, протеус отлично работает с ELF-файлом, генерируемым студией по умолчанию. но надо сформировать отладочную информацию в формате DWARF-2, для чего при компиляции следует указать параметр -gdwarf-2bango писал(а):Подскажите как AvrStudio 6.2.1563 SP2 сгенерировать файл .COF.
Код: Выделить всё
#define F_CPU 16000000UL // установка в программе частоты процесора
#include <avr/io.h> // подключаем библиотеку ввода вывода
#include <util/delay.h> // подключаем библиотеку задержек
#include <avr/eeprom.h> // подключаем библиотеку ЕЕПРОМ
#include <avr/interrupt.h>//подключаем библиотеку прерываний для счетчиков
uint16_t EEMEM Neep = 2399;
unsigned int N = 2399;// переменная N делитель частоты
unsigned char M = 249; // Коэффициент деления таймера счетчика 0
unsigned char FChangeFlag = 1; // флаг для входа изменения частоты
//------------------------------------------------------
void timer_in_0 (void)
{
//-----------------------------------------------
// Задаем режим работы таймера-счетчика 0
//-----------------------------------------------
TCCR0A |= (1 << WGM01);// WGM = 010 - режим CTC по сравнению
//----------------установим делитель
// задаем предделитель таймера счетчика 0 с предделителем 1024
TCCR0B |= (1 << CS00);// CS = 101 - от внутреннего источника
TCCR0B |= (1 << CS02);
//------------ Настройка компоратора
// COM0A1 = 0 и COM0A0 = 1 - переключение OC0A в момент в момент совпадения
TCCR0A |= (1 << COM0A0);
OCR0A = M;// Задаем значение коэффициента пересчета 249
}
//---------------------------------------------------------
void timer_in_1(void)
{
//-----------------------------------------------
// Задаем режим работы таймера-счетчика 1
//-----------------------------------------------
TCCR1B |= (1 << WGM12); // устанавливаем режим CTC сброс по совпадению
//----------------установим делитель
// CS = 111 - от внешнего источника (по фронту)
TCCR1B |= (1 << CS10);
TCCR1B |= (1 << CS11);
TCCR1B |= (1 << CS12);
//------------ Настройка компоратора
// COM1A1 = 0 и COM1A0 = 1 - переключение OC1A в момент в момент совпадения
TCCR1A |= (1 << COM1A0);
}
//------------------------------------------------------------------------------
// Обработка прерывания по совпадению TIMER1 по каналу A
// Для устранения сбоев в работе счетчика при модификации OCR1A это лучше делать
// в момент сброса счетчика
//------------------------------------------------------------------------------
ISR (TIMER1_COMPA_vect)
{
// Запрещаем прерывания по совпадению с OCR1AH OCR1AL
TIMSK &= ~(1 << OCIE1A);
// регистры сравнения 16 битный заносим AH старшую AL младшую часть переменной
OCR1AH = (N >> 8) & 0x00FF;// Задаем новое значение коэффициента пересчета
OCR1AL = N & 0x00FF;//записываем число для сравнения
//-----------------------------------
FChangeFlag = 0; //сброс флага
}
int main(void)
{
//Настройка портов ввода выводы
DDRB = 0b00001100; // Определение напровления Порта В работаетна выход пины 2и3
PORTB = 0b11110011; // Подтягиваем резисторами не используемые биты
DDRD = 0b0000000; // Порт Д работает на вход в нем 7 бит
PORTD = 0b1111111; // Подтягиваем резисторами 7 бит
//------------------------------------------------
timer_in_0 ();
timer_in_1 ();
sei ();//разрешить глобальные прерывания
FChangeFlag = 1;
//запись в ЕЕПРОМ а читать из ЕЕПРОМа не получилось
//--------------------------------------------
eeprom_write_word(&Neep,N);// записываем переменную в ЕЕПРОМ
while(1)
{
//-----------------------------------------------------------------------------
// Опрос кнопок
//-----------------------------------------------------------------------------
if (ANYKEY)//опрос нажатия кнопок
{
if (KEY2)
{
Buton_save(); // Проверим состояние кнопки "Save" и сохраним переменные
};
if (KEY3)
{
Buton_minys (); // Проверка нажатия кнопки уменьшить
};
if (KEY4)
{
Buton_plys();// Проверка нажатия кнопки увеличение
};
};
if(FChangeFlag)
{
TIMSK |= (1 << OCIE1A); // Разрешаем прерывания по совпадению для модификации OCR1A
}
}
return 0;
}
вы ошибаетесь.bango писал(а):Протэус ГОВНО даже кнопки и епром корректор не читает