Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: да что же я не так делаю? mega64 и 128
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2
Rst7
А что у Вас там на PEN за деталька? Попробуйте выбросить ее, оставьте ножку в воздухе. И, на всякий случай, позаливайте припоем переходы со стороны на сторону по питанию...
aesok
У меня к Вам вопросик:

Почему вы не пользуетесь стандартной библиотекой, стартап файлом, скриптом линкера а пишете все это свое?

Анатолий.
brag
Цитата
пробовали ресет подтягивать к Vcc?
конечно
Цитата
А что у Вас там на PEN за деталька? Попробуйте выбросить ее, оставьте ножку в воздухе.

Стоял резистор на вцц, потом выкинул его.
Делал так. и сяк..не помогло.
Цитата
И, на всякий случай, позаливайте припоем переходы со стороны на сторону по питанию...
Там у меня медные заклепки

Цитата
Почему вы не пользуетесь стандартной библиотекой, стартап файлом, скриптом линкера а пишете все это свое?

Не люблю таких вещей. я сам обслуживаю прерывания, с самого корня и тп.
и в конце концов,что,сихный маин тяжело запустить? smile.gif
Стандартными функциями иногда пользуюсь,но никак не стартапами и секциями. тут я люблю полный контроль. и еще люблю на ассемблере прописывать те процедуры,которые надо. но это уже под ARM. там приятный асм.
Rst7
Цитата
Там у меня медные заклепки


Вы уверены, что там хороший контакт? Чудес просто на свете не бывает... Пробовали, кстати, смотреть осциллографом, что на питании происходит при старте?
aesok
Цитата(brag @ Feb 19 2008, 13:35) *
Цитата
Почему вы не пользуетесь стандартной библиотекой, стартап файлом, скриптом линкера а пишете все это свое?

Не люблю таких вещей. я сам обслуживаю прерывания, с самого корня и тп.
и в конце концов,что,сихный маин тяжело запустить? smile.gif



Любить не любить это ваше личное дело, но если Вы пишете свой стартап файл потрудидесь выяснить что он должен делать обязательно. Вы что думаете инструкция 'clr __zero_reg__' находиться в стандартном стартап файле, только для того чтобы лишить вас самого ценного, двух байт флеш?

main кстати не так просто пускать, для старых версий компилятора надо использовать не CALL, а JMP.

Анатолий.
brag
я ее специально туда не вписал. я юзаю call, и запускаю cmain,вместо main. smile.gif
А потом выход в вечный sleep....

Цитата
Вы уверены, что там хороший контакт?

Да.
Осцом смотрел,ничего там нету

И вобще,я использую C для упрощения написания алгоритмов, но никак не как среду разработки.
aesok
Цитата(brag @ Feb 19 2008, 19:18) *
я ее специально туда не вписал. .....


Это Вы о 'clr __zero_reg__'. А какие еще у вас были причины "специально" не вписавать эту команду в свой стартап, конечно окрамя того что в avr-libc ее вписал полный кретин?

Анатолий.
brag
не,я обо всем.
А не вписал, тк не нужно былоsmile.gif понадобится - впишу smile.gif

вобше я не рассматривал сильно
стандартные файлы
brag
МК стартует, если отпаять avdd, подать питание, и пощелкать ногой AVDD на землю,на VDD. Мк тогда стартонет. значит глючит аналоговая часть... что посоветываете?
Baser
Проверьте еще сигналы, которые приходят на аналоговые ножки, да и на все другие тоже. Нет ли там выхода за границы GND и VCC. А то может перекашивать кристалл. Да и проверять лучше не с самопальной программой, а с какой-нибудь тестовой из поставки компилятора. Типа стандартный стартап и мигание светодиодом.

Больше мыслей нет, с таким никогда не сталкивался laughing.gif
brag
да какая разница,какая программа, если девайс работает ? когда его запустишь, он работает, как часы.
Может там какие-то щелчки на ногах проскакивают, когда питалово подаешь.только от куда им братся? надо осцил запоминающий сварганиь, тогда мож что-то и увижу...
GDI
Цитата
надо осцил запоминающий сварганиь, тогда мож что-то и увижу...

По моему все же проще и быстрее попробовать стандартный пример от поставщиков компилятора. Если есть проблема, то надо исключать возможные проблемные места, а не множить их... ваш собственный стартап может являться такой проблемой, даже если в других приложениях он и работает.
VladimirYU
Цитата(GDI @ Feb 26 2008, 10:14) *
По моему все же проще и быстрее попробовать стандартный пример от поставщиков компилятора. Если есть проблема, то надо исключать возможные проблемные места, а не множить их... ваш собственный стартап может являться такой проблемой, даже если в других приложениях он и работает.

+1. Разработчики компилятора тоже не плохо разбираются в предмете. Поэтому ИМХО в 99,99% случаев нет необходимост править штатный стартап.
brag
вы опять за свое... smile.gif не работает ЖЕЛЕЗО, а не софт.
aesok
Цитата(brag @ Feb 26 2008, 19:54) *
вы опять за свое... smile.gif не работает ЖЕЛЕЗО, а не софт.


софт точно не рабочий, а начет железа не спорю, возможно Вы и правы.


avr-libc-user-manual, FAQ #13, What registers are used by the C compiler?

Цитата
r1 - assumed to be always zero in any C code, may be used to remember something for a while within one piece of assembler code, but must then be cleared after use (clr r1). This includes any use of the [f]mul[s[u]] instructions, which return their result in r1:r0. Interrupt handlers save and clear r1 on entry, and restore r1 on exit (in case it was non-zero).

Анатоий.
Baser
Если мне не изменяет память, то ИАР в своем стартапе как раз использует зеро-регистр для инициализации переменных. А если проинициализировать все переменные случайной величиной (различной при каждом включении), то похожие глюки и могут происходить cool.gif
brag
это avr-LIBC-user-manual. а у нас libc не используется. повторяю, девайс работает на реальной машине и уже отлажен. r1 у меня используется, как нормальный регистр для расчетов.. компиллер - gcc
mdmitry
Цитата(brag @ Feb 27 2008, 03:23) *
это avr-LIBC-user-manual. а у нас libc не используется. повторяю, девайс работает на реальной машине и уже отлажен. r1 у меня используется, как нормальный регистр для расчетов.. компиллер - gcc

В AVR Libc указано:
Код
Typically, it should be save to use r2 through r7 that way.

Registers r8 through r15 can be used for argument passing by the compiler in case many or long arguments are being passed to callees. If this is not the case throughout the entire application, these registers could be used for register variables as well.
brag
Typically
brag
сегодня сварганил новую платку, вместо атмеги всунул lpc2131. работает, как часики, да и производительность раз в 16 возросла, и красивее стало - люблю LQFP wink.gif
aesok
Цитата(brag @ Feb 27 2008, 03:23) *
это avr-LIBC-user-manual. а у нас libc не используется. повторяю, девайс работает на реальной машине и уже отлажен. r1 у меня используется, как нормальный регистр для расчетов.. компиллер - gcc


Звучит как анедот.

Перевожу Вам фразу "r1 - assumed to be always zero in any C code,..." на русский:
r1 - предпологаеться что всегда содержит ноль в любом С коде. avr-gcc генерирует код котрый предпологает что региср r1 (он же __zero_reg__) содержит 0.

Например, для этого С кода:
Код
volatile unsigned int i = 1;
volatile unsigned char b = 1;
int
main (void)
{
  i = i + b;
  return 0;
}

бедет сгенерирован ассемблерный код
Код
....
    add r24,r18;  8    *addhi3_zero_extend    [length = 2]
    adc r25,__zero_reg__
....


И чему будет равно i если в регистр r1 записано чтото отличное от нуля?

Анатолий.
brag
анекдот про дядька Мыкыта smile.gif))
такие преобразования я не использую, разве что,если никак иначе,.. и то стараюсь обойти.
Если i int, то и b тож int...
aesok
Цитата(brag @ Feb 28 2008, 00:19) *
анекдот про дядька Мыкыта smile.gif))


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

Мне просто жалко времени людей которые пытались Вым помочь. И своего времени. Я его больше на Вас не трачу.

Анатолий.
brag
да что вы так... простите, если получилось так, что вас обидел.. просто дело не в софте, тк я использую нестандартные решения..
вчера возился с шимом(регулировка контрастности). достал свой осцил цифровой, начал анализировать.. сделал шим, думаю, дай ткну его в ту плату с атмегой.. оказывается, при включении атмега почему-то потребляет ток около 300ма! по ногam dvdd. при чем бросок всегда разный, но кратковременный, где-то 500-1000нс. Сразу заменил стабилизатор LM1117-5 на LF50. Запускатся стало увереннее. Поставил кондер на 10u тантал. Далее разрезал дорожку и втыкнул такую цепочку. теперь запускается всегда smile.gif
Rst7
Цитата
достал свой осцил цифровой, начал анализировать..


А я давно предлагал. Но все равно, 300ма при включении - это что-то многовато. Предлагаю копать дальше.
brag
длительностю 500-1000нс по 2мегагерцовому осцилографу на шунте 1ом 0603
Цитата
А я давно предлагал

Я тыкал обычным аналоговым,а там такие вещи не заметишь.

покопаем на досуге. в серию все равно пойдет плата на LPC2131
Сергей Борщ
Цитата(brag @ Feb 28 2008, 09:06) *
оказывается, при включении атмега почему-то потребляет ток около 300ма! по ногam dvdd.
В конце концов выяснится, что какие-то из ног питания или земли оставлены в воздухе или на какие-то из входов до включения питания подается напряжение без ограничения тока и возникает тиристорный эффект.
brag
не,ноги не в воздухе. там все четко. а вот по ограничению тока и тирристорном эффекте -согласен. я так и думал, что это именно он

но входы не подключены напрямую к питалову. и ток там максимум 1ма
aesok
Цитата(brag @ Feb 28 2008, 10:06) *
... атмега почему-то потребляет ток около 300ма!


А вот такой код вы случайно никогда не писали:
Код
#include <avr/io.h>
#include <avr/pgmspace.h>

#include "device.h"
#include "inithw.h"
//#include "bus.h"

void init0(void){
  // ports
    PORTA=0x00;
    DDRA=0x00;
...


листинг хотите взглянуть?

Код
    PORTA=0x00;
  ce:    1b ba           out    0x1b, r1; 27
    DDRA=0x00;
  d0:    1a ba           out    0x1a, r1; 26


Вопос: какой ток потребления будет у устройства если в регистре r1 при включении питания записалось число 0xAA и он не обнулен в стартапе?

Ответ: 300ма.

Анатолий.
brag
смотрел. там то, что вы написали. но почему 300ма?
r1 в загрузке секций обнуляется, по ходу.
Baser
Вот до чего упрямый вы человек!
Вам же предлагали не раз: проверьте работу платы на стандартном тестовом примерчике. Снимите ту же осциллограмму. Будет с чем сравнивать!
А то уперлись: "Моя программа работает хорошо, потому что это так. И проверять не буду!" sad.gif
brag
тестовый пример.
Код
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
ldi r17,0xFF
out PORTA,r17
out DDRA,r17
jmp 0

Так на ногах появляется 1.
А если nop-ов штук 100 или записать что-то в стек(именно через SP), тогда дело до установки порта в 1 не доходит.
Проверял еще на самом начале,до того,как писать в форум.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.