Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Проблем при програмиране на атмега16
http://mcu-bg.com/mcu_site/viewtopic.php?f=2&t=5624
Страница 1 от 2

Автор:  tiger [ Съб Мар 22, 2008 12:03 am ]
Заглавие:  Проблем при програмиране на атмега16

Имам програматор на понипрог. Аз съм си го правил. Някъде от 1 година програмирам с него, но не много редовно. Снощи си играех с rs връзка и сменях буксите - ту да налея програмата, ту да я пробвам как комуникира(имам само 1 порт на PC-то). И изведнъж докато наливах ми даде, че устройството не може да бъде намерено или е непознато. Днес проверих връзките на програматора, свалих транзистора и диодите и ги проверих и тях - работят. Възможно ли е да се е повредил контролера? КОгато това стана си играех с fuse регистрите (ако не се лъжа) и по-точно CKSEL3:0. Има ли някаква особеност при работата с тях - в смисъл може ли от това да съм прецакал нещо и да не иска да се свърже сега?
Някакви съвети да разбера къде е проблема

ПП: това е програматора ми http://www.lancos.com/e2p/si-prog-v2_2.pdf

Автор:  vankata [ Съб Мар 22, 2008 12:41 pm ]
Заглавие: 

Тази тема май е за академия. Свали си даташита на атмега16 и виж как се прави външен RC генератор.Навържи си един и си оправи фузовете. Най-вероятно това ти е проблема. На това се казва да си отрежеш клона на, който седиш . ;)

Автор:  3aek [ Съб Мар 22, 2008 1:59 pm ]
Заглавие: 

то AVR-ите с това са извесни, като запишеш грешни fuses и заключваш процесора после само с външен клок го оправяш

Автор:  tiger [ Съб Мар 22, 2008 10:35 pm ]
Заглавие: 

3aek написа:
то AVR-ите с това са извесни, като запишеш грешни fuses и заключваш процесора после само с външен клок го оправяш

Не знаех, че е токова опасно да си играя там :oops:


vankata написа:
Тази тема май е за академия. Свали си даташита на атмега16 и виж как се прави външен RC генератор.Навържи си един и си оправи фузовете. Най-вероятно това ти е проблема. На това се казва да си отрежеш клона на, който седиш . ;)

Имам кварц 4 М и исках него да го пусна, но не бях сигурен точно какви стойности да задам на 4-те бита и налучквах. Сега не мога да оправя фузовете, защото като дам да прочете/запише нещо ми дава, че не намира устройство или то е непознато.
Има ли начин да го оправя?

Автор:  Tanev [ Пон Мар 24, 2008 12:08 pm ]
Заглавие: 

И аз бях направил същата издънка :weedman: То май найстина AVR-ите се славят с това :D

На 25 страница от даташийта има описание на фюз битовете за генератора.
На 31 страница има описано как се включва външен генератор.
Трябва да си сглобиш един ТТл генератор на 1 мегахерц, да подадеш тази честота на XTAL1 и тогава чак да четеш/записваш.

Поздрави!

Автор:  vankata [ Пон Мар 24, 2008 12:42 pm ]
Заглавие: 

Ето ти един линк с пищов за мързеливо избиране на фузовете ;)
http://palmavr.sourceforge.net/cgi-bin/ ... P=ATmega16

Автор:  tiger [ Пон Мар 24, 2008 7:49 pm ]
Заглавие: 

vankata написа:
Ето ти един линк с пищов за мързеливо избиране на фузовете ;)
http://palmavr.sourceforge.net/cgi-bin/ ... P=ATmega16

Това го намерих, но късно
Tanev написа:
Трябва да си сглобиш един ТТл генератор на 1 мегахерц, да подадеш тази честота на XTAL1 и тогава чак да четеш/записваш.

Зачетох няколко теми на английски и там хората пускат 2-ри контролер да генерира сигнала, та и аз съм се запътил на там, само че пише, че се програмира в ISP mode, а не знам дали моя програматор е такъв. Ето го http://www.lancos.com/e2p/si-prog-v2_2.pdf , А да махна ли кварца от XTAL1, когато подам сигнала от генератора?

Автор:  vankata [ Вто Мар 25, 2008 12:51 am ]
Заглавие: 

Ами като си го направил тоя програматор от сайта дето го даваш , не можа ли да се разгледаш в същият този сайт и да видиш примерно това:
http://www.lancos.com/prog.html#avrisp
Същата модификация се казава STK200 и като я напишеш в гугала излиза на много места, ще се учудиш колко по-бързо работи от стандарния SI-Prog 2.2 дето си го направил за серийния порт .

Автор:  tiger [ Вто Мар 25, 2008 8:28 am ]
Заглавие: 

Видях го, но като не знам моя какъв е защо да се бутам да правя друг? Е щом е нужно ще го направя, а и щом казваш, че работи по-бързо
Благодаря

А този извод от къде идва?

Прикачени файлове:
untitled.PNG
untitled.PNG [ 7.72 KiB | Прегледано 3869 пъти ]

Автор:  Cvetanov [ Вто Мар 25, 2008 8:36 am ]
Заглавие: 

корпуса на буксата

Автор:  tiger [ Пет Мар 28, 2008 10:36 pm ]
Заглавие: 

Направих този програматор - чудо тръгна ми от 1-вия път, но дотък с добрите новини.
Сега имам и 2-ра атмега (работеща). Намерих код как да генерирам честота 1 МHz с работещия и да я пуска към XTAL1 на неработещия. Ето го
Код:
.include "m16def.inc"

.cseg
.org    0x00
rjmp   main


main:
      ldi      r16,0xFF
      out      DDRD,r16

loop1:
      cpi      r17,0x08
      breq    loop2
      ldi      r16,0xff;
      out    PORTD,r16
      inc      r17
      rjmp   loop1

loop2:
      cpi    r17,0x00
      breq    loop1
      ldi      r16,0x00
      out      PORTD,r16
      dec      r17
      rjmp    loop2 


Но мултицета ми измерва 8.58КHz. Опитвах разни мои кодове, но без успех, а и няма как да измеря честотата при тях, защото мултицета ми мери до 20К.
Според фусе битовете атмегата работи на 1МHz.

ПП: Наистина този програматор работи по-бързо ;)

Автор:  tiger [ Съб Мар 29, 2008 12:40 am ]
Заглавие: 

Стана!!!! Съживих гооо.
Значи настроих работещия на 8 MHz, но с онзи пищов, който ми предложих по горе, че не исках да си има 2 неработещи меги. И карах по логиката: ако на 1 такт порта е 1 на следващия е 0 => 2 такта за 1 импулс => трябва да го накарам да прави нещо 3 такта и на 4-тия да преобръщам стойността. Направих това:
Код:
   while(1)
   {
      PORTD = PORTD;
      PORTD = PORTD;
      PORTD = PORTD;
      PORTD = ~PORTD;
   }
. Да ама не... Викам си явно операциите искат повече такта - ще ги намалям, пък дано стане. И тук стана:
Код:
   while(1)
   {
      PORTD = PORTD;
      PORTD = ~PORTD;
   }


Благодаря на всички ви за отговорите

Автор:  bobyk [ Съб Мар 29, 2008 11:35 pm ]
Заглавие: 

Извинявай ама ти май на всеки ред написан код, правиш по десет реда коментар из форума, с това темпо ...

Автор:  tiger [ Съб Мар 29, 2008 11:52 pm ]
Заглавие: 

bobyk написа:
Извинявай ама ти май на всеки ред написан код, правиш по десет реда коментар из форума, с това темпо ...

Ами като нещо не е наред искам помощ, а когато стане не виждам какъв е проблема да напиша как е станало и когато някой има същия проблем да види как се оправя

Автор:  VSU [ Пон Мар 31, 2008 12:31 am ]
Заглавие: 

тигърче вместо да пишеш код който и ти не си разбираш не е ли по добре да напишеш


PORTD = 0;

while(1)
{
PORTD ^= 0xff;
}

и айде да обесниш идеята от

PORTD = PORTD ; то не е ли и без това равно
като искаш закъснение от 1 такт не можеш ли да напишеш

nop();
или там както ти се пише в компилатора

например

while(1)
{
PORTD ^= 0xff;
nop();
nop();
}

or

while(1)
{
PORTD = 0xff;
nop();
PORTD = 0x00;
nop();
}

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/