Технический форум

Технический форум (http://www.tehnari.ru/)
-   Микропроцессоры (http://www.tehnari.ru/f115/)
-   -   Мигалка на микроконтроллере (http://www.tehnari.ru/f115/t88374/)

mish_k98 19.05.2013 11:14

Мигалка на микроконтроллере
 
добрый день.собрал я програматор для avr на ком-порт.пытаюсь прошить через uniprof.в одной версии пишет что записано, а в другой даже не определяет микроконтролер.вставляю в схему - она не рабтает.использую atmega8.в нете пишут что нужно прошивать фьюзы, но я не знаю какие именно.
ПОДСКАЖИТЕ что мне нужно сделать!!!

Валерий 19.05.2013 11:28

Обычно, вместе с программой, выкладывают и установку фьюзов.

mish_k98 19.05.2013 17:04

Вложений: 1
там не дали такой информации.вот схема и прошивка.
------------------------------------------------------
SB1 будет для переключения режима мигания, а кнопка SB2 для изменения частоты мигания. Исходный код приведен ниже:


int main(void)
{
DDRD = 0xff; /* все выводы порта D сконфигурировать как выходы */
DDRC = 0x00; //выводы порта С сконфигурировать как входы

PORTC = 0xff; // установить "1" на всех выводах порта C,
// включаем подтягивающие резисторы

int i=0; //для задержек
int j=0; //для смены битов порта D
int d=20; //для изменения периода миганий
int sw=0; //для изменения режимов миганий

while (1) // Бесконечный цикл
{
if (!(PINC & (1<<PINC4))) //если логический ноль на 4 бите порта С
{
sw++; //преключить режим миганий
if(sw>4)sw=0;
}
if (!(PINC & (1<<PINC3))) //если логический ноль на 3 бите порта С
{
d+=20; //увеличить период миганий
if(d>260)d=20;
}

switch(sw)
{
case 0:
DDRD |= 1<<j;
for(i=0;i<d;i++)_delay_us(50);
DDRD &= ~(1<<j);
for(i=0;i<d;i++)_delay_us(50);
j++;
if(j>3)j=0;
break;
case 1:
DDRD |= 1<<j;
for(i=0;i<d;i++)_delay_us(50);
DDRD &= ~(1<<j);
for(i=0;i<d;i++)_delay_us(50);
j--;
if(j<0)j=3;
break;
case 2:
DDRD &= ~(1<<j);
for(i=0;i<d;i++)_delay_us(50);
DDRD |= 1<<j;
for(i=0;i<d;i++)_delay_us(50);
j++;
if(j>3)j=0;
break;
case 3:
DDRD &= ~(1<<j);
for(i=0;i<d;i++)_delay_us(50);
DDRD |= 1<<j;
for(i=0;i<d;i++)_delay_us(50);
j--;
if(j<0)j=3;
break;
case 4:
DDRD=0xff;
for(i=0;i<d;i++)_delay_us(50);
DDRD=0x00;
for(i=0;i<d;i++)_delay_us(50);
break;
}
}

}

Валерий 19.05.2013 17:10

Такую прошивку надо компилировать под конкретный микроконтроллер.
И советую воспользоваться калькулятором фьюзов.

FUSE calculator

mish_k98 19.05.2013 17:29

вы конечно извините.но я только начинаю работать с микроконтролерами.это будет моя первая схема.поэтому не очень в этом разбираюсь и прошу помощи.как и что делать с нуля?
И ещё вопрос.почему в одной версии uniprof пишет, что записало, а в другой не определяет.обе версии 2010 года.одинаковые.

mish_k98 19.05.2013 17:30

пробывал через pony prog так там вообще не хочет фурычить

Валерий 19.05.2013 18:31

Я же говорю, что сначала надо скомпилировать файл, а уже потом записывать на МК.

Le_Fleurs 19.05.2013 18:50

Какой то код не правильный в обще не могу скомпилировать.

kirmav 19.05.2013 20:12

Вложений: 1
Не компилировалось, потому что не были указаны соответствующие библиотеки. Вот скомпилированная прошивка:) Фьюзы изменять не нужно

Le_Fleurs 19.05.2013 23:00

Цитата:

Сообщение от kirmav (Сообщение 909339)
Не компилировалось, потому что не были указаны соответствующие библиотеки. Вот скомпилированная прошивка:) Фьюзы изменять не нужно

какие библиотеки ещё указывали? Я указывал.
#include <avr/io.h>
#include "delay.h"


Часовой пояс GMT +4, время: 07:31.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.