Doniak писал(а):я понимаю как просто найти остаток// вычислить остаток от деления нацело
так и есть.
Технический форум по робототехнике.
Doniak писал(а):я понимаю как просто найти остаток// вычислить остаток от деления нацело
avr123.nm.ru писал(а):Doniak писал(а): я понимаю как просто найти остаток
так и есть.
0.586206897 - это и есть ОСТАТОК !
if (alr1|alr2)
{
PORTA.2=1; //код когда alr1 или alr2 (или обе сразу) равны 1
}
else
{
PORTA.2=0; //код когда alr1 и alr2 равны 0
};
avr123.nm.ru писал(а):Краткий курс по AVR - самоучитель:
http://avr123.nm.ru - там же книги и проекты.
Резервные адреса курса: http://pid.by.ru и http://proAVR.narod.ru
Архив с Кратким курсом по AVR всегда достуен по адресу :
( примерно 4 Мб )
FAQ по AVR, PIC, ARM, CVAVR, WinAVR, IAR, ICC, Keil, GCC и Си для МК + инструментарий разработчика
Книг очень много - лучшие книги скачайте :
viewforum.htm?f=19 ЧИТАЙТЕ !
Архив скачать : Весь краткий курс по AVR + FAQ AVR + симулятор VMLAB - всё что нужно для БЫСТРОГО старта.
=========================
Что-то не открываются страницы кроме первой
Скачайте !!! Рекомендую.
=========================
Волшебный ! Шаблон для быстрого написания программ в CodeVisionAVR ( CVAVR ) для ATmega8 и ATmega16 и мгновенной проверке в симуляторе VMLAB или в PROTEUS. В шаблоне проекты уже сконфигурированы и он легко адаптируется на другие МК AVR.
Посмотрите пример использования шаблона :
viewtopic.php?f=2&t=3958&p=52604#p5260
Все о прошивании AVR, о программаторах, адаптерах и про фьюзы и про загрузчики.
Устройство микроконтроллера AVR - основные моменты для начинающего.
Прерывания в AVR с примерами для быстрого запуска.
Си для микроконтроллеров. Он-лайн книга на русском -Язык программирования Си - Брайан В. Керниган, Деннис М. Ритчи.
13 примеров - задачи-упражнения для освоения программирования AVR.
============
CVAVR 2.03.4 без коклюша и ветрянки !
CodeVisionAVR v1.25.9 с лекарством
CodeVisionAVR 1.25.8 полную версию можно загрузить
лекарство загрузить
============
Шаблон-заготовка для быстрого старта CVAVR и VMLAB.
VMLAB - скачайте провереный RAR архив.
PROTEUS - мощнейший симулятор - краткий курс и скачать симулятор.
============
Друзья ! Продумывайте функции САМОДИАГНОСТИКИ тех
устройств что делаете. Чтоб требовался минимум инструментов
для поиска неисправностей.
Пример - avr123.nm.ru/z4.htm
Даже простой светодиод может разным режимом
мигания выдать кучу сообщений.
======
Предлагаю в этом топике задавать вопросы по МК не требующие создания отдельного топика.
Концентрировать таким образом информацию по МК.
====== Внимание ! в Тини и новых мега выше 128 и мега USB CAN PWM Запись
PINx.y = 1; // меняет бит PORTx.y - инвертирует.
Это позволяет "дергать" ногой с частотой такта (кварца например) !
На странице avr123.nm.ru/02.htm - на желтом фоне - перечислены некоторые модели AVR
у которых это ДА и у которых НЕТ.
======= ВАЖНО !!!
правила проектирования электроники и плат
====== Описание изготовления печатных плат в домашних условиях - ЛУТ дорожки от 0.12 мм УВЕРЕННО !
====== Как паять правильно
блин. 
itor писал(а):Как в Си работать со строками? Не могу понятьблин.
Задача такая в ATmega16 по ком порту передаю строку "LED1ON" результат загарается светодиод, если "LED1OFF" светодиод гаснет
Дайте ктонибудь пример рабочиего кода чтонибудь похожее если есть.

#define hal_led1_on() (PORTC &= ~0x08)
#define hal_led1_off() (PORTC |= 0x08)
#define hal_is_btn1_pressed() (PINB & 0x04)
if (hal_is_btn1_pressed())
hal_led1_on()
else
hal_led1_off()


boez писал(а): самую главную полезность забыл - на компе есть ОТЛАДЧИК!!! Можно точки останова ставить и переменные смотреть. На атмеге8 это намного сложнее
TrashVigor писал(а): В ICR1- запоминается состояние TCNT1. но в ICR1 только 0
Chip type : ATmega8
Program type : Application
Clock frequency : 8,000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega8.h>
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
#include <stdio.h>
char bs[10];
int x;
// Timer 1 output compare A interrupt service routine
interrupt [TIM1_CAPT] void timer1_capt_isr(void)
{
x=x+1;
PORTC^=0x01;
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x01;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 1000,000 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=0x02;
TCCR1B=0x52;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0xFF;
OCR1AL=0xFF;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x20;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// Global enable interrupts
// Global enable interrupts
#asm("sei")
lcd_init(16);
while (1)
{
lcd_gotoxy(5,1);
lcd_putsf("Hello");
sprintf(bs,"x=%i",x);
lcd_gotoxy(0,0);
lcd_puts(bs);
};
}