Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Микроконтроллеры для начинающих
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Страницы: 1, 2, 3, 4, 5
SKov
Цитата(Claw @ Mar 22 2011, 18:39) *
А зачем нужен предварительный делитель?

Вам надо почитать какую-нибудь литературу на русском.
Суда по вашим вопросам, читать даташиты на английском пока рано.
Посмотрите, например, вот это.
Claw
А если мы,к примеру, запрограммировали порт B на вход,там получается в битах стоят единицы, а когда мы нажимаем кнопку, подключенную к этому входу, что изменяется?в этот бит записывается 0?просто непонятно как проверить состояние входов при нажатой кнопке 05.gif
ViKo
Цитата(Claw @ Mar 26 2011, 23:03) *
просто непонятно как проверить состояние входов при нажатой кнопке

Прочитать порт.
Можно читать периодически, по прерыванию от таймера, например. Сравнивать с прошлым, запомненным. Находить изменение, и так определять кнопку.
Можно настроить прерывание по изменению состояния порта, и по этому прерыванию прочитать новое состояние.
Claw
А какой командой можно проверить весь байт на наличие к примеру 1?что-то наподобие команды BTFSS f,b?
Марк_Я
XOR - исключающее ИЛИ
При совпадении разряда переменной и маски в этом разряде результата будет 0, а при несовпадении - 1
Claw
можно сделать так, чтобы команда btfss f,b(проверяет бит b в регистре f и пропускает следующиую команду, если результат 1) пропускала при выполнении условия не одну команду, а несколько,заданное количество?
Сергей Борщ
QUOTE (Claw @ Apr 19 2011, 15:30) *
можно сделать так, чтобы команда btfss f,b(проверяет бит b в регистре f и пропускает следующиую команду, если результат 1) пропускала при выполнении условия не одну команду, а несколько,заданное количество?
Нет, нельзя. Но можно использовать команду btfsc f,b которая будет пропускать следующую команду goto, которая, в свою очередь, "пропускает не одну команду, а несколько,заданное количество".
Claw
MOVLW B'11111111'
MOVWF TRISC;
....
....
....

MOVLW B'11111111'
XORWF PORTC,0
BTFSC STATUS,Z
NOP
BSF PORTB,0


Последний кусочек кода делает:
1.пересылает константу в аккумулятор
2.сравнивает константу с состоянием битов в порте С,сохраняет результат в аккумуляторе и меняет(не меняет) состояние флага Z
3.если значение флага Z=0(нашлось различие в битах между сравниваемыми регистрами),то устанавливаем нулевой бит в порте B и далее по кругу,если нет,то задержка
Я правильно понимаю?Просто программа у меня по "моей логике" не работает,значит я понимаю может быть не совсем правильно или совсем неправильно...помогите blush.gif
нечитатель
Цитата(Claw @ Apr 20 2011, 00:10) *
3.если значение флага Z=0(нашлось различие в битах между сравниваемыми регистрами),то устанавливаем нулевой бит в порте B
... а если Z=1, то ничего не делаем, а потом точно так же устанавливаем нулевой бит в порте B. Просто задержка, да.
Очень маленькая такая задержечка... чем наблюдается она, как выяснено "не работает?"
Цитата
и далее по кругу
прописать "по кругу" * надо в программе, а не на форуме.

* любая программа должна так или иначе бесконечно зацикливаться в любом случае.
(не спящий) процессор всегда выполняет какую-то инструкцию; "всё сделать и остановиться" нельзя.
это мало ли вдруг.
Claw
а как реализуется задержка с помощью tmr0?может есть какие-нибудь примеры на асме?
tzirulnicov
MCC18 бесплатная версия. Начинаю изучать Си под пики. Не понимаю как пользоваться строковыми функциями и ф-ями вида memst().

include "p18f14k50.h"
#include "string.h"
unsigned char RS232_Out_Data[15]="45a0";
void main(void)
{
memset(RS232_Out_Data, '\0', 15);
strcpy(RS232_Out_Data,"543");
RS232_Out_Data[0]='4';
RS232_Out_Data[1]='5';
RS232_Out_Data[0]='\0';
}

- почему memset вначале забивает все нулями, а потом снова возвращает все как было? Почему strcpy ничего не копирует в RS232_Out_Data ? Посимвольное копирование (4,5,\0) - работает нормально.
Qb1024
Хочу начать знакомится с контролерами, уже есть ATmega8A, всвязи с чем возникли вопросы:
1) Можно ли ипользовать программатор Громова для прошивки?
2) Где найти уроки со схемами и написанием кода для мигания светодиодами и более сложными задачами?
ILYAUL
Цитата(Qb1024 @ Jul 24 2011, 14:48) *
Хочу начать знакомится с контролерами, уже есть ATmega8A, всвязи с чем возникли вопросы:
1) Можно ли ипользовать программатор Громова для прошивки?
2) Где найти уроки со схемами и написанием кода для мигания светодиодами и более сложными задачами?

В книгах например:

Вольфганг Трамперт "AVR-RISC микроконтроллеры"
Джон Мортан " Микроконтроллеры AVR"

Наберите в инете Самоучитель по AVR
paskal
Цитата(Qb1024 @ Jul 24 2011, 14:48) *
1) Можно ли ипользовать программатор Громова для прошивки?

Есть знакомые, которые использовали программатор Громова для LPT и пожгли порт этим программатором. Соединять напрямую пины LPT и целевое устройство это слишком рискованно. Надо чтоб хоть буфер был как у байтбластера. Для нормальной работы можно пользоваться байтбластер + софт AVREAL.
mig-11101
Цитата(Qb1024 @ Jul 24 2011, 13:48) *
Хочу начать знакомится с контролерами, уже есть ATmega8A, всвязи с чем возникли вопросы:
1) Можно ли ипользовать программатор Громова для прошивки?
2) Где найти уроки со схемами и написанием кода для мигания светодиодами и более сложными задачами?


1. Можно, но имхо лучше попробуйте через COM порт. http://easyelectronics.ru/avr-shag-pervyj-programmator.html Вот к примеру - элементарное решение через COM.
2. Для ассамблера есть внятные уроки здесь - http://radiokot.ru/start/mcu_fpga/avr/. Там уроки не для atmega8a, но суть это не меняет, проблем не должно возникнуть.
Игорь Кочет
Подскажите, как в TMR1 перенести число из int переменной ?

из С в дизасемблере выглядит так :

TMR1H:TMR1L=T_next;

Код
  00E7    0879     MOVF 0x79, W
  00E8    008E     MOVWF 0xe


т.е переносится 1 байт.

UPD. так что ли ?:

TMR1L=T_next;
TMR1H=T_next>>8;


Код
144:                   TMR1L=T_next;
  00E7    0879     MOVF 0x79, W
  00E8    008E     MOVWF 0xe
145:                   TMR1H=T_next>>8;
  00E9    087A     MOVF 0x7a, W
  00EA    008F     MOVWF 0xf
maksimp
Цитата(Игорь Кочет @ Nov 21 2011, 12:57) *
TMR1H:TMR1L=T_next;

Такого присваивания в языке C нет.
Здесь получилось что TMR1H определилась как метка для оператора goto, а присваивание только TMR1L=T_next;
Цитата(Игорь Кочет @ Nov 21 2011, 12:57) *
TMR1L=T_next;
TMR1H=T_next>>8;

Да.
Araxnid
Уже во всем разобрался, пичаль с смыслом команд, использовал лоад вместо sts и наоборот =\
Vladimir_Sn
Здравствуйте!
Посмотрите пожалуйста пид регулятор. Написал его на микоС, этот язык только начал осваивать, раньше асм использовал. Пишу для PIC16877A.
Я думаю с ПИДом может возникнуть много заморочек, прошу откликнуться. Ваши комментарии.
//**************** PID *******************************************************
delta_0 = setpoint - Vout; // vi4islenie o6ibki = zadannoe zna4enie - tekuchee
prop_res = delta_0 * Kp; // proporcion-ya sost-ya = o6ibka * Kp

dif_res = (delta_1 - delta_0) * Kd; // prediduchaya o6ibka - tekuchaya o6ibka
// mnozennoe na Kd eto est' diff-ya sost-ya
delta_1 = delta_0; // teper' tekuchaja o6ibka v sledujuchem
// cikle budet prediduchej o6ibkoj
int_res += Ki * delta_0; // integral'naja sostavlyajuchaya summiruet
// vse o6ibki, mnozennie na koefficient Ki
if (int_res > int_max) // esli integr-ya sost-ya too big, togda ograni4ivaju
int_res = int_max; // ee dal'nej6ij rost na urovne int_max
else if (int_res < int_min) // esli integr-ya sost-ya too small, togda ograni4ivaju
int_res = int_min; // ee dal'nej6ee umen'6enie na urovne int_min

control = int_res + dif_res + prop_res; // control eto upravlyajuchee
// vozdejst-e soderz i,d,p sost-e
if (control > control_max) // esli control too big, togda ograni4ivaju
control = control_max; // ego dal'nej6ij rost na urovne control_max
else if (control < control_min) // esli control too small, togda ograni4ivaju
control = control_min; // ego dal'nej6ee umen'6enie na urovne control_min
// teper' peremenneya control soderzit upravlyajuchee vozdejstvie, kotoroe
// trebuetsya otpravit' v module PWM.
//****************************************************************************
nick60
Доброго времени суток.
Не знаю куда постучаться, начну отсюда, а там куда вывезет ...
Начал что-то делать с AVR-ами, у меня их целых (пока) 2 шт. tiny2313 и mega8, одна mega8 сгорела не выдержав directly подключения
светодиодного индикатора, теперь - только через ограничивающие резисторы.
Повторил несколько чужих конструкций, на стенде, громко сказал sm.gif, и в реале.
Пора начать делать что-то своё.

Вопросов несколько :
1.Как подружиться с AVR Studio 4.18.716 и WinAVR-20100110, не смог скомпилировать ни одного проекта - ошибка
make: *** [termom8.o] Error -1073741819
когда есть синтаксические ошибки, всё выдает адекватно, а когда всё исправишь - ошибка.
Работаю под WinXP, SET переменные установлены правильно, имена файлов/каталогов - 8.3
2.В CodeVisionAVR (пока работаю в нем) есть "волшебник", который делает базовую программу и инициализирует всё! на МК,
а есть ли необходимость в такой инициализации, ведь МК как-то настроен "по-молчанию", достаточно только скорректировать то,
что нужно для определенной работы, делал тестовый секундомер, настроил входы/выходы для индикатора и таймер для прерывания и
работало. Меньше строк программы - меньше ошибок исправлять sm.gif
Вот собственно вопрос - где-нибудь есть сводная информация как настроен МК "по-молчанию",
т.е. с завода или после полного стирания ?
Некоторые настройки сбивают fuses, когда разбирался с чужим проектом, семь потов сошло sad.gif
Пока почерпнул только, что порты настроены на вход с отключенными подтягивающими резисторами, хотя тоже не уверен, потому как есть
общее управление всеми резисторами сразу, внутренний генератор работает на 8MHz с делением на 8, т.е 1MHz - эти настройки и повторяет
"волшебник"
Что там с таймерами и прерываниями ещё "не въехал".
С английским дружу через словарь, в документации много всего, а выудить нужное пока не смог.

Сейчас есть желание сделать на tiny2313 многоточечный термометр (на DS18B20) с выводом на многострочный LCD, подобные конструкции есть,
но они расходуют практически всю программную память МК, а мне нужно еще дополнить функциональности, потому нужно максимально оптимизировать программу, переходить на mega8 не хочется, 8 ножек даром болтаться будут sm.gif
maksimp
Цитата(nick60 @ Jan 21 2012, 12:43) *
но они расходуют практически всю программную память МК, а мне нужно еще дополнить функциональности, потому нужно максимально оптимизировать программу, переходить на mega8 не хочется, 8 ножек даром болтаться будут sm.gif

Возьмите mega8 и не обращайте внимание на то что ноги даром болтаются.
редактор
"Значения по умолчанию" возникают в контроллере каждый раз после сигнала RESET. Эти состояния всегда описываются в документации.
MaxiMuz
Цитата(nick60 @ Jan 21 2012, 11:43) *
Вот собственно вопрос - где-нибудь есть сводная информация как настроен МК "по-молчанию",
т.е. с завода или после полного стирания ?

после сигнала сброс регистры МК переходят в начальное состояние которое вы можете узнать прочитав соответствующий раздел описания МК внизу под названием регистра(любого) и описания его битов есть строка Initial value. Тоже самое fuse bits описывается в графе Default value.
nick60
Я так понял, что систематизированной информации по предустановленому состоянию МК ни у кого нет.
Ладно, будем копошиться в документации дальше самостоятельно.
Эксперименты изучения МК и его программирования продолжаются ... sm.gif
Удачи всем!

C AVRStudio 4 подружился, оказалось, что дома и на работе у меня установлено что-то, что ломает компилятор.
Потому на компьютере сделал виртуальную машину с помошью VMWare, поставил чистую XP от MS в пробном режиме, установил AVRStudio 4 и все работает.
Почему не работало - копать не буду, потому как времени жалко и можно попасть на ситуацию, что нужный и полезный для работы софт окажется виновником нестыковки.
Так что, выход есть и Слава Богу.

Сергей Борщ
QUOTE (nick60 @ Mar 1 2012, 09:40) *
Я так понял, что систематизированной информации по предустановленому состоянию МК ни у кого нет.
Даташит. Систематезированнее некуда. Это во-первых. А во-вторых - лучше не полагаться на на значения по-умолчанию, а прописывать явно все регистры используемой периферии. В большинстве случаем это даже дает меньший код, чем наложение масок по "ИЛИ" и "И".

QUOTE (nick60 @ Mar 1 2012, 09:40) *
C AVRStudio 4 подружился, оказалось, что дома и на работе у меня установлено что-то, что ломает компилятор.
Телепатируем: "ломает компилятор" - при попытке компиляции make ругается на команды в makefile. Версия: установлен один из проектов Борланда, поэтому при компиляции вызывается его make.exe, который совершенно несовместим по формату makefile c GNU make. Диагонстика: Start->Programs->Acessories->Command line prompt, в командной строке ввести make --version, убедиться, что вызывается make от Борланда.

Когда надоест виртуальная машина - поставьте в path путь к WinAVR/utils на первое место, т.е. до пути к Борланду.
MaxiMuz
Цитата(nick60 @ Mar 1 2012, 10:40) *
C AVRStudio 4 подружился, оказалось, что дома и на работе у меня установлено что-то, что ломает компилятор.

У меня ни дома ни на работе ни на др.компах небыло проблем с AVRStudio , и Борланд у меня какоето время стоял. У вас ХР стоят ?
Alex-sh
Люди, помогите пожалуйста. У меня скоро ГОСы. И в вопросах присутствуют задания по программированию микроконтроллеров PIC на Ассемблере. Может кто-нибудь сможет помочь. Задания такие: 1) Составить алгоритм и программу на языке Ассемблер для МП типа PIC16C55, реализующую функцию логического И регистров 20h и 21h, и вызов подпрограммы PRG1, если результат равен нулю. 2) Составить алгоритм и программу на языке Ассемблер для МП типа PIC16C55, реализующую логическую функцию исключающего ИЛИ портов А и В и вывод результата в порт С, если он не равен нулю. 3) Составить алгоритм и программу на языке Ассемблер для МП типа PIC16C55, реализующую множественное ветвление программы по условию установки в единицу бит 0-3 регистра 20h, с приоритетом от младшего разряда к старшему. 4) Составить алгоритм и программу на языке Ассемблер, реализующую временную задержку t= 10 мкс. для МП типа PIC16C55 при тактовой частоте f = 20МГц. Я понимаю что все задания будет в лом писать. Но хотя бы одно. Заранее спасибо
Cosmojam
Цитата(Alex-sh @ Mar 7 2012, 20:17) *
Люди, помогите пожалуйста. У меня скоро ГОСы. И в вопросах присутствуют задания по программированию микроконтроллеров PIC на Ассемблере. Может кто-нибудь сможет помочь. Задания такие: 1) Составить алгоритм и программу на языке Ассемблер для МП типа PIC16C55, реализующую функцию логического И регистров 20h и 21h, и вызов подпрограммы PRG1, если результат равен нулю. 2) Составить алгоритм и программу на языке Ассемблер для МП типа PIC16C55, реализующую логическую функцию исключающего ИЛИ портов А и В и вывод результата в порт С, если он не равен нулю. 3) Составить алгоритм и программу на языке Ассемблер для МП типа PIC16C55, реализующую множественное ветвление программы по условию установки в единицу бит 0-3 регистра 20h, с приоритетом от младшего разряда к старшему. 4) Составить алгоритм и программу на языке Ассемблер, реализующую временную задержку t= 10 мкс. для МП типа PIC16C55 при тактовой частоте f = 20МГц. Я понимаю что все задания будет в лом писать. Но хотя бы одно. Заранее спасибо

#1
Код
    list        p=16c55    
    #include    <p16c55.inc>
    __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

reg1        EQU    0x20
reg2        EQU    0x21

ORG 0x000      
goto main

main  
movf reg1, 0
andwf !!!Чтобы увидеть продолжение отправь смс с текстом "я обещаю никогда не пытаться устроиться на работу по специальности в дипломе" на номер 1234
paperplane
Здравствуйте. Недавно начал изучать AVR, почти сразу понадобилось практическое применение. Вот такой вот таймер для мини-оранжереи:

Собственно должен выполняться алгоритм:

Единственная проблема с кодом, это то, как сделать такие большие задержки. Проще всего думаю пропускать нужное количество тактов за час, то есть если частота мк 1МГц, восемь часов ожидания будут выглядить так:
Код
__delay_cycles(3600000000);
__delay_cycles(3600000000);
__delay_cycles(3600000000);
__delay_cycles(3600000000);
__delay_cycles(3600000000);
__delay_cycles(3600000000);
__delay_cycles(3600000000);
__delay_cycles(3600000000);

Но наверное это глупо и нецелесообразно. Подскажите, как это можно реализовать на таймерах мк, и насколько большая погрешность у внутреннего генератора мк. Заранее спасибо.
_Артём_
Цитата(paperplane @ Apr 7 2012, 10:34) *
Но наверное это глупо и нецелесообразно.

Да. Нецелесообразно.


Код
#define FREQUENCY 11059200
unsigned short MilliSeconds;
unsigned short Seconds;
unsigned char Hour;
#pragma vector=TIMER0_OVF_vect
__interrupt void timer_1khz_isr(void)
{
    if (++Milliseconds>=1000) {
        Milliseconds=0;
        if (++Seconds>=3600) {
            Hour++;
        }
    }
}
void timer1_init(void)
/*
TIMER1 initialize - prescale:1
WGM: 4) CTC, TOP=OCRnA
desired value: 9996Hz
actual value: 9999,277Hz (0,0%)
*/
{
    TCCR1B = 0x00; //stop
    TCNT1H = 0xFB; //setup
    TCNT1L = 0xAF;
    OCR1AH = 0x04;
    OCR1AL = 0x51;
    OCR1BH = 0x04;
    OCR1BL = 0x51;
    OCR1CH = 0x04;
    OCR1CL = 0x51;
    ICR1H  = 0x04;
    ICR1L  = 0x51;
    TCCR1A = 0x00;
    TCCR1B = 0x09; //start Timer
    TIMSK |= (1 << OCIE1A);
}
int main()
{
    timer1_init();
    __enable_interrupt();
    while (1) {
    }
}

Цитата(paperplane @ Apr 7 2012, 10:34) *
насколько большая погрешность у внутреннего генератора мк.

Навеное единицы процентов. Смотрите в datasheet.
Александр Куличок
Цитата
восемь часов ожидания будут выглядить так...

или так:
Код
for(int h = 0; h<8; h++) __delay_cycles(3600000000);

Если контроллер других функций не выполняет, то при данном алгоритме абсолютно все равно, на чем делать задержки. Но для корректной работы Вашего алгоритма нужно передергивать питание почти каждый раз после изменения положения s1 (Для примера, рассмотрите ситуацию: ставим s1 на 7 ногу, включаем питание, и, скажем, через секунду, переводим s1 на 9ю ногу. Через 16 часов реле выключится на 8 часов, хотя при этом положение s1 показывает на "включено постоянно") Так что, как мне кажется, алгоритм придется все-таки поменять (хотя, может, все именно так и задуманно).

По поводу схемы. Для корректной работы в железе придется либо притянуть ноги 7,8,9 резисторами к земле для обеспечения "0" на неподключенном выводе. Но, на мой взгляд, проще на этих выводах разрешить pull-up резисторы (DDR = 0, PORT = 1), а переключателем s1 коммутировать выводы на "землю". При этом на выбранном выводе будет лог. "0", на остальных - лог. "1". Соответственно, нужно подкорректировать условия ветвления в алгоритме.
well solid
А можно вопрос от совсем начинающего?
С какого контролера начинать?
Какой для него USB програматор купить, готовый к работе?
Какую макетку купить для сборки устройства (может есть готовые с распаяными контролерами и обвесом)?
Какой именно для предложеных вариантов нужен софт?
Рассматривать ли ARDUINO?
Kopa
Цитата(well solid @ Nov 15 2012, 07:49) *
А можно вопрос от совсем начинающего?

Возьму смелость посоветовать такой путь
Виртуальная машина и скриптовой движок в MSP430G2553 - проще пареной репы. 4e4th + TI Launchpad
4E4th + TI LaunchPad. Основы языка Forth
4E4th + TI LaunchPad. В начале было Слово
пока автор, по этой тематике сделал 3-и статьи

P.S.Данный подход и его разветвления применим и применяется к любым существующим контроллером.
well solid
Интересная ссылка, спасибо.
Если я правильно понял покупается плата, подключается по USB, программируется, а затем используется как самостоятельное устройство - так?
Кто покупал на оф сайте TI, поделитесь инфой.
Есть ли для этого девайса готовые библиотеки программ (как например для Атмела)?
Для новичка важно. Ведь опыта самостоятельного написания никакого.
Kopa
Цитата(well solid @ Nov 16 2012, 04:21) *
Интересная ссылка, спасибо.
Если я правильно понял покупается плата, подключается по USB, программируется, а затем используется как самостоятельное устройство - так?
Кто покупал на оф сайте TI, поделитесь инфой.
Есть ли для этого девайса готовые библиотеки программ (как например для Атмела)?
Для новичка важно. Ведь опыта самостоятельного написания никакого.

Наличие библиотек, при данном подходе знать почти не требуется, главное задавать
себе вопросы по ходу проникновения в базис. Конретных библиотек для данного контроллера
может не быть, но Форта много в разных контроллерах и это снимает "первоначальные" проблемы,
а дальше приходит некоторый опыт и возможность его наращивать на имеющемся базисе
в различных вариантах. Это средний уровень начального старта, но не ограничены в дальнейшем продвижении.
Kopa
Цитата(well solid @ Nov 16 2012, 04:21) *
Интересная ссылка, спасибо.
Если я правильно понял покупается плата, подключается по USB, программируется, а затем используется как самостоятельное устройство - так?
Кто покупал на оф сайте TI, поделитесь инфой.
Есть ли для этого девайса готовые библиотеки программ (как например для Атмела)?
Для новичка важно. Ведь опыта самостоятельного написания никакого.

Наличие библиотек, при данном подходе знать почти не требуется, главное задавать
себе вопросы по ходу проникновения в базис. Конретных библиотек для данного контроллера
может не быть, но Форта много в разных контроллерах и это снимает "первоначальные" проблемы,
а дальше приходит некоторый опыт и возможность его наращивать на имеющемся базисе
в различных вариантах. Это средний уровень начального старта, но не ограничевает дальнейший прогресс..

P.S. Даже не новички в embedded тематике, изучают и пробуют к ипользованию существующие возможности в этом направлении.
Доставка от TI вроде без проблем и бесплатна., в подобных случаях.
kt368
Цитата(well solid @ Nov 16 2012, 03:21) *
Кто покупал на оф сайте TI, поделитесь инфой.
Я покупал, именно LaunchPad, доставка бесплатная, привезли за 2 недели (мож чуть меньше, не помню уже).
well solid
Боюсь даже спросить.
Можно-ли заливать программы написанные для Атмела в LaunchPad? laughing.gif
Kopa
Цитата(well solid @ Nov 18 2012, 06:41) *
Боюсь даже спросить.
Можно-ли заливать программы написанные для Атмела в LaunchPad? laughing.gif

Какие программы? Если на Форт, то "обобщённо" да. также и как на Си.
Для Аtmela тоже есть разные варианты Форт систем.
well solid
Пол дела сделано, на работе нашли програматор Phyton ChipProg-40, приходил с какимтом-то оборудованием. Говорят даже работает.
Так что буду начинать с ATmela!
San_75
Цитата(well solid @ Nov 19 2012, 12:25) *
Пол дела сделано, на работе нашли програматор Phyton ChipProg-40, приходил с какимтом-то оборудованием. Говорят даже работает.
Так что буду начинать с ATmela!


http://habrastorage.org/storage2/322/9da/c...895818bd80c.png
я вот такой штукой контроллеры шью, на старом компе с лпт портом и 128 мб оперативки. Шить можно программой Uniprof
пай-мальчик
Здравствуйте! Кто-нибудь знает, AT90CAN32 должен шиться USBASP-ом? Купил на алибабе 10 штук, их программатор не видит.
Это мой первый TQFP, но сомневаюсь, что дело в кривой схеме.
На первую плату все детали напаял - не работает. На вторую только атмегу и 100нф конденсаторы с резистором 10к на ресете. То же самое. Всё протестил, контакт есть, питание на плате есть, а usbasp пишет, что пусто.
Другие контроллеры, например, atmega328p им шью.

Может у нового чипа ISP быть отключенным? А JTAG при этом может быть тоже выключен? :-o

Вот плата в виде картинки
http://robo-home.ru/pict.png

Схема, если интересно.
http://robo-home.ru/sch.lay6

Чип на самом деле at90can32, на схеме atmega128, т.к. макрос нашёлся такой.
Xenia
Вот тут был аналогичный случай (первая часть сообщения):

Цитата(coolbassnik @ Mar 13 2014, 10:35) *
1) Если у Вас USBASP может работать в режиме пониженной частоты CLK - установите этот режим (это может быть джампер или перемычка LOWCLK на программаторе). Т.к. все контроллеры с завода тактируются от внутреннего генератора на низкой частоте, то нужно понизить тактовую на программаторе чтобы микроконтроллер "увиделся".
2) "Подтяните" вывод RESET на микроконтроллере к питанию через резистор около 10 кОм, чтобы помехи не "держали" микроконтроллер в сброшенном состоянии.

пай-мальчик
Странно, это касается именно at90canX? К сожалению, не могу найти в даташите где пишут частоту по умолчанию, с теми контроллерами AVR, с которыми уже ковырялся, было 8мгц (может с прескейлером 1/8) от внутреннего тактового генератора, даже у tiny.

Перемычки такой на китайском usbasp-е, конечно, нет sad.gif Есть план Б? sm.gif
Jury093
Цитата(пай-мальчик @ Mar 30 2014, 15:06) *
Перемычки такой на китайском usbasp-е, конечно, нет sad.gif Есть план Б? sm.gif

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

но сдается мне, что вы слегка попутали контакты в "схеме" (в следующий раз выкладывайте не в экзотическом формате и не в виде печатки, а в pdf или картинку схемы) - для ISP нужны не MISO/MOSI, а PDI/PDO (PE0/PE1) - имхо, классическая ошибка

и по монтажке - я бы делал дорожку питания раза в 2-3 шире..

Цитата
К сожалению, не могу найти в даташите где пишут частоту по умолчанию, с теми контроллерами AVR, с которыми уже ковырялся, было 8мгц

и тут те же 8 МГц:

Код
5.6 Calibrated Internal RC Oscillator
CKSEL3..0 0010 8.0 MHz
Note: 1. The device is shipped with this option selected
пай-мальчик
Спасибо большое за советы. У avrdude обнаружил волшебный ключик, -B5 и скорость стала якобы 187500 Hz.

И с miso/mosi я конечно ошибся. Переключил на PDI/PDO сообщение другое получаю.
При этом, если "перепутать" провода, то старое сообщение:

error: programm enable: target doesn't answer

А теперь у девайса id неправильный:

avrdude: Device signature = 0xffffff
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.


%(
Jury093
Цитата(пай-мальчик @ Mar 31 2014, 16:00) *
А теперь у девайса id неправильный:

а что у вас с питанием на плате, есть чем померять? 5в присутствуют?
не знаю, что за LDO стоит для 12->5, но для такого типа корпуса обычно делают соединение фланцевого контакта и центрального - уточнить можно, найдя даташит на чип стабилизатора и посмотреть там типовую схему включения..
для проверки можно отпаять LDO и запитать от внешнего источника на 5В
dan_p
Добрый день.

Разрабатываю плату для преобразования показаний с датчика давления и последующей передачи по UART. Выбрал следующую схему АЦП-attiny-UART. Скажите, пожалуйста, можно, допустим, снимать через SPI данные с АЦП в обычном режиме, а в режиме прошивки через те же ножки прошивать что-нибудь вроде attiny441? Или лучше взять attiny с двумя SPI (например, 167)?

Заранее спасибо

Ещё интересует следующий вопрос: сколько примерно максимально может потреблять attiny?
Xenia
Цитата(dan_p @ Nov 17 2014, 20:54) *
Скажите, пожалуйста, можно, допустим, снимать через SPI данные с АЦП в обычном режиме, а в режиме прошивки через те же ножки прошивать что-нибудь вроде attiny441? Или лучше взять attiny с двумя SPI (например, 167)?

Одного SPI достаточно. К разъему программатора ведете линии MISO и MOSI напрямую, а их же с АЦП соединяете через резисторы 1 Ком (на SCK резистор ставить не надо). Тогда АЦП не помешает прошивать МК, и сам от этой процедуры не пострадает. А ко времени работы с АЦП програматор будет уже отключен и тоже не помешает его работе.

Цитата(dan_p @ Nov 17 2014, 20:54) *
Ещё интересует следующий вопрос: сколько примерно максимально может потреблять attiny?

Даташит надо смотреть, там есть график тока от напряжения питания (сильно зависит!). А кто же кроме вас, может знать, каким напряжением вы собираетесь питать Тиньку?
chipstar.ru
Цитата(nameless @ Apr 6 2005, 15:06) *
Не советую AVR для начинающих. Уж куда приятнее PIC. В преподавательской практике использовал оба - PIC схватывают на лету !!!
Есть подозрение - что из-за системы команд.

Согласен. AVR вышел после PIC. Некоторые просчеты архетектуры ранних PIC там устранили. В PIC, начиная с PIC18 то-же никаких трудностей с регистрами нет, но в целом PIC более привлекательны и понятны.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.