• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Часы на отечественных элементах

avr-gcc.exe -mmcu=attiny2313 -Wall -gdwarf-2 -O0 -MD -MP -MT clock.o -MF dep/clock.o.d -c ../clock.c
In file included from ../clock.c:2:
c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:90:3: warning: #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
../clock.c:3: warning: return type of 'main' is not 'int'
../clock.c: In function 'main':
../clock.c:5: error: 'DDRB' undeclared (first use in this function)
../clock.c:5: error: (Each undeclared identifier is reported only once
../clock.c:5: error: for each function it appears in.)
../clock.c:6: error: 'true' undeclared (first use in this function)
../clock.c:8: error: 'PORTB' undeclared (first use in this function)
make: *** [clock.o] Error 1
Build failed with 5 errors and 2 warnings...

тоже не радует(
 
Еще одна строчка после define
Код:
#include <avr/io.h>
 
блин чето не нравиться
avr-gcc.exe -mmcu=attiny2313 -Wall -gdwarf-2 -O0 -MD -MP -MT clock.o -MF dep/clock.o.d -c ../clock.c
In file included from ../clock.c:3:
c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:90:3: warning: #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
../clock.c:4: warning: return type of 'main' is not 'int'
../clock.c: In function 'main':
../clock.c:7: error: 'true' undeclared (first use in this function)
../clock.c:7: error: (Each undeclared identifier is reported only once
../clock.c:7: error: for each function it appears in.)
make: *** [clock.o] Error 1
Build failed with 3 errors and 2 warnings...
 
Вместо -O0 должно стоять -O2.
Придется мне ставить студию....
 
нашел в project>configuration options
а есть какойнибудь учебник? на авр студию?
 
HELP называется. Сейчас скачаю и установлю студию себе.
 
Код:
#define F_CPU (1000000L)
#include <avr/io.h>
#include <util/delay.h>

typedef uint8_t BYTE;

void stb(BYTE no,BYTE val)
{
    if(val)
    {
        PORTB=PORTB|(1<<no);
    }
    else
    {
        PORTB=PORTB&(~((1<<no)));
    }

}


int main()
{
    DDRB=0b100;
    while(1)
    {
        PORTB=~PORTB;
        _delay_ms(1000);
    }
}
 
жму run вылазиет ошибка и все закрывается :tehnari_ru_325:
 

Вложения

  • Безымянный2.webp
    Безымянный2.webp
    10.7 KB · Просмотры: 197
какой девайс выбирать в AVRprog?
 
*.hex нужно записывать с помощью uniprof
 
Готовая программа
Код:
#include <avr/io.h>            //Работа с портами и регистрами
#include <avr/interrupt.h>    //Работа с прерываниями

#define LED (2)                //Номер бита, к которому подключен светодиод
#define POLA (0)            //Первый бит управления полярностью
#define POLB (1)            //Второй бит управления полярностью
#define BUTTON (3)            //Бит, к которому подключена кнопка


typedef uint8_t BYTE;        //Беззнаковый байт, хранит 0..255

BYTE fdiv=0;                //счетчик для деления таймера 125Гц на 125
BYTE fdiv60=0;                //счетчик для деления на 60 секунд
BYTE status=0;                //состояние выходных линий

inline BYTE invert(BYTE a,BYTE no)    //в байте а меняем бит no на противоволожный
{
    const BYTE b=1<<no;                //получаем байт, в котором на месте инвертируемого бита стоит 1, остальные 0
    return((a|b)&((~a)|(~b)));        //вычисляем новый байт

    // a b 
    // 0 0 0
    // 0 1 1
    // 1 0 1
    // 1 1 0
}


ISR(TIMER0_OVF_vect)           //прерывание от таймера 125 Гц
{
    fdiv++;                       //инкремент счетчика
    if(fdiv==125)               //если счетчик достиг 125, имеем событие, возникающее 1 раз в секунду
    {
        fdiv=0;                   //сброс счетчика - делителя 
        status=invert(status,LED); //переключаем светодиод
        

        fdiv60++;            //увеличиваем счетчик секунд
        if((fdiv60==60)||(PINB&&(1<<BUTTON))) //если прошло 60 секунд или нажата кнопка
        {
            fdiv60=0;        //сброс счетчика секунд
            status=invert(status,POLA);  //смена полярности A
            status=invert(status,POLB);  //смена полярности B
        }
        PORTB=status;                     //устанавливаем пины в новое состояние
    }
    TCNT0=5;                             //устанавливаем внутренний счетчик на 5, получая тем самым деление 
                                         //частоты инкремента таймера 31250 Гц на 250 = 125 Гц
}


int main()  //начало работы
{
    BYTE mask=0;  //маска для установки битов режима работы порта
    mask=invert(mask,POLA);  //бит 1 управления полярностью на вывод
    mask=invert(mask,POLB);  //бит 2 управления полярностью на вывод
    mask=invert(mask,LED);   //бит управления светодиодом на вывод

    DDRB=mask;                 //установка значений

    status=invert(status,POLA);  //установка 1 полярности в 1
    status=invert(status,BUTTON); //подключение подтягивающего резистора для кнопки

    PORTB=status;                  //установка пинов

    TCCR0B=(1<<CS00)|(1<<CS01);   //установка деления тактовой частоты 2000000Гц на 64 для получения частоты инкремента таймера 31250 Гц
    TIMSK=1<<TOIE0;                  //разрешение прерывания от таймера

    sei();                          //разрешение прерываний
    while(1);                      //зацикливание программы, ожидание прерываний по таймеру
}
 
Тогда пробуйте AVRDUDE, он самый качественный.
 
PB3 = 1,79вольта PB0,PB1 =VCC
PB3 подключен через 2,4 кОм к светодиоду (слабое свечение)
 
У меня BM9010 только с CodeVisionAVR заработал :)
ЗЫ, часы уже совсем не на отечественных элементах получаются :)
 
У меня BM9010 только с CodeVisionAVR заработал :)
ЗЫ, часы уже совсем не на отечественных элементах получаются :)
в sinaprog1.5.5.10
программер:AVR910 & com2 всо вроде работает
дык что делать? LongCat а тестовая программа актуальна стоит на ней попробовать?.
провильно ли определены порты?
 

Вложения

  • Безымянный3.webp
    Безымянный3.webp
    48.2 KB · Просмотры: 182
LongCat а тестовая программа актуальна стоит на ней попробовать?.
Не попробуешь - не проверишь :)
Я сам не специалист в микроконтроллер, но часы на меге 8 у меня отлично работают :)
 
Назад
Сверху