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

на днях перестала видеться Xmega128A3.. после безуспешной (по не понятным мне пока причинам ) попытки завести уарт я лег спать.. с утра приехав в универ со всем добром.. хмегу дракон больше не видит.. хоть плата скорее макетка чем плата - но все прозвонил, питание проверил.. все ок... что могло ее убить - ума не приложу.. с мегами такого не бывало.. что я с ними только не делал...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Была такая проблема . Правда Xmega128А1 запаял на макетку флюса не пожалел тактируется от внутреннего генератора подключил к программатору читается программируется через день не читается и не програмируется

Порядком помучился в конце поднял ее с макетки хорошо промыл запаял снова все заработало .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ЛТИ-120 – активный флюс, предназначенный для пайки оксидированных деталей из медных сплавов без предварительной зачистки (меди и её сплавов, оцинкованных изделий, нержавеющих сплавов, нихрома и др.)

 

Паять таким флюсом электронику, Круто, что еще можно сказать.

Изменено пользователем Vasily_

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

читаем этикетку:

применение: пайка элементов радиомонтажа, печатных плат, углеродистых сталей, цинка легкосплавными припоями.

 

состав: канифоль сосновая, спирт, активаторы.

 

далеко не первый чип паяный этим флюсом.. хотя я его и смывал спиртом...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

....

активаторы.

... хотя я его и смывал спиртом...

лучше сначала бензином, потом спиртом, потом мылом с водой щёточкой пройтись тщательно по всем контактам и то даже это не гарантирует смывку флюса из под корпусов микросхем и пассива.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно, а будут ли работать винстаровские или аналогичные индикаторы 16х2 с Xmega, если индикатор питать штатными 5В, но управляя уровнями 3.3В? Неохота ставить преобразователь уровней или искать индикатор с 3В питанием.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно, а будут ли работать винстаровские или аналогичные индикаторы 16х2 с Xmega, если индикатор питать штатными 5В, но управляя уровнями 3.3В?

У HD44780 при 5В питании логическая 1 >= 2.2В Так что работать должно, но есть еще целый зоопарк аналогов. А у них может быть что угодно с уровнями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И в обратную сторону резистор со стабилитрончиком поставить. У меня так xmega с max232 работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно, а будут ли работать винстаровские или аналогичные индикаторы 16х2 с Xmega, если индикатор питать штатными 5В, но управляя уровнями 3.3В? Неохота ставить преобразователь уровней или искать индикатор с 3В питанием.

LPC2103 (3.6В) работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возникла задача получения точного прерывания на Xmege по времени. Использую таймер с соответствующим счетом от кварца Crystal: 14.7456Mhz с умножением на PLL=2 т.е. частота тактирования 29491200 Гц, как откалибровать таймер?

Вот код: (сейчас все работает, но хочется повысить точность (желательно программно, т.е. не делать отдельно макетку для точного определения частоты кварца).

//ICC-AVR application builder  
// Target : ATxmega128A1
/// Crystal: 14.7456Mhz

#include <ioxm128A1v.h>
#include <AVRdef.h>

// Прерывание по окончанию счета
#pragma interrupt_handler iv_TCE1_OVF_isr:54
void iv_TCE1_OVF_isr(void) 
{
TCE1.CTRLA=0x00; // stop Timer 1 порта Е
TCE1.CNT.i=0x8F80;   // установка значения для счета
flag_rs232=1;
TCE1.CTRLA|=0x07; //start Timer 1 порта Е
}

//TIMER1 initialize - prescale: 1,  actual value:  1,000 Sec (0,0%)
// Тактовая частота таймера 29491200 Гц
//Деление на 1024 
// Установка для счета  0x8F80 
void timerE1_init(void)
{
TCE1.CTRLA=0x00; // stop Timer 1 порта Е
TCE1.CNT.i=0x8F80;   // установка значения для счета  
TCE1.INTCTRLA = 0x01; // Разрешение прерывания по переполнению - уровень низкий.
TCE1.CTRLA|=0x07; //start Timer 1 порта Е
}

void clock (void)// Функция установки тактирования от кварцевого генератора с умножением частоты в 2 раза
{
//Настраиваем тактирование
//Кварц 16МГц, умножение на 2
OSC.XOSCCTRL=0xc3; //Кварц(12-16),16К циклов (сb) или 256К -  (с3)
OSC.CTRL|=0x08; //Включаем кварцевый генератор
do{} while ((OSC.STATUS & 0x08)==0); //ожидаем готовности кв. генератора 
OSC.PLLCTRL=0xc2;// PLL от кварца, К=2
OSC.CTRL|=0x10;//Включаем PLL
do{} while ((OSC.STATUS & 0x10)==0); //Ожидаем готовности PLL 
//переключаемся на тактирование от PLL
asm ("ldi r16,0xd8"); 
asm ("ldi r17,0x04"); 
asm ("out 0x34,r16"); 
asm ("sts 64,r17"); 
OSC.CTRL&=~BIT(0); //выключаем внутренний генератор на 2 МГц, работаем от внешнего кварца
} 

void PMIC_SET (void)
{
    // Разрешение прерывания и установка какие прерывания разрешены
      CLI();
    PMIC.CTRL |= 0x07;   // Enable interrupts in the PMIC.
    SEI(); // Enable the global interrupt flag.

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не совсем понятен Ваш вопрос.

Вы хотите всегда иметь на на выходе интервал, ближайший к 1сек при любом заранее неизвестном кварце?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не совсем понятен Ваш вопрос.

Вы хотите всегда иметь на на выходе интервал, ближайший к 1сек при любом заранее неизвестном кварце?

Вопрос вот чем: у нас есть регистр TCE1.CNT.i=0x8F80; // установка значения для счета

в котором необходимо установить число для счета таймера и зависит оно от частоты кварца (которое в общем может отличаться от того что на нем написано - немного естественно).

Есть решение аппаратное: делаем макетку, ставим кварц и частотомером вымеряем частоты кварца точно и на ее основе получаем значение регистра TCE1.CNT.i - при котором прерывание будет происходить максимально близко к 1 сек (грубо говоря 1,00000001 сек).

Я же хочу используя возможности Xmege - получиться ту же точность без вымерения кварца - возможно ли это ? (Если да - то каким путем).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы получаете свою частоту 1Гц вначале за счет деления на 1024 в прескаллере, затем за счет деления на 28800 в самом счетчике.

Изменяя коэф деления на 1, например 27799, получим частоту 1.00003Гц

Можно объединить два таймера в один 32-х разрядный с общим коэф деления 29491200.

Тогда изменяя коэф деления на 1, например 29491199, получим частоту 1.00000003Гц. Т.е. шаг подстройки на три порядка более тонкий.

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

Но в любом случае для оценки правильности интервала Вам потребуется какой-то внешний эталон частоты или времени.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы получаете свою частоту 1Гц вначале за счет деления на 1024 в прескаллере, затем за счет деления на 28800 в самом счетчике.

Изменяя коэф деления на 1, например 27799, получим частоту 1.00003Гц

Можно объединить два таймера в один 32-х разрядный с общим коэф деления 29491200.

Тогда изменяя коэф деления на 1, например 29491199, получим частоту 1.00000003Гц. Т.е. шаг подстройки на три порядка более тонкий.

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

Но в любом случае для оценки правильности интервала Вам потребуется какой-то внешний эталон частоты или времени.

Правильно я понимаю - частоту кварца можно узнать только внешне (программно из Xmege я ее не узнаю).

По таймерам понятно (если использовать 64-бит еще точнее можно сделать :rolleyes: )

Не хочется макетку делать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...