Делаем массив указателей на функции:
Код: Выделить всё
void fun0()
{...}
void fun1()
{...}
void fun2()
{...}
void main(void)
{
void (*OLOLO[6])();
OLOLO[0]=fun0;
OLOLO[1]=fun1;
OLOLO[2]=fun2;Вызываем fun1:
Код: Выделить всё
OLOLO[1]();Код: Выделить всё
void fun0()
{...}
void fun1()
{...}
void fun2()
{...}
void main(void)
{
void (*OLOLO[6])();
OLOLO[0]=fun0;
OLOLO[1]=fun1;
OLOLO[2]=fun2;Код: Выделить всё
OLOLO[1]();ADMUX|=(1<<REFS1)|(1<<REFS0);Dj_Alex писал(а):слышал, что можно использовать опорное напряжение 2,56 В с вывода aref, но там 0. ацп не использую, каким регистром включить?
Так вы хотели использовать внутренний ИОН 2,56 В, и это значение разрядов REFSx ADMUX для такого случая. При этом на выводах AVCC и AREF не должно быть внешних напряжений. А если хотите с вывода AVCC, то REFS1=0; REFS0=1;Dj_Alex писал(а):пробовал так
ADMUX=0b11000000;
но все равно на выводе 0, кондер вешал, толку нет
ValBag писал(а):При этом на выводах AVCC и AREF не должно быть внешних напряжений.
Даташит писал(а):The ADC has a separate analog supply voltage pin, AVCC.
Даташит писал(а):In either case, the external AREF pin is directly connected to the ADC, and the reference voltage can be made more immune to noise by connecting a capacitor between the AREF pin and ground. VREF can also be measured at the AREF pin with a high impedant voltmeter. Note that VREF is a high impedant source, and only a capacitive load should be connected in a system.
Согласен - в отношении AVCC дал "маху". Оно должно быть, если АЦП используется или, как в данном конкретном случае, питание служит только для получения напряжения опорного источника, которое Dj_Alex собирается использовать по другому назначению.AI_Disable писал(а):На AVCC всегда должно быть напряжение питания:ValBag писал(а):При этом на выводах AVCC и AREF не должно быть внешних напряжений.
никакого ИЛИ - AVCC должно подаваться ВСЕГДА! во многих микроконтроллерах от этого вывода запитаны выходные буферы портов ввода-вывода, так что без него не будут работать даже цифровые линии.ValBag писал(а):Согласен - в отношении AVCC дал "маху". Оно должно быть, если АЦП используется или, как в данном конкретном случае, питание служит только для получения напряжения опорного источника, которое Dj_Alex собирается использовать по другому назначению.
Не все, - отдельные линии портов, питающиеся от AVCC и не использующиеся в конкретном случае. ...Встречается практика такого использования.ARV писал(а):никакого ИЛИ - AVCC должно подаваться ВСЕГДА! во многих микроконтроллерах от этого вывода запитаны выходные буферы портов ввода-вывода, так что без него не будут работать даже цифровые линии.
Код: Выделить всё
//Chip type : ATtiny13
// CodeWizardAVR V1.25.9 Professional
#include <tiny13.h>
#include <delay.h>
interrupt [EXT_INT0] void ext_int0_isr(void)
{
PORTB.2 = 1;
delay_us(100); // имитируем операторы в обработчике
PORTB.2 = 0;
}
void main(void)
{
DDRB=0x1E; // PB0 на ввод, PB1-PB4 на вывод
MCUCR=0x03; // прерывание по нарастающему фронту
GIMSK=0x40; // разрешаем INT0
#asm("sei")
while (1)
{
//PORTB.1 = PINB.0; // повторяем на PB1 то, что на PB0 (он же INT0)
}
}Неудачно выразился, конечно он. ...А что, не помогает?Барсик писал(а):... Сказали бы сразу, что имели в виду "CodeVizardAVR".
ХуясеValBag писал(а):...Но, дело в том, что INT0 на PB1, а не на PB0. Если завести сигнал на "нужное" место - то все в порядке.