roboforum.ru

Технический форум по робототехнике.

МикроКонтроллер AVR начинающим - общие вопросы

avr123.nm.ru » 15 авг 2007, 11:22

SERGE писал(а):Обсмотрел весь сайт avr128


http://avr123.nm.ru/z5.htm    и     http://avr123.nm.ru/

Master » 15 авг 2007, 20:10

Может частоты кварца не те?

Myp » 15 авг 2007, 20:11

а вы правильно настроили параметры ? скорость частота кварца и всё такое??

Анто}{а » 15 авг 2007, 21:36

Всем добрый вечер. Понимаю, что я сейчас буду выглядеть очень нелепо, но очень прошу помочь. Сам никогда низкоуровневым программированием не занимался, да и не хотел, только высокоуровневым. Но мне очень надо сделать следующую вещь - есть отдельно JTAG и микроконтроллер Atmel A91SAM7S64, в который при помощи IAR Systems надо залить программу некую, такую, чтобы винда при подключении платы по usb воспринимала ее как Mass Storage Device. Методом тыка пытаюсь что-то найти и сделать, но с места почти не сдвинулся, а перечитать кучу литературы на английском честно говоря не в силах. =(
Наверняка же уже где-то есть готовые программы эти (даже я кое что находил, но ничего дельного из этого не сляпал к сожалению...) - помогите пожалуйста решить эту несложную (на мой взгляд) для понимающего человека задачку!

Заранее спасибо всем.

avr123.nm.ru » 15 авг 2007, 21:52

Я это использую  -  http://www.hjtag.com/index.html

И ниже схема МОЯ. Все перемычки замкнуть !

и вот еще - http://avr2day.narod.ru

и у нас есть топик по ARM !
Вложения
arm2day.narod.ru_h-jtag.png

SERGE » 16 авг 2007, 04:34

Извените меня за беспокойство еще раз. Я все перепроверил. Так как я пока полный чайник в С может быть я что нибудь напортачил в коде хотя в это не верится, а с другой стороны чудес не бывает. Вот код который я использую:
Chip type           : ATmega16
Program type        : Application
Clock frequency     : 8,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256
*****************************************************/

#include <mega16.h>

// Standard Input/Output functions
#include <stdio.h>

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

while (1)
     {
     putchar(66);
     };
}
Как вы видите скорость передачи 9600, частота тиков 8 МГц, принимаю я при помощи COM Port Toolkit 3.8 естественно настройки COM порта такая же 9600, 8 Data, 1 Stop, No Parity. Отправляю 66 и надеюсь на терминале получить 0x42 и B, а принимаю 0х4А и J. Версия CVAVR 1.25.7 beta 5 Pro. Еще раз проделал тоже самое на Bascome принимается все идеально.  Я уже читал z5 на avr123, перечитал еще раз попробовал готовый пример скачал хидер вроде все ровно компилируется а микроконтроллер молчит и ничего не происходит. Возник вопрос может че то с компилятором?

avr123.nm.ru » 16 авг 2007, 09:19

ДЫК !!!  в курсе ж написано ПРОВЕРЬ В СИМУЛЯТОРЕ  VMLAB  или в PROTEUS

Затем в железе проверь на какой частоте МК работает - залей тестовую прошивку чтоб померить частоту на ножке МК.

Ты от кварца тактируешь МК ?  (задача 5)

Master » 16 авг 2007, 13:01

Удалено.
Последний раз редактировалось Master 16 авг 2007, 13:49, всего редактировалось 1 раз.

avr123.nm.ru » 16 авг 2007, 13:25

При таком коде:

while (1)
    {
    putchar('U');
    };


Частота на ножке TxD  должна быть 4800 Гц ( = бодрейт /2 ) - померь.  

Можно через резистор 47 ком подать на вход звуковой карты и в звуковом редакторе посмотреть, померить.

avr123.nm.ru » 16 авг 2007, 13:30

SERGE писал(а):Отправляю 66 и надеюсь на терминале получить 0x42 и B, а принимаю 0х4А и J.



Прочитай наконец ВНИМАТЕЛЬНО !!!  http://avr123.nm.ru/z5.htm

С чего ты решил получать 2 символа отправляя ОДИН ???

Вот из  http://avr123.nm.ru/z5.htm  

1) отправить один символ типа  char  можно так:

putchar('G');    
putchar(71);
putchar(0x47);

Любая из этих трех строк кода выводит на  ножку TXD число 71. На терминале ПК вы увидите соответствующий этому числу  символ  G

В 16-тиричном виде это число 0x47

Запомните форму записи чисел !

Таблица символов и их кодов есть на странице Си для МК

Кроме того один символ или число от 0 до 255 можно отправить с МК так:

while(!(UCSRA & (1<<UDRE)));
// дождитесь освобождение регистра передачи

// Отправьте число одним из 3-х вариантов
UDR = 'G';
UDR = 71;
UDR = 0x47;


Это же можно написать в одну строчку:

while(!(UCSRA & (1<<UDRE))); UDR = 'G';



Че тут не понятного ?

откудаж ДВА символа ?

Master » 16 авг 2007, 13:57

Анто}{а писал(а):
Всем добрый вечер. Понима...


http://www.pcports.ru/Library.php - кажись эта и на русском, но всеравно не все ток просто как кажется на первый взгляд. Там и примеры есть.

Агуров П.В. Практика программирования USB
Переработанная и дополненная книга по программированию USB. Очень стоящая вещь. Практически без комментариев. Обяза- тельно надо скачивать.

Анто}{а » 16 авг 2007, 22:14

подскажите пожалуйста программу для заливки бинарника через JTAG J-Link от IAR Systems.

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

avr123.nm.ru » 16 авг 2007, 23:17

Анто}{а писал(а):подскажите пожалуйста программу для заливки бинарника через JTAG J-Link от IAR Systems.

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


Посмотри там  arm2day.narod.ru   вопросы и ответы  

и еще в нете есть утилиты bin2hex  

и  h-jtag попробуй - он поставит свой сервер и будет литься из IAR и KEIL

возможно  h-jtag  и bin кушает.

Анто}{а » 16 авг 2007, 23:35

он не обнаруживает плату...
Сейчас плата соединена по юсб и подключена к JTAG, который тоже подсоединен по юсб. Питания отдельного к плате нет - может в этом дело? Оно нужно?
Самба тоже не видит плату ='(

И вообще - плата у меня никак не определяется когда ее в юсб втыкаешь - как будто ничо не присоединил!

avr123.nm.ru » 16 авг 2007, 23:52

У меня нет опыта с USB-JTAG - он наверно может питать плату.

У меня самоделка на LPT.


Rambler\'s Top100 Mail.ru counter