Курс: программирование AVR

 
1 2 3 4 5 6 7 8 9
+
-
edit
 

coolnik

новичок
Привет всем!
Помогите решить такую проблему:
в одной схеме есть две меги169, каждая из которых выполняет свою задачу. Как их программить от одного разъема ISP?
 
UA Tosha_443 #28.09.2004 18:04  @coolnik#28.09.2004 08:16
+
-
edit
 

Tosha_443

втянувшийся
coolnik>Привет всем!
coolnik>Помогите решить такую проблему:
coolnik>в одной схеме есть две меги169, каждая из которых выполняет свою задачу. Как их программить от одного разъема ISP?[»]
похоже никак. на ISP нет адресации микрух. или аппаратно мультиплексором или 2 разьема. но MUX должен быть двунаправленным. т.е. лучше шинные формирователи с CS и хитрый программатор. но если в серию пойдет, то дешевле 2 разьема.

Не ошибается тот, кто ничего не делает  
+
-
edit
 

coolnik

новичок
Tosha_443
жаль...
а если вручную, то может можно оставить один разъем, а на питание МК поставить ключи. Типа: програмлю первый - отключаю питание второго, и наоборот? Я не силен в электронике. Не исказит ли отключенный запараллеленый МК сигналы ISP?

Если нет, то может можно вообще сделать так: параллельно программятся оба контроллера одной прошивкой, в еепроме лежат их номера (первый, второй). Программа считывает номер, и записывает "0" в регистр-защелку, управляющий питанием МК (транзисторный ключ). Он отрубает питание от этого МК и затем программится второй МК, который сам себя не отключил, а затем он включает первый МК.

Может можно сделать проще?
 
Это сообщение редактировалось 29.09.2004 в 10:27
UA Tosha_443 #29.09.2004 13:29  @coolnik#29.09.2004 10:20
+
-
edit
 

Tosha_443

втянувшийся
coolnik>Может можно сделать проще?[»]
в меге169 есть вариант Bootloader. в него надо залить собственно лоадер и потом уже программить вторую мегу. но не пойму, зачем усложнять себе жизнь? если у тебя поток изделий то процы вообще в программаторе шить надо и уже шитые вставлять на место. или 2 разьема. проще не придумаешь.
а если хочется с самопрограммированием поэкспериментировать, то атмел.ру, атмел.ком и AVR ISP Programmer - там это реализовано.
Не ошибается тот, кто ничего не делает  
+
-
edit
 

coolnik

новичок
процы вообще в программаторе шить надо
 

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

атмел.ру, атмел.ком и AVR ISP Programmer
 

- буду просвещаться
 
RU termostat #02.10.2004 20:57
+
-
edit
 

Hobo

новичок
Народ помогите разобратся.
Я читаю с АЦП 24-разрядный код
+Full 7F FF FF
zero 00 00 00
-Full 80 00 00
Дальше мне его надо передать в нормальном 16 разрядном виде (0000..FFFF)
Я делаю следуюшее проверяю старший бит, 0 или 1.
если 0 то просто прибавляю 7FFF.
Если 0 то сначала инвертирую побитно а потом также прибавляю 7FFF.
Но все равно в следующем блоке который читает мои данные какая то хрень.
Младший байт откидываю сразу.
Может надо потом сдвигать на знаковый бит?
 
RU [mike@nmd] #12.10.2004 19:37
+
-
edit
 
Hobo>Я читаю с АЦП 24-разрядный код
а с АЦП точно все корректно передается?
я столкнулся с проблемой:
АЦП TLC1549 - последовательный 12 разрядный.
по протоколу в pdf datasheet обмен стробируется по CLK,
сначала два импульса "стартовых", потом 0 и данные
так вот АЦП начинал выдавать данные на 1 импульс раньше.
то ли я Enable слишком рано вздернул, то-ли что-то еще,
вообщем я битики на 1 сдвинул и все стало хорошо.
З.Ы. с протоколом обмена у TLC1549 все грамотно - он сначала выдает начиная с LSB 12 разрядов, а потом наоборот в сторону уменьшения тоже самое, можно четко контроллировать что протокол обмена прошел правильно
 

Hobo

новичок
уф ... :)
проблема была решена
после долгих воздействий на плату молотком :D
шутка
 
RU Серокой #13.10.2004 11:52
+
-
edit
 

Серокой

координатор
★★★★
Ну так скажите, в чём она была! :)
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  

Hobo

новичок
1. у меня на SPI висели два слайва (какой я дурак)
причем один только отдавал данные, а второй только принимал.
и второй был критичен к количеству принимаемых байт. Разумеется при чтении АЦП(первого слава) - второй славе читал черт знает что.
2. иногда чтение АЦП шло некоректно. После того как нормально начал отслеживать режим DRDY- все встало на места
 
RU termostat #09.12.2004 23:25
+
-
edit
 

termostat

аксакал

Добавил в краткий курс AVR еще 2 здачи-примеры

avr123.nm.ru/avrpic06.htm

задача 06

1) Адаптер для связи вашего МК устройства с COM-портом ПК на MAX232.

и Программы для ПК позволяющие вести, отслеживать и сохранять на жестком диске обмен по COM-портам.

2) Метод отладки вашего устройства - нахождение ошибок программы и "железа" - в программе расставляются тестовые сообщения выводимые через описанный выше адаптер на ПК. Таким образом мы видим в каком месте программы находимся. Можно выводить н ПК значения важных переменных.



Задача 07

"Помнить все! добавляем 2 Мб памяти - быстрой и не стираемой при отключении питания. стоит всего 5 баксов. подключение AT45DB161 к МК AVR по SPI."

Исходники на Си под CodeVisionAVR - с комментариями схемой и примером.
RU Серокой #26.12.2004 14:39
+
-
edit
 

Серокой

координатор
★★★★
Просьба поделиться мнением и опытом, как оживлять новенькую 2313-ю тиньку с помощью AVReal'а. Автору программы не пишу, т.к. у него она помечена звёздочкой, то есть он её сам не тестировал.
Проблема такова: во-первых, непонятно, на какой частоте стартует внутренний осциллятор тиньки. По таблице дефолтных фьюзов получается 4 МГц, а в примечании к таблице 68 в документации написано "The default setting of CKSEL3..0 results in internal RC Oscillator @ 8 MHz". Ну да ладно, это можно решить подбором, но во-вторых ни с 4, ни с 8 МГцами тинька у меня не находится. Когда я вставил в ту же панельку обычную 2313, она нашлась, выдала ошибку, конечно же, но факт тот, что программатор подключен правильно.
Собсвенно, строчка такая, я пытаюсь перевести осциллятор на работу с внешним кварцем:
avreal32.exe +tiny2313 -p1 -ab -o4MHz -fcksel=f -w -v -5 -! -%%
В итоге - "Can't resync". Отсюда вопрос: у кого-либо получалось работать с 2313-й тинькой и какими параметрами командной строки приводить "девственный" чип в нормальное состояние? Отработанная на 26-й тиньке последовательность здесь не работает, просто закрадывается нехорошее чувство, что чип дохлый.
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
RU termostat #26.12.2004 16:22
+
-
edit
 

termostat

аксакал

советую попробовать встроеный програматор CodeVisionAVR (можно и демо версии) и "5 проводков" - подробней описано на стр. 7 моего курса.
RU Серокой #26.12.2004 16:24
+
-
edit
 

Серокой

координатор
★★★★
Я через байт-бластер шью. Этот программатор (CodeVision) поддерживает такое извращение?
Просто я уже лет 5 пользуюсь AVReal'ом, вроде проблем не было. А тут... :(
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  
RU Серокой #28.12.2004 23:56
+
-
edit
 

Серокой

координатор
★★★★
Всё, спасибо автору AVReal Александру Редчуку! "Засада" была в том, что стоял фьюз CKDIV, поэтому внутренний клок делился на 8 и проц не синхронизовался по SPI!
Блин, те, кто делал новые чипы Атмела - просто диверсанты какие-то! :-D
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  

AAS

новичок
Никто не сталкивался
ATMega 8
программирую USART transmitter, дело для меня не новое (на 161, 8535 пробовал уже) вижу в доке что он USART а не UART потоому все делаю прям по кальке.
16MHz внешний резонатор, простенькая программа настраивает USART и пердает "S"
сопряжение с MAX232 скорость 19200. Буква приходит в терминал, что интересно много-много раз. Ощущение что повтороно проходит ресет, проверяю стек инициализировал 045F но как только r16 -> UDR сипец цикл на RESET. Это уже точно так как я поставил изменение ячейки которую потом в USART сливаю и теперь в терминале таблица кодировки ж-), т.е. абсолютно точно вместо того что бы в холостом цикле ждать валится по вектору RESET. Вот прога: приатачил. Это AVR Builder (пробовал стабильную версию и старую и всякую).

Прикреплённые файлы:
 
 

AAS

новичок

Вообщем решил я вопрос ж-)
Честно говоря я подозревал что это вотчдог мне такую подляну подстроил, но как говорится
сердцем чуствуешь, а мозгом соображаешь ж-) FUSE WDTON - по умолчанию включен был, вто так
подляна. Только к 3 ночи дошло, прошу прощения что побеспокоил.
 
AAS> Вообщем решил я вопрос ж-)
AAS> Честно говоря я подозревал что это вотчдог мне такую подляну подстроил, но как говорится
AAS> сердцем чуствуешь, а мозгом соображаешь ж-) FUSE WDTON - по умолчанию включен был, вто так
AAS> подляна. Только к 3 ночи дошло, прошу прощения что побеспокоил. [»]

Здравствуйте!
У немя похожая на Вашу проблема. Когда я программировал UART at90s2313
никаких проблем небыло. А вот теперь стоит задача запрограммировать USART atmega8. Но не тут то было. Программирую я в Algorithm Builder. Например посылаю в USART число и прошу микроконтроллер вернуть мне это число, но возвращается какая-то ерунда. UART at90s2313 возвращает все как надо.
В чем дело? Подскажите.
 
+
-
edit
 

shemmer

новичок
помогите
как подключить клавиатуру 4х4 к ATMEGA16
 

hcube

старожил
★★
Берешь и подключаешь ;-) Если надо чтобы обрабатывалась 1 кнопка - просто матрицу делаешь. Если чтобы несколько - последовательно с каждой кнопкой должен быть диод. Т.е. с одной стороны подаешь бегущий бит, а с другой - смотришь где он появился. Для этого надо применить 8 ножек. Если ножек жалко - то можно уложиться в 5 штук. Если жалко и 5 тоже - то можно в 1. Но меньше точно не получится ;-). Понятно, что чем меньше ножек, тем сложнее обвязка клавиатуры и программирование.

Так, есть обьявление. Я тут покопался в запасах и обнаружил штук 20 ATMega8. Поскольку я пользую мегу16 и производные, я вряд ли их для чего-то применю. Готов продать за половину рыночной цены, а если проект их применения мне понравится - то и вообще отдать даром. Да - корпус - TQFP32.
Убей в себе зомби!  

star

новичок
Пожалуйста помогите. Как мне снаружи записать в порт что-либо.
Я программировал Atmega 8.
Код программы:
.......................
DDRB=0x00;
PORTB=0xff;
while(1)
{
if (PORTB!=0xff)
{
//Делать то-то....
}
}
.......................
что здесь не правильно.
Я пробовал замыкать ноги порта "B" на GND чере резюк 330 ОМ, но реакции на поставленное условие не наблюдалось. :(
 
Это сообщение редактировалось 18.09.2007 в 23:13

hcube

старожил
★★
Входные ножки называются PINB. Тут есть какая штука - PORTB - это ВЫХОДНОЙ регистр. Если включен бит в DDRB - то на внешней ножке устанавливается единица, если нет - не устанавливается. PINB - это ВХОДНОЙ регистр, он отслеживает реальное состояние порта. Так, если ножка посажена на землю, DDRB=1 и PORTB=1 - то на ножке будет 0 и PINB тоже будет равен 0.

Некоторые компиляторы на запись PORTB считают выходным, а на чтение - входным регистром. Но не все.
Убей в себе зомби!  

star

новичок
Спасибо за подсказку, но у меня возник новый вопрос по поводу АЦП.

Подскажите пожалуйста как правильно настроить АЦП и отобразить результаты преобразования на светодиодах, т.е. записать в порт.

Я использовал вот такой код программы в WinAVR для Atmega8:
#include <avr/io.h>
#include <avr/delay.h>
#include <util/delay_basic.h>
#define F_CPU 8000000UL // 8 MHz
unsigned char read_ADC(void){
unsigned char result, i=255;
sbi(ADCSR, ADSC); // запуск преобразования
loop_until_bit_is_set(ADCSR, ADSC); // ждем, пока не будет сброшен бит ADSC
while(i--); // ждем обновления регистра данных
return ADCH; // возвращаем 8 старших разрядов результата
}


int main(void)
{
DDRD = 0xff;
ADCSR = 0x86;
ADMUX = 0X25;
while(1)
{
PORTD = read_ADC();
}
}


что здесь не так, вроде все регистры настроил?

Может быть не правильно подал опорное напряжение. Куда нужно подключать ногу AREF, к VCC что-ли?
 

hcube

старожил
★★
Опять RTFM ;-) Регистры АЦП надо читать ТОЛЬКО парой. Если читается ADCH - то следует выставить битик для повторного запуска преобразования.
Убей в себе зомби!  
1 2 3 4 5 6 7 8 9

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru