USB 3.0 там нет как вида. Во время выпуска ноута этого протокола еще не было.
Питание тестером и осликом просматривал 5в стабильно. Присутствует небольшой шум, но так же и на рабочем компе.
Код: Выделить всё
uint8_t dig[4]; // массив выводимых символов, 0..3 справа налево
interrupt { // например, 1000 раз в секунду, что позволит это прерывание ещё и для замера миллисекунд применить
static uint8_t d; // номер разряда
// Зацикливаем d в пределах 0..3
if (++d >= 4)
d = 0;
// Гасим все разряды (биты 0..3 порта D)
PORTD &= ~0x0F;
// Выводим на сегменты (порт B) очередную цифру
PORTB = dig[d];
// Зажигаем соответствующий разряд
PORTB |= (1<<d);
}Код: Выделить всё
int num = -1;
char *ptr_to_ram = strstr(rx_buffer0,"RESET");
if (ptr_to_ram)
num = (int)ptr_to_ram - (int)rx_buffer0;обновляйте содержимое в регистре OCRx до конца текущего периода ШИМ - и всё! текущий период отработает со старым значением ОCRx, а новый будет использовать новое значениеAndTer писал(а):Суть вопроса в задании заполнения пока не закончился текущий период. Чтобы к следующему он уже знал сколько ему считать.
Код: Выделить всё
/*****************************************************
AVR Core Clock frequency: 16,000000 MHz
*****************************************************/
#include <mega8.h>
// Declare your global variables here
unsigned char SND[]={0x0D,0x05};
int i=0;
// Timer1 input capture interrupt service routine
interrupt [TIM1_CAPT] void timer1_capt_isr(void)
{
// Place your code here
if(i){OCR1AL=SND[i];i=0;}else{OCR1AL=SND[i];i=1;};
}
void main(void)
{
PORTB=0x00;
DDRB=0x02;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 16000,000 kHz
// Mode: Fast PWM top=ICR1
// OC1A output: Non-Inv.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=0x82;
TCCR1B=0x19;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x13;
OCR1AH=0x00;
OCR1AL=0x0D;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x20;
while (1)
{
// Place your code here
};
}
Код: Выделить всё
// Timer1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Place your code here
OCR1AL=0x05;
}
// Timer1 input capture interrupt service routine
interrupt [TIM1_CAPT] void timer1_capt_isr(void)
{
// Place your code here
OCR1AL=0x05;
}
// Timer1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
// Place your code here
OCR1AL=0x05;
}Код: Выделить всё
if(i){SND[i];i=0;}else{SND[i];i=1;};Код: Выделить всё
#asm("sei")