реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> AVR первые шаги - первые ошибки
D H
сообщение Nov 1 2006, 06:38
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 62
Регистрация: 1-11-06
Пользователь №: 21 847



Вот и написана в CodeVision Первая программа. В VMLab симулируется нормально. Зашил в ATMega16. В ответ тишина.
В проекте выбран ATmega16, 4MHz. Прошиваю PonyProg.
Фьюзы такие (отмечены галочками в PonyProg):
SUT1=1
CKSEL1=1
CKSEL0=1

На 40-й ноге телодвижений нет.

Reset через 0,1 мф на землю. +5 на VCC и AVCC

---------------------------------
#include
#define PA_OUT DDRA = 0b00000001

void initialization(void)
{
PORTA=0b11111110;
PA_OUT; //сделать PORTA выходом
TCCR0 = 0x4;/* таймер включить */
}


void main(void)
{
unsigned int Flag;
initialization();

while (1)
{
Flag=0;
if((TIFR&0x01)) // Проверка флага переполнения timer0
{
TIFR = 0x01; // очистить флаг переполнения timer0
PORTA.0=~PORTA.0; //Инвертировать значение в порту А
}
};
}
---------------------------------

Объясните пожалуйста, что неправильно сделал?
Go to the top of the page
 
+Quote Post
vet
сообщение Nov 1 2006, 06:54
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Фьюзы - отмечены галочками или установлены в 1 ? это разные вещи.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
D H
сообщение Nov 1 2006, 07:00
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 62
Регистрация: 1-11-06
Пользователь №: 21 847



Фьюзы отмечены галочками в PonyProg:
SUT1=1
CKSEL1=1
CKSEL0=1

Отмечены галочками. Я знаю, что это разные вещи. Прошу помочь разобраться что сделано не правильно.
Go to the top of the page
 
+Quote Post
vet
сообщение Nov 1 2006, 07:13
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Приведите скриншот окна установки фьюзов.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
D H
сообщение Nov 1 2006, 07:33
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 62
Регистрация: 1-11-06
Пользователь №: 21 847



Цитата(vet @ Nov 1 2006, 10:13) *
Приведите скриншот окна установки фьюзов.

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
otrog
сообщение Nov 1 2006, 07:45
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



Попробуйте так:
Прикрепленное изображение


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
$ilent
сообщение Nov 1 2006, 07:58
Сообщение #7


Частый гость
**

Группа: Новичок
Сообщений: 116
Регистрация: 14-02-06
Из: Москва. Перово
Пользователь №: 14 296



Помоему почти всё не правильно.
Код
#include <mega16.h>
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
PORTA=~PORTA.0;
}

void main(void)
{
// Input/Output Ports initialization
// Port A initialization
PORTA=0b11111110;
DDRA = 0b00000001;


// Port B initialization
PORTB=0x00;
DDRB=0x00;

// Port C initialization
PORTC=0x00;
DDRC=0x00;

// Port D initialization
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x05;
TCNT0=0x00;
OCR0=0x00;

// External Interrupt(s) initialization
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;
ACSR=0x80;
SFIOR=0x00;
// Global enable interrupts
#asm("sei")

while (1)
      {
      // Place your code here
      };
}


БЕЗ КВАРЦА
CSEL3...0 = 0011 = слева на права - ( галка, галка, пусто, пусто) - (галка - это ноль - это сброшен)
SUT0 = галка, SUT1 = пусто или просто не трогаешь (оставляешь как есть)

Сообщение отредактировал $ilent - Nov 1 2006, 08:00
Go to the top of the page
 
+Quote Post
Petka
сообщение Nov 1 2006, 08:04
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(D H @ Nov 1 2006, 09:38) *
Reset через 0,1 мф на землю.
Объясните пожалуйста, что неправильно сделал?

уж лучше reset "через" 10к на +5V
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Nov 1 2006, 08:23
Сообщение #9


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Чтобы определиться с умолчаниями по отношению к фьюзам в том или ином программаторе, их иногда полезно прочитать.
Таким образом, по крайней мере, ничего не испортите.
Go to the top of the page
 
+Quote Post
D H
сообщение Nov 1 2006, 09:20
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 62
Регистрация: 1-11-06
Пользователь №: 21 847



Цитата($ilent @ Nov 1 2006, 10:58) *
Помоему почти всё не правильно.
Код
#include <mega16.h>
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
PORTA=~PORTA.0;
}

void main(void)
{
// Input/Output Ports initialization
// Port A initialization
PORTA=0b11111110;
DDRA = 0b00000001;



// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;
ACSR=0x80;
SFIOR=0x00;
// Global enable interrupts
#asm("sei")

while (1)
      {
      // Place your code here
      };
}


БЕЗ КВАРЦА
CSEL3...0 = 0011 = слева на права - ( галка, галка, пусто, пусто) - (галка - это ноль - это сброшен)
SUT0 = галка, SUT1 = пусто или просто не трогаешь (оставляешь как есть)


Ситуация такая же. В VMLab все эмулируется. Прошиваю, тишина.
Go to the top of the page
 
+Quote Post
Petka
сообщение Nov 1 2006, 09:43
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(D H @ Nov 1 2006, 12:20) *
Ситуация такая же. В VMLab все эмулируется. Прошиваю, тишина.

Вы ресет к пяти вольтам хоть чем-нибудь тяните?
Go to the top of the page
 
+Quote Post
D H
сообщение Nov 1 2006, 11:50
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 62
Регистрация: 1-11-06
Пользователь №: 21 847



Цитата(Petka @ Nov 1 2006, 12:43) *
Цитата(D H @ Nov 1 2006, 12:20) *

Ситуация такая же. В VMLab все эмулируется. Прошиваю, тишина.

Вы ресет к пяти вольтам хоть чем-нибудь тяните?


Нет. Резистор отсутствовал. Поставил и все запустилось. Огромное спасибо. Начало положено.
Надо отдать должное дружелюбию и стремлению помочь новичку. Ваш форум был третий, где я задал вопрос и, что самое главное, получил внятный ответ. На остальных форумах ответы были такого характера : "Пиши на асме и все будет понятно".
Еще раз огромное спасибо.
Go to the top of the page
 
+Quote Post
junoSynthesizer
сообщение Nov 1 2006, 15:28
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 83
Регистрация: 25-11-05
Из: odessa
Пользователь №: 11 397



давно уже хотел спросит форумчан, да всё новую тему не хочется открывать =)


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

если мне надо хардварный ресет, то просто кидаю кнопку с ресета на землю. и прекрасно работает!

так вот вопрос: чем мне это грозит в будущем? =)


--------------------
Вся жизнь - ништяк, все бабы - леди, а солнце - шар дающий свет
Go to the top of the page
 
+Quote Post
Alex11
сообщение Nov 1 2006, 15:51
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Если провод от ноги Reset никуда не идет, то ничем не грозит, а если идет - пониженной помехоустройчивостью. Там внутренняя подтяжка 30-60 КОм, это многовато для длинной линии в условиях сильных помех.
Go to the top of the page
 
+Quote Post
junoSynthesizer
сообщение Nov 1 2006, 20:56
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 83
Регистрация: 25-11-05
Из: odessa
Пользователь №: 11 397



от рисета идёт, на разъём программирования... буду его обрубать на пп после прошивки =)


--------------------
Вся жизнь - ништяк, все бабы - леди, а солнце - шар дающий свет
Go to the top of the page
 
+Quote Post
Petka
сообщение Nov 2 2006, 08:55
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(junoSynthesizer @ Nov 1 2006, 23:56) *
от рисета идёт, на разъём программирования... буду его обрубать на пп после прошивки =)

лучше всего ресет напрямую заправить на +5В. при внутрисхемном программировании это не годится, поэтому не напрямую а кОм через 1-10.
Go to the top of the page
 
+Quote Post
Persona
сообщение Nov 2 2006, 18:42
Сообщение #17


Участник
*

Группа: Новичок
Сообщений: 22
Регистрация: 2-11-06
Из: Киев
Пользователь №: 21 916



Конечно антенну из RESET лучше не делать. Но если помехи "достают", то надо с RESET-ом считаться и фильтр. емкость поближе к корпусу повесить, чтобы не все так близко принимал с "эфира".
При "грязном" питании 10к резистор (с RESET на пит.) - прямой мост для помех и гарантия случайного сброса.
Когда мониторинг события СБРОС не проводить, то может возникать мнение, что ложных сбросов никогда и не было...
Go to the top of the page
 
+Quote Post
Petka
сообщение Nov 3 2006, 09:18
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(Persona @ Nov 2 2006, 21:42) *
Конечно антенну из RESET лучше не делать. Но если помехи "достают", то надо с RESET-ом считаться и фильтр. емкость поближе к корпусу повесить, чтобы не все так близко принимал с "эфира".
При "грязном" питании 10к резистор (с RESET на пит.) - прямой мост для помех и гарантия случайного сброса.

Вот для случая "грязного" или плохого питания как раз ресет и НАДО ОБЯЗАТЕЛЬНО вешать на питание. А то представьте себе, скокануло питание, часть периферии сбойнуло, память слетела, а контроллер не перазапустился! вот здорово! это называете надёжной работой?
Go to the top of the page
 
+Quote Post
Persona
сообщение Nov 4 2006, 13:47
Сообщение #19


Участник
*

Группа: Новичок
Сообщений: 22
Регистрация: 2-11-06
Из: Киев
Пользователь №: 21 916



Ну ничего себе! Что же так питание скачет, что все сбоит и слетает? Тогда надо UPS ставить. Если МК будет перезапускаться, то и сбой некому заметить будет и маячок зажечь.. smile.gif
Go to the top of the page
 
+Quote Post
Harbinger
сообщение Nov 4 2006, 15:53
Сообщение #20


старший лаборант
******

Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097



Так "маячок" же можно в процедуру инициализации вписать wink.gif


--------------------
Китайская комплектация - европейское качество! ;)
Go to the top of the page
 
+Quote Post
smk
сообщение Nov 4 2006, 19:27
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Ну если зашла речь о питании, то расскажите кто как делает. Если на одной платке с контроллером стоит, управляемая им, нагрузка с током до 0,3А то как быть? А если бузер 25 Ом при частоте 2400 Гц управляется меандром и длинна проводника от него до контроллера не более 3 см? Какие мнения? Питание от раздельных стабилизаторов не обсуждаем, понятно, что это лекарство...


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Harbinger
сообщение Nov 5 2006, 13:30
Сообщение #22


старший лаборант
******

Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097



Для буззера - RC-фильтр. 10 Ом/100 мкФ. И, имхо, неприлично такие вещи прямо на порт контроллера вешать wink.gif Даже китайцы на транзисторах не экономят.
Сейчас вот на одном стабилизаторе висит контроллер и нагрузка с пиковым током потребления 2 А (GSM-модуль). Ничего, работают. DC/DC 3,6 В, на выходе 470 мкФ, модуль отвязан супрессором+220 мкФ тантал+0,1 мкФ керамический.


--------------------
Китайская комплектация - европейское качество! ;)
Go to the top of the page
 
+Quote Post
smk
сообщение Nov 6 2006, 10:48
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Конечно не на порту такая нагрузка. Конечно есть транзистор. Интересуют оригинальные решения. Стандартные мне известны. Ну вот скажем, не будет ли проще отфильтровать питание самого контроллера, а не таких нагрузок? Ток контроллера ведь намного меньше. И конечно развязаться по току транзисторами. я прав?

И еще. Кто-нибудь сталкивался с изменением частоты встроенного генератора контроллера при изменении напряжения питания (кварца нет)? А питание и температура одновременно? Даташит смотрел, но толком пока ничего не ясно. Как на практике?


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 6 2006, 11:15
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(smk @ Nov 6 2006, 13:48) *
Интересуют оригинальные решения.

Философское...
Вообще-то придумать оригинальное решение в технике практически невозможно.
Все уже давно кем-то придумано, и даже по несколько раз.
Нучиться использовать придуманное - уже не зря жизнь сложилась.
biggrin.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
smk
сообщение Nov 6 2006, 11:32
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Согласен. Хотя, совершенству нет предела. Оригинальность заключается, в данном случае, в способе обеспечить надежную работоспособность устройства.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 7 2006, 13:49
Сообщение #26


Частый гость
**

Группа: Свой
Сообщений: 167
Регистрация: 14-06-06
Из: Рязань
Пользователь №: 18 052



сори за офтоп, подскажите пожалуста почему при компилировании в АВР студио 4.12 проги для меги8, он ругается на строку:
st y+,yh ;
пишет типа:
C:\avr\avtomat\AVT.asm(2121): error: Operands may cause undefined behaviour
Go to the top of the page
 
+Quote Post
klop
сообщение Nov 7 2006, 13:57
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 433
Регистрация: 28-02-06
Пользователь №: 14 788



Цитата(Terapefft @ Nov 7 2006, 16:49) *
сори за офтоп, подскажите пожалуста почему при компилировании в АВР студио 4.12 проги для меги8, он ругается на строку:
st y+,yh ;
пишет типа:
C:\avr\avtomat\AVT.asm(2121): error: Operands may cause undefined behaviour


Очевидно он считает что результат отерации может быть различным Иными словами что будет и по какому адресу сохранится Например
1 high(y) по адресу y
2 high(y+1) по адресу y
и так далее
А вот почему ето error а не warning не знаю
Go to the top of the page
 
+Quote Post
=GM=
сообщение Nov 7 2006, 14:50
Сообщение #28


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Terapefft @ Nov 7 2006, 13:49) *
сори за офтоп, подскажите пожалуста почему при компилировании в АВР студио 4.12 проги для меги8, он ругается на строку:
st y+,yh ;
пишет типа:
C:\avr\avtomat\AVT.asm(2121): error: Operands may cause undefined behaviour

Видимо потому, что во время выполнения атомарной (неделимой) операции yh может измениться из-за наличия переноса из yl.

В документе doc085е (с. 139) указывается, что результат следующих инструкций не определен.
Код
       1.      st  y+,r28
       2.      st  y+,r29
       3.      st  -y,r28
       4.      st  -y,r29


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 8 2006, 05:58
Сообщение #29


Частый гость
**

Группа: Свой
Сообщений: 167
Регистрация: 14-06-06
Из: Рязань
Пользователь №: 18 052



как мне лучше поступить в этой ситуации? подскажите пожалуста
Go to the top of the page
 
+Quote Post
Nanobyte
сообщение Nov 8 2006, 09:49
Сообщение #30


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



Цитата(Terapefft @ Nov 8 2006, 09:58) *
как мне лучше поступить в этой ситуации? подскажите пожалуста

Использовать отдельные команды:
ST Y,YH
ADIW YL,1


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 08:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01707 секунд с 7
ELECTRONIX ©2004-2016