| Автор |
Съобщение |
|
tiger
Ранг: Минаващ
Регистриран на: Нед Мар 04, 2007 10:21 pm Мнения: 70
|
 Проблем при програмиране на атмега16
Имам програматор на понипрог. Аз съм си го правил. Някъде от 1 година програмирам с него, но не много редовно. Снощи си играех с rs връзка и сменях буксите - ту да налея програмата, ту да я пробвам как комуникира(имам само 1 порт на PC-то). И изведнъж докато наливах ми даде, че устройството не може да бъде намерено или е непознато. Днес проверих връзките на програматора, свалих транзистора и диодите и ги проверих и тях - работят. Възможно ли е да се е повредил контролера? КОгато това стана си играех с fuse регистрите (ако не се лъжа) и по-точно CKSEL3:0. Има ли някаква особеност при работата с тях - в смисъл може ли от това да съм прецакал нещо и да не иска да се свърже сега?
Някакви съвети да разбера къде е проблема
ПП: това е програматора ми http://www.lancos.com/e2p/si-prog-v2_2.pdf
|
| Съб Мар 22, 2008 12:03 am |
|
 |
|
vankata
Ранг: Минаващ
Регистриран на: Пет Юли 13, 2007 10:19 am Мнения: 52 Местоположение: Хасково
|
Тази тема май е за академия. Свали си даташита на атмега16 и виж как се прави външен RC генератор.Навържи си един и си оправи фузовете. Най-вероятно това ти е проблема. На това се казва да си отрежеш клона на, който седиш . 
|
| Съб Мар 22, 2008 12:41 pm |
|
 |
|
3aek
Ранг: Форумен бог
Регистриран на: Вто Яну 10, 2006 2:40 pm Мнения: 2258
|
то AVR-ите с това са извесни, като запишеш грешни fuses и заключваш процесора после само с външен клок го оправяш
|
| Съб Мар 22, 2008 1:59 pm |
|
 |
|
tiger
Ранг: Минаващ
Регистриран на: Нед Мар 04, 2007 10:21 pm Мнения: 70
|
Не знаех, че е токова опасно да си играя там
Имам кварц 4 М и исках него да го пусна, но не бях сигурен точно какви стойности да задам на 4-те бита и налучквах. Сега не мога да оправя фузовете, защото като дам да прочете/запише нещо ми дава, че не намира устройство или то е непознато.
Има ли начин да го оправя?
|
| Съб Мар 22, 2008 10:35 pm |
|
 |
|
Tanev
Ранг: Новодошъл
Регистриран на: Нед Юли 02, 2006 10:27 pm Мнения: 152 Местоположение: Пловдив
|
И аз бях направил същата издънка  То май найстина AVR-ите се славят с това
На 25 страница от даташийта има описание на фюз битовете за генератора.
На 31 страница има описано как се включва външен генератор.
Трябва да си сглобиш един ТТл генератор на 1 мегахерц, да подадеш тази честота на XTAL1 и тогава чак да четеш/записваш.
Поздрави!
|
| Пон Мар 24, 2008 12:08 pm |
|
 |
|
vankata
Ранг: Минаващ
Регистриран на: Пет Юли 13, 2007 10:19 am Мнения: 52 Местоположение: Хасково
|
Ето ти един линк с пищов за мързеливо избиране на фузовете
http://palmavr.sourceforge.net/cgi-bin/ ... P=ATmega16
|
| Пон Мар 24, 2008 12:42 pm |
|
 |
|
tiger
Ранг: Минаващ
Регистриран на: Нед Мар 04, 2007 10:21 pm Мнения: 70
|
Това го намерих, но късно
Зачетох няколко теми на английски и там хората пускат 2-ри контролер да генерира сигнала, та и аз съм се запътил на там, само че пише, че се програмира в ISP mode, а не знам дали моя програматор е такъв. Ето го http://www.lancos.com/e2p/si-prog-v2_2.pdf , А да махна ли кварца от XTAL1, когато подам сигнала от генератора?
|
| Пон Мар 24, 2008 7:49 pm |
|
 |
|
vankata
Ранг: Минаващ
Регистриран на: Пет Юли 13, 2007 10:19 am Мнения: 52 Местоположение: Хасково
|
Ами като си го направил тоя програматор от сайта дето го даваш , не можа ли да се разгледаш в същият този сайт и да видиш примерно това:
http://www.lancos.com/prog.html#avrisp
Същата модификация се казава STK200 и като я напишеш в гугала излиза на много места, ще се учудиш колко по-бързо работи от стандарния SI-Prog 2.2 дето си го направил за серийния порт .
|
| Вто Мар 25, 2008 12:51 am |
|
 |
|
tiger
Ранг: Минаващ
Регистриран на: Нед Мар 04, 2007 10:21 pm Мнения: 70
|
Видях го, но като не знам моя какъв е защо да се бутам да правя друг? Е щом е нужно ще го направя, а и щом казваш, че работи по-бързо
Благодаря
А този извод от къде идва?
|
| Вто Мар 25, 2008 8:28 am |
|
 |
|
Cvetanov
Ранг: Новодошъл
Регистриран на: Пон Фев 21, 2005 2:14 pm Мнения: 191 Местоположение: Varna
|
корпуса на буксата
_________________ Шанс едно на милион, обикновено се случва девет от десет пъти.
|
| Вто Мар 25, 2008 8:36 am |
|
 |
|
tiger
Ранг: Минаващ
Регистриран на: Нед Мар 04, 2007 10:21 pm Мнения: 70
|
Направих този програматор - чудо тръгна ми от 1-вия път, но дотък с добрите новини.
Сега имам и 2-ра атмега (работеща). Намерих код как да генерирам честота 1 МHz с работещия и да я пуска към XTAL1 на неработещия. Ето го
Но мултицета ми измерва 8.58КHz. Опитвах разни мои кодове, но без успех, а и няма как да измеря честотата при тях, защото мултицета ми мери до 20К.
Според фусе битовете атмегата работи на 1МHz.
ПП: Наистина този програматор работи по-бързо 
|
| Пет Мар 28, 2008 10:36 pm |
|
 |
|
tiger
Ранг: Минаващ
Регистриран на: Нед Мар 04, 2007 10:21 pm Мнения: 70
|
Стана!!!! Съживих гооо.
Значи настроих работещия на 8 MHz, но с онзи пищов, който ми предложих по горе, че не исках да си има 2 неработещи меги. И карах по логиката: ако на 1 такт порта е 1 на следващия е 0 => 2 такта за 1 импулс => трябва да го накарам да прави нещо 3 такта и на 4-тия да преобръщам стойността. Направих това: . Да ама не... Викам си явно операциите искат повече такта - ще ги намалям, пък дано стане. И тук стана:
Благодаря на всички ви за отговорите
|
| Съб Мар 29, 2008 12:40 am |
|
 |
|
bobyk
Ранг: Ориентиран
Регистриран на: Пон Яну 09, 2006 11:32 am Мнения: 276 Местоположение: Kozloduy
|
Извинявай ама ти май на всеки ред написан код, правиш по десет реда коментар из форума, с това темпо ...
|
| Съб Мар 29, 2008 11:35 pm |
|
 |
|
tiger
Ранг: Минаващ
Регистриран на: Нед Мар 04, 2007 10:21 pm Мнения: 70
|
Ами като нещо не е наред искам помощ, а когато стане не виждам какъв е проблема да напиша как е станало и когато някой има същия проблем да види как се оправя
|
| Съб Мар 29, 2008 11:52 pm |
|
 |
|
VSU
Ранг: Напреднал
Регистриран на: Нед Авг 14, 2005 1:08 pm Мнения: 433 Местоположение: Казанлък
|
тигърче вместо да пишеш код който и ти не си разбираш не е ли по добре да напишеш
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();
}
|
| Пон Мар 31, 2008 12:31 am |
|
|