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

Программирование Attiny2313


Opot

Рекомендуемые сообщения

Купил attiny2313, написал тестовую прошивку в AtmelStudio

# define F_CPU 1000000UL

#include <util/delay.h>
#include <avr/io.h>

int main(void)
{
DDRD = 0xff;

while(1)
{
PORTD = 0b11111110;
_delay_ms(1000);
PORTD = 0b11111101;
_delay_ms(1000);
}
}

Залил с помощью usbasp, внешний кварц не использовал, фьюзы не менял, питание от 5в(usb зарядник от телефона)

Fuse

L 0xE4

H 0xCB

E 0xFF

LB 0x3F

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

p.s. attiny2313 не attiny2313v

p.p.s в proteus всё работает как надо

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Ну дык он у вас выключен LOW должен быть не E4, а 64

или пропишите в начале-перед инклудами

#define F_CPU 8000000UL

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

- А совесть в курсе? - А совесть в доле! :-D

Эксперт — это человек, который совершил все возможные ошибки в некотором узком поле.

Все грамматические ошибки являются авторским стилем изложения материала.

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

Скорость моргания не меняется ни при установке фьюзов, ни при изменение частоты программно(ни 8000000UL ни 8000000000UL ни 1000000UL )

ни при комбинации

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

Может мк битый продали?

#define F_CPU 8000000UL
#include <avr/io.h>
int main(void)
{
DDRB = 0xff;
DDRA = 0xff;

PORTB = 0b11111110;
PORTA = 0b11111101;
while (1){}
}

Те же моргания, но в первом примере при выполнении горит только в одном положении(если я правильно понял на портах должна происходить переполюсовка), а с таким кодом полюса светодиода не важны, моргает в обоих положениях

#define F_CPU 8000000UL
#include <avr/io.h>
int main(void)
{
 DDRB = 0xff;
 DDRA = 0xff;
 char toggle = 0;

    TCCR0A = 0x02;
    OCR0A  = 0x37;
    TCCR0B = 0x05;

    TCCR1B = (1 << WGM12) | (1 << CS11);
 while(1)
 {
  if (TIFR & 0x01) {
   TIFR |= 0x01;
   if (toggle) {	 
 toggle = 0;
 PORTB = 0b11111101;
 PORTA = 0b11111110;
   }
   else {
 toggle = 1;
 PORTB = 0b11111110;
 PORTA = 0b11111101;
   }
  }
 }
}

Изменено пользователем Opot
Ссылка на комментарий
Поделиться на другие сайты

Делай пока на задержке из библиотеки.

попробуй вот так:

# define F_CPU 1000000UL

#include <util/delay.h>
#include <avr/io.h>

int main(void)
{
DDRD = 0xff;
PORTB=0x00;

while(1)
{
PORTD = 0b00000001;
_delay_ms(1000);
PORTD = 0b00000000;
_delay_ms(1000);
}
}

или вот так.

# define F_CPU 1000000UL
#include <util/delay.h>
#include <avr/io.h>
int main(void)
{
DDRD = 0xff;
PORTB=0x00;
while(1)
{
PORTD = 0b00000001;
_delay_ms(2000);
PORTD = 0b00000010;
_delay_ms(2000);
}
}

В обоих случаях светодиод подключать плюсом к ножке МК.

Вот этот твой код только зажет светодиоды и мелькать ими не будет:

#define F_CPU 8000000UL
#include <avr/io.h>
int main(void)
{
DDRB = 0xff;
DDRA = 0xff;
PORTB = 0b11111110;
PORTA = 0b11111101;
while (1){}
}

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

Очень люблю спасибку.

Спасибка ни кого еще не убила.

Професия: Електро-механик.

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

Вот этот твой код только зажет светодиоды и мелькать ими не будет:

#define F_CPU 8000000UL
#include <avr/io.h>
int main(void)
{
DDRB = 0xff;
DDRA = 0xff;
PORTB = 0b11111110;
PORTA = 0b11111101;
while (1){}
}

я для того и писал этот вариант, но он всё равно так же мелькает

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

Не знаю что было, но взял фьюзы по дефолту для тини2313 тут http://www.engbedded.com/fusecalc , прошил, заработало.

Всем спасибо, думаю теперь буду долго вчитываться в статьи про фьюзы.

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...