Мелкие вопросы по МК и ПЛИС.
Re: Мелкие вопросы по МК и ПЛИС.
Заработало, всем спасибо! 
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Предыдущая ошибка пропала, но появилась эта ошибка в тех же местах:
Неужели вы думаете, что тупо обрезав лишнее всё останется так же работать? Скобки то нужно внимательнее смотреть. Правильно вам сказали. Если не разбираетесь, то копируйте так как вам предложили, чтобы лишних ошибок не плодить.
Re: Мелкие вопросы по МК и ПЛИС.
Здравствуйте!
Где то пол года назад поставил в CVAVR библиотеку lcd_rus и выводил русский текст на дисплей и всё работало, а сейчас вместо кириллицы выводятся на дисплей кракозябры. Дисплей вроде тот же... Попробовал переустановить библиотеку, результата нет. Вот включение библиотеки в проект:
Вот пример вывода текста:
Ставлю родную библиотеку и переписываю текст на английский, то всё нормально выводится...
Дисплей 1602B-YYK-CTK.
Компилит без ошибок (CodeVisionAVR V2.05.3)
Кто нибудь сталкивался с таким?
Где то пол года назад поставил в 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)
Кто нибудь сталкивался с таким?
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
isx писал(а):вроде
Вот и надо разобраться; надо полагать совсем не "вроде".
Docendo discimus
Re: Мелкие вопросы по МК и ПЛИС.
Я точно помня, что выводил на дисплей русский текст. И если в протеусе у меня он не выводится (я его не переустанавливал с того времени), то значит выводил на дисплей, иначе никак. Но текст был, я ещё над другом прикалывался 
А дисплей этот, насколько я знаю, кириллицу поддерживает.
А дисплей этот, насколько я знаю, кириллицу поддерживает.
Re: Мелкие вопросы по МК и ПЛИС.
Вывел текст через перекодировку.
Но это очень муторное занятие....
Но это очень муторное занятие....
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
isx писал(а):Вывел текст через перекодировку.
А биты линии данных там наоборот нигде не могли перепутать? как уже было не так давно до этого.
Re: Мелкие вопросы по МК и ПЛИС.
В настройках проекта были изначально не верные биты. Поменял сёдня, но результат тот же...
Русифицировал дисплей в протеусе, тоже шляпу выдает, хотя с перекодировкой работает....
Русифицировал дисплей в протеусе, тоже шляпу выдает, хотя с перекодировкой работает....
Re: Мелкие вопросы по МК и ПЛИС.
Помогите, написать код в 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А.
Принципиальная схема:

Данный код не работает:
Все, отбой. Заработало.
Даташит на 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 раз.
Причина: Склеил
Причина: Склеил
Re: Мелкие вопросы по МК и ПЛИС.
А можно ли в ATmega8a, если используется UART только на прием данных, то задействовать "выход UART" просто как цифровой выход (ну или вход)?
В даташите посмотрю, но, может, кто-то уже знает?
В даташите посмотрю, но, может, кто-то уже знает?
Re: Мелкие вопросы по МК и ПЛИС.
Здравствуйте, есть пару глупых вопросов.
1) Есть 2 архитектуры Фон-Неймоновская и Гарвардская, я знаю о их существовании и на словах в чём разница, на практике в чём это вырожается? Просто интересно
2) Читаю про msp430, там есть карта адресного пространства...для чего она дана? Опять таки в практическом плане.
3) Допустим есть задача, по таймеру переходить в начало бесконечного цикла, можно ли сделать это без goto? Пишу на C. Вот просто как-то завис на этом...
1) Есть 2 архитектуры Фон-Неймоновская и Гарвардская, я знаю о их существовании и на словах в чём разница, на практике в чём это вырожается? Просто интересно
2) Читаю про msp430, там есть карта адресного пространства...для чего она дана? Опять таки в практическом плане.
3) Допустим есть задача, по таймеру переходить в начало бесконечного цикла, можно ли сделать это без goto? Пишу на C. Вот просто как-то завис на этом...
- КРАМ
- Друг Кота
- Сообщения: 25184
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Мелкие вопросы по МК и ПЛИС.
1. У архитектуры фон Неймана память программ и память данных находятся в ОДНОМ АДРЕСНОМ ПОЛЕ и по сути есть единая память.
В гарвардской эти две памяти адресуются в разных полях и физически это разная память.
2. Во всех контроллерах всегда приводится карта памяти. Иначе как ее распределять?
3. По таймеру можно делать переход ТРЕМЯ способами.
а) чтение на лету, сравнение и переход по совпадению константы и состояния счетчика
б) программная проверка флага переполнения счетчика и переход по условию взведенного флага
в) прерывание от счетчика по переполнению (совпадению со значением регистра цифрового компаратора этого счетчика) и АППАРАТНЫЙ переход по вектору (адресу) этого прерывания, где и размещена программа обработки.
В гарвардской эти две памяти адресуются в разных полях и физически это разная память.
2. Во всех контроллерах всегда приводится карта памяти. Иначе как ее распределять?
3. По таймеру можно делать переход ТРЕМЯ способами.
а) чтение на лету, сравнение и переход по совпадению константы и состояния счетчика
б) программная проверка флага переполнения счетчика и переход по условию взведенного флага
в) прерывание от счетчика по переполнению (совпадению со значением регистра цифрового компаратора этого счетчика) и АППАРАТНЫЙ переход по вектору (адресу) этого прерывания, где и размещена программа обработки.
Re: Мелкие вопросы по МК и ПЛИС.
ну я новой информации не узнал...
1 и 2ое про память читал, в чём это выразится на практике не понимаю, т.е. зачем мне эта информация вообще нужна?
3. Ну да... генерируется прерывание... как перейти в цикл в main() ...?
я что-то типа имею ввиду, как должно выглядеть..
TimeIRQ()
{
while(1)
//операторы
}
int main()
{
while(1)
//операторы
}
вообщем я навереное не корректно задал вопрос..
1 и 2ое про память читал, в чём это выразится на практике не понимаю, т.е. зачем мне эта информация вообще нужна?
3. Ну да... генерируется прерывание... как перейти в цикл в main() ...?
я что-то типа имею ввиду, как должно выглядеть..
TimeIRQ()
{
while(1)
//операторы
}
int main()
{
while(1)
//операторы
}
вообщем я навереное не корректно задал вопрос..
- КРАМ
- Друг Кота
- Сообщения: 25184
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Мелкие вопросы по МК и ПЛИС.
Си абстрагирует программиста от архитектуры и адресного пространства. Эти вопросы решает компилятор. Но не все же пишут на Си....
Возврат из прерывания в Си осуществляется АВТОМАТИЧЕСКИ по завершению собственно обработчика этого прерывания (ISR).
Выход из прерывания по goto - моветон и создание себе кучи проблем с поддержанием стека.
Если нужно выполнить некую подпрограмму по условию прерывания, то есть ДВА варианта:
а) эту подпрограмму (функцию) вставляют в тело обработчика
б) в обработчике взводят некий программный флаг, а при выходе в main в цикле этого main проверяют этот флаг и если он установлен, то вызывают эту функцию. В функции флаг сбрасывают.
Возврат из прерывания в Си осуществляется АВТОМАТИЧЕСКИ по завершению собственно обработчика этого прерывания (ISR).
Выход из прерывания по goto - моветон и создание себе кучи проблем с поддержанием стека.
Если нужно выполнить некую подпрограмму по условию прерывания, то есть ДВА варианта:
а) эту подпрограмму (функцию) вставляют в тело обработчика
б) в обработчике взводят некий программный флаг, а при выходе в main в цикле этого main проверяют этот флаг и если он установлен, то вызывают эту функцию. В функции флаг сбрасывают.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Переместил последние вопросы про кнопки сюда - viewtopic.php?p=1847347#p1847347
- oleg63m
- Друг Кота
- Сообщения: 20132
- Зарегистрирован: Чт сен 01, 2011 12:53:27
- Откуда: ТьмуТаракания. Почетный житель подмостовья
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
http://www.mirmk.net/content/view/117/27/
Попался тут на глаза адресок, может кому сгодится по жизни
Программа - помощник для подбора микроконтроллера AVR
Попался тут на глаза адресок, может кому сгодится по жизни
Программа - помощник для подбора микроконтроллера AVR
Шекспир сказал: Судить меня -дано лишь Богу, другим я укажу дорогу... https://natribu.org/
Я его полностью поддерживаю.
Программирую на Fuse AtmelAVR.
Я его полностью поддерживаю.
Программирую на Fuse AtmelAVR.
- coredumped
- Опытный кот
- Сообщения: 838
- Зарегистрирован: Вт апр 12, 2011 18:38:19
- Откуда: с Земли
Re: Мелкие вопросы по МК и ПЛИС.
Лучше и дешевле http://www.st.com/web/en/catalog/mmc/FM141/SC1169
Все будет только лучше, в крайнем случае - хуже.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
Повторюсь: http://www.mymcu.ru/
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]