Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Прорезались зубы
Сообщения: 219
Зарегистрирован: Вт мар 12, 2013 16:05:45

Сообщение service47 »

Заработало, всем спасибо! :)
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Предыдущая ошибка пропала, но появилась эта ошибка в тех же местах:
Неужели вы думаете, что тупо обрезав лишнее всё останется так же работать? Скобки то нужно внимательнее смотреть. Правильно вам сказали. Если не разбираетесь, то копируйте так как вам предложили, чтобы лишних ошибок не плодить.
Контактная информация:
Реклама
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Здравствуйте!
Где то пол года назад поставил в CVAVR библиотеку lcd_rus и выводил русский текст на дисплей и всё работало, а сейчас вместо кириллицы выводятся на дисплей кракозябры. Дисплей вроде тот же... Попробовал переустановить библиотеку, результата нет. Вот включение библиотеки в проект:

Код: Выделить всё

 #include <lcd_rus.h>  
Вот пример вывода текста:

Код: Выделить всё

lcd_init( 16 );  
  lcd_clear( );
  lcd_gotoxy( 0,0 );
  lcd_puts( "  Кракозябра" );
Ставлю родную библиотеку и переписываю текст на английский, то всё нормально выводится...
Дисплей 1602B-YYK-CTK.
Компилит без ошибок (CodeVisionAVR V2.05.3)
Кто нибудь сталкивался с таким?
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

isx писал(а):вроде
Вот и надо разобраться; надо полагать совсем не "вроде".
Docendo discimus
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Я точно помня, что выводил на дисплей русский текст. И если в протеусе у меня он не выводится (я его не переустанавливал с того времени), то значит выводил на дисплей, иначе никак. Но текст был, я ещё над другом прикалывался :)
А дисплей этот, насколько я знаю, кириллицу поддерживает.
Реклама
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Вывел текст через перекодировку.
Но это очень муторное занятие.... :(
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

isx писал(а):Вывел текст через перекодировку.
А биты линии данных там наоборот нигде не могли перепутать? как уже было не так давно до этого.
Контактная информация:
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

В настройках проекта были изначально не верные биты. Поменял сёдня, но результат тот же...
Русифицировал дисплей в протеусе, тоже шляпу выдает, хотя с перекодировкой работает....
Прорезались зубы
Сообщения: 219
Зарегистрирован: Вт мар 12, 2013 16:05:45

Сообщение service47 »

Помогите, написать код в Atmel Studio 6, чтобы запустить ШИМ на ATmega88PA пин PORTB1 вывод 13.
Даташит на ATmega88PA: http://www.atmel.com/images/doc2545.pdf
Даташит на irml0030: http://www.irf.com/product-info/datashe ... 030pbf.pdf
Задача на пинах Х7,Х8 +-LED получит ток свыше 1А.

Принципиальная схема:
Изображение

Данный код не работает:
Спойлер

Код: Выделить всё

#define F_CPU 1000000UL

#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>

ISR(INT1_vect)  //MINUS PIND3
{
	_delay_ms(300);
	shim_start();
}

ISR(INT0_vect)  //PLUS PIND2
{
	_delay_ms(300);
	shim_start();
}

void shim_start()
{
	ASSR=0x00;
// Установим биты COM1A1-COM1A0:0b10,означает сброс вывода канала A при сравнении Clear OC1A/OC1B on Compare Match, set OC1A/OC1B at BOTTOM (non-inverting mode), for Fast PWM. page135
TCCR1A |= (1 << COM1A1)|(0 << COM1A0)|(0 << WGM11)|(1 << WGM10);  
// Установим биты WGM13-10:0b0101, согласно таблице это будет режим - Fast PWM, 8-bit, где верхний предел счета задается битом ICR1. page136
TCCR1B |= (0 << WGM13)|(1 << WGM12)|(1 << CS12)|(0 << CS11)|(0 << CS10);  
// Битами CS12-10:0b100 задаем источник тактового сигнала для таймера МК, clkI/O/256 (From prescaler)=31250Hz. page137
TCNT1 = 0x00; // начальная установка счетчика
TIMSK1=0x00;
ICR1 = 0x99;  // задаем период ШИМ, здесь у нас число 255,
// по формуле  fPWM=fclk_I/O/N*(1+ICR1) вычисляем частоту ШИМ, она будет равна 8MHz/256(1+2)=10416Hz 
// для FR3706 надо 50000Hz, irlm0030 надо 16666Hz<
OCR1A = 0xff; // начальный коэффициент заполнения ШИМ
}

int main(void)
{
		DDRC=0x3f;  //0b00111111 0-ввод 1-вывод
		PORTC=0x00; // 
		DDRD=0x0C; //0b00001100
		PORTD=0xff; // 
		DDRB=0x87; //0b10000111 PB1(OC1A)-ШИМ
		PORTB=0x00;
	EICRA  =  (1<<ISC11) | (0<<ISC10) | (1<<ISC01) | (0<<ISC00);	// настройка срабатывания прерываний The falling edge of INT1 generates an interrupt request
	PCICR  |= (1<<PCIE2) | (0<<PCIE1) | (0<<PCIE0);// разрешение прерываний PCINT23...16
	PCMSK2=0b11000000; //разрешаем прерывание pcint23 pcint22
	EIMSK=0b11000011; //разрешаем прерывание int0 и int1 - кнопка
	MCUCR=0b00001111;// IVSEL, IVCE
	sei(); //Глобальное разрешение прерываний
	
    while(1)
    {		
    }
}
Все, отбой. Заработало.
Последний раз редактировалось Gudd-Head Вт ноя 26, 2013 17:11:37, всего редактировалось 1 раз.
Причина: Склеил
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Сообщение SmarTrunk »

А можно ли в ATmega8a, если используется UART только на прием данных, то задействовать "выход UART" просто как цифровой выход (ну или вход)?

В даташите посмотрю, но, может, кто-то уже знает?
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Можно.
Docendo discimus
Контактная информация:
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Сообщение dzrkot »

Здравствуйте, есть пару глупых вопросов.
1) Есть 2 архитектуры Фон-Неймоновская и Гарвардская, я знаю о их существовании и на словах в чём разница, на практике в чём это вырожается? Просто интересно
2) Читаю про msp430, там есть карта адресного пространства...для чего она дана? Опять таки в практическом плане.
3) Допустим есть задача, по таймеру переходить в начало бесконечного цикла, можно ли сделать это без goto? Пишу на C. Вот просто как-то завис на этом...
Друг Кота
Аватара пользователя
Сообщения: 25459
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

1. У архитектуры фон Неймана память программ и память данных находятся в ОДНОМ АДРЕСНОМ ПОЛЕ и по сути есть единая память.
В гарвардской эти две памяти адресуются в разных полях и физически это разная память.
2. Во всех контроллерах всегда приводится карта памяти. Иначе как ее распределять?
3. По таймеру можно делать переход ТРЕМЯ способами.
а) чтение на лету, сравнение и переход по совпадению константы и состояния счетчика
б) программная проверка флага переполнения счетчика и переход по условию взведенного флага
в) прерывание от счетчика по переполнению (совпадению со значением регистра цифрового компаратора этого счетчика) и АППАРАТНЫЙ переход по вектору (адресу) этого прерывания, где и размещена программа обработки.
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Сообщение dzrkot »

ну я новой информации не узнал...
1 и 2ое про память читал, в чём это выразится на практике не понимаю, т.е. зачем мне эта информация вообще нужна?
3. Ну да... генерируется прерывание... как перейти в цикл в main() ...?

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

TimeIRQ()
{
while(1)
//операторы
}

int main()
{
while(1)
//операторы
}

вообщем я навереное не корректно задал вопрос..
Друг Кота
Аватара пользователя
Сообщения: 25459
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Си абстрагирует программиста от архитектуры и адресного пространства. Эти вопросы решает компилятор. Но не все же пишут на Си.... :wink:
Возврат из прерывания в Си осуществляется АВТОМАТИЧЕСКИ по завершению собственно обработчика этого прерывания (ISR).
Выход из прерывания по goto - моветон и создание себе кучи проблем с поддержанием стека.
Если нужно выполнить некую подпрограмму по условию прерывания, то есть ДВА варианта:
а) эту подпрограмму (функцию) вставляют в тело обработчика
б) в обработчике взводят некий программный флаг, а при выходе в main в цикле этого main проверяют этот флаг и если он установлен, то вызывают эту функцию. В функции флаг сбрасывают.
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Переместил последние вопросы про кнопки сюда - http://radiokot.ru/forum/viewtopic.php? ... 7#p1847347
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 20132
Зарегистрирован: Чт сен 01, 2011 12:53:27
Откуда: ТьмуТаракания. Почетный житель подмостовья

Сообщение oleg63m »

http://www.mirmk.net/content/view/117/27/
Попался тут на глаза адресок, может кому сгодится по жизни :)))
Программа - помощник для подбора микроконтроллера AVR
Шекспир сказал: Судить меня -дано лишь Богу, другим я укажу дорогу... https://natribu.org/
Я его полностью поддерживаю.
Программирую на Fuse AtmelAVR.
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

Сообщение coredumped »

Все будет только лучше, в крайнем случае - хуже.
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Повторюсь: http://www.mymcu.ru/
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Ответить

Вернуться в «Разные вопросы по МК»