• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!
3d_killer

2 и более USART порта & Atmel studio

50 сообщений в этой теме

3d_killer    3

Не могу попробовать передачу и прием данных в Atmel Studio, МК atmega 128.

пишу такой код (везде в интернете работа только с одним портом, поэтому единички подставлял я в регистрах)

UBRR1H=0;
UBRR1L=25;
UCSR1B |=(1<<RXCIE1)|(1<<RXEN)|(1<<TXEN)|(UDRIE1);
UCSR1C |=(1<<URSEL)|(1<<UPM1)|(1<<UCSZ1)|(1<<UCSZ0);

начиная со второй строки код не зашивается, при верификации ошибка,

на URSEL студия ругается что такого регистра нет.

Есть у кого пример кода когда более 1 порта как его инициализировать, принять и передать данные?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
ARV    261

Ну так UMSEL же...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3d_killer    3

такой регистр есть, я его пробовал, все равно программа не пишется в контроллер, примеров случайно нету?

http://narodstream.ru/avr-urok-14-usart-svyaz-mk-s-pk-chast-3/

http://www.customelectronics.ru/avr-rabota-s-uart/

вот примеры статей, видео, везде этот регистр, все что тут показывается не работает...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ARV    261

Какой регистр?! UMSEL не регистр, а название бита в регистре UCSR1C!

Вы бы даташит читали бы все-таки, а то у вас явные проблемы с пониманием того, что происходит в коде.

Кстати, "не пишется" и "не компилируется" - это разные вещи. В контроллер пишется всё, что угодно, даже стихи Пушкина можно прошить. А вот программа с ошибками не скомпилируется и потом, естественно, не запишется. Разницы в настройках разных модулей USART нет никакой - 0 на 1 меняется в названиях регистров и всё. А если не работает - это в коде надо разбираться.

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3d_killer    3

да я открывал, да только понять его тяжеловато, вот и прошу пример.

Я вижу что это название бита, но везде в примерах совсем другой, и все равно оно не работает

2017-10-06_15-45-48.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    573
9 минут назад, 3d_killer сказал:

прошу пример

А может просто в даташит сходить?.. ну и на прошивку код никак не должен влиять, даже кривой и нерабочий. Если скомпилился - должен зашиться.

Изменено пользователем BARS_

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ARV    261

Смотрите: по умолчанию во всех AVR c USART есть регистры UCSRA, UCSRB и т.д. В МК, где USARTов больше одного, эти регистры нумеруются, т.е. превращаются в UCSR0A и UCSR1A и т.д.

В каждом регистре есть биты RXC, UDRE и т.п., которые так же получают номера, если модулей USART несколько. При этом, так как биты ОДИНАКОВО располагаются в регистрах разных модулей, можно продолжать пользоваться НЕНУМЕРОВАННЫМИ наименованиями битов - ошибки не будет. Но регистры, само собой, надо нумеровать правильно.

Поэтому если у вас есть пример для USART без номера - просто ДОПИШИТЕ к названию регистров нужный номер, не трогая всё остальное. Или перенумеруйте ВСЕ в соответствии с тем, что я написал.

Никакой другой разницы нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3d_killer    3

проблема в том что даже эти 2 строчки после компиляции не пишутся в контроллер, убираю вторую строку тогда записывается

2017-10-06_15-58-24.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    573
Только что, 3d_killer сказал:

даже эти 2 строчки после компиляции не пишутся в контроллер

Значит пишите криво. Код никак не влияет на запись в МК.

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ARV    261

Потому что во второй строчке у вас указан UMRSEL1, которого в природе не существует. Читайте выше - я описал алгоритм того, как надо делать.

Изменено пользователем ARV

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3d_killer    3

это как??

2017-10-06_16-01-33.jpg

2017-10-06_16-01-48.jpg

по поводу UMRSEL1 я же закоментировал эти строки

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    573
8 минут назад, 3d_killer сказал:

как?

Так, что в даташит надо смотреть прежде чем что-то писать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3d_killer    3

думаете не открывал? нужной информации я не нашел, вы если не хотите или не можете помочь, то зачем пишите?

2017-10-06_16-16-52.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    573
4 минуты назад, 3d_killer сказал:

нужной информации я не нашел

Как так, если там подробно расписано, как запустить UART? Мало того, там дан кусок кода на Си, который этим занимается. Только надо открывать англоязычный даташит, а не криво переведенный русский. http://eu.mouser.com/ds/2/36/Atmel-8151-8-bit-AVR-ATmega128A_Datasheet-464632.pdf

Изменено пользователем BARS_

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3d_killer    3

переписал из англоязычного изменив порт

 

2017-10-06_16-27-25.jpg

2017-10-06_16-28-22.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    573

В компиляторе есть предупреждения при сборке?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3d_killer    3

в методе USART_Init

1,2 и 4 строки вызывают ошибку при записи

нет в компиляторе пусто

если использовать 0 порт то тоже ошибка

2017-10-06_16-33-13.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    573

Раз компилятор пропускает, значит все нормально с кодом. Попробуй через AVR-Burn-O-Matt прошить

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3d_killer    3

он шьет через winavr, установил и прикрутил к atmel studio, прошил без ошибок, щас попробую передачу, то есть код написан верно?

2017-10-06_17-06-35.jpg

2017-10-06_17-10-15.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    573

Когда есть ошибки в коде, компилятор ругается. Конечно, могут быть ошибки в самой настройке регистров, но это уже другое дело, тогда просто будет не так работать, как надо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3d_killer    3
#define FOSC 16000000
#define BAUD 57600
#define MYUBRR FOSC/16/BAUD-1

void USART_Init(unsigned int ubrr)
{
	/*Set baud rate */
	UBRR1H = (unsigned char)(ubrr>>8);
	UBRR1L = (unsigned char)ubrr;
	UCSR1B = (1<<RXEN1)|(1<<TXEN1);
	/* Set frame format: 8data, 2stop bit */
	UCSR1C = (1<<USBS1)|(3<<UCSZ01);
}
void USART_Transmit( unsigned char data )
{
	/* Wait for empty transmit buffer */
	while ( !( UCSR1A & (1<<UDRIE1)) )
	;
	/* Put data into buffer, sends the data */
	UDR1 = data;
}
int main(void)
{
	USART_Init(MYUBRR);
    while (1) 
    {
		USART_Transmit('3');
		//Инвертирование порта
		//PORTC^= (1>>0);
		_delay_ms(1500);
		//USART_Transmit('2');
		//Сброс сторожевого таймера
		wdt_reset();
    }
}

все равно тишина на порту

Изменено пользователем 3d_killer

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    573

А порты кто настраивать будет?.. Ну и функция инита нигде в коде не вызывается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3d_killer    3

она есть я поменял тут код, а порты настраивать это какие?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    573

Ту ножку, на которой Tx находится, настроить на выход

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сообщения

    • вы откуда территориально?
    • интересно как отреагируют мозги частотника, когда на входы этой схемы прилетит помеха ввиде наводок от силовых проводов
    • 1. Поделюсь своими аматорскими соображениями. У меня есть такая вот картинка: я ее дополнил по памяти  таким образом: 2. Номиналы фазокомпенсатора С1R1Rf должны выбираться исходя из усилительных характеристик корректора, таким образом, чтобы максимальное фазо-компенсирующее влияние (lead-корректора) приходился на область единичного петлевого. То есть R1Rf надо выбрать такими, чтобы, зная усилительные свойства корректора-треугольника и, соответственно ориентируясь на примерное единичное петлевое, номинал емкости был приемлемым. Собственно, можно смотреть шпаргалки по lead-корректорам. Затем, уж под это дело рассчитать R0L0. 3. Как вывод. "Настройка" моста посредством изменения номинала С1 выглядит (мягко выражаясь) -  странной. 4. Исходя из всего этого, полагая, например, что Fед=180 МГц, какими должны быть номиналы R1Rf, дабы выудить хоть какой-то завалящий номинал С1?    Получится, что при  Fед=180 МГц  при приемлемом номинале С1 (скажем, пару, тройку десятков пФ) номиналы R1Rf получатся неприемлемыми - единицы Ом. Примерно так мне все это представляется.
    • Всем ночи доброй. Не занимаюсь ремонтом телефонов/ планшетов. Но товарищ по работе попросил просто перепаять разъем на планшете. Планшет Асус К01А. Планшет получил в руки в виде не включается/на зарядку не реагирует. Разобрал замерял напряжение батареи 2 с копейками. Разъем вырван вместе с контактными площадками. Перепаял разъем (+ и -, на оторванные дата+ дата- забил). Включил планшет. На диспллее циклично появляется картинка с заряжающимся акб и исчезает. Запитал с ЛБП. Наблюдал следующуй картинку (см. прикрепленную видеозапись). Учитывая что опыта с планшетами / телефонами не имеется, то я в небольшом ступоре . Подумал на самое простое (шлейф с кнопками). Но с отключенными кнопками та же картина. Теперь предпологаю контроллер. Более опытные в этом вопросе, дайте пожалуйста совет. Заранее спасибо. Какие нужны замеры, фото - говорите предоставлю WP_20171214_001.mp4
    • Спасибо, что напомнили. Не подскажете ли, заодно, где я, в последних постах этой темы, писал про искажатели, или ламповые буферы? Как бы от Вас и не требуется. Схема дана не Вам, а PTAXA73, согласно его требованиям по питанию. И с комментарием, что она нуждается в настройке и проверке, и что не каждая лампа... 
    • "Шипение" вообще-то не напрягает. К нему быстро привыкаешь. А к аккуратному "вырезанию" или, что лучше, "ламповому" ограничению "щелчков" стоит прислушаться. В прямом и переносном смыслах.
    • Скоро реально начну раздавать баны. Читаем первый пост темы. И что-то вы  с оспариваем затянули. Такое ощущение, что забанили вас не только в интернете.