для полного контроля - промоделируйте в мплаб сим. debugger - select tool - mplab sim debugger -setting -UART IO enable uart io вкладка output File - наберите 123.txt или подобное. После запуска появится файл с этим именем , в котором будет эта тестовая строка. Press keyboard for test Echo!
И еще - в инициализацию добавьте строчки TRISC=0xC0; PORTC=0; ABDEN=0; BRG16=0;
Эту инициализацию я взял со своего старого проекта на 887, в котором уарт работал, так что если это не поможет - дело не в пике.
Еще раз проверьте, к тем ли ногам разъема ком порта оно идет.
Зарегистрирован: Вс сен 11, 2011 12:35:11 Сообщений: 378
Рейтинг сообщения:0
Сделал все, нет в 1234 записей. Сперва ошибку программа выдала что гнет файла, ну я запустил, файл не создался. Создал вручную всеравно не прописалось туда ничего. Где же сабака порылась.. Все работает кроме ком блин.
Зарегистрирован: Вс сен 11, 2011 12:35:11 Сообщений: 378
Рейтинг сообщения:0
Решил вывести на дисплей прием и передачу.
Код:
void main() { usart_init(); // Initial USART baudrate 9600 bps usart_puts("Press keyboard for test Echo!\r\n"); // Display first message while(1) // Infinite loop { usart_puts("Press keyboard for test Echo!\r\n"); // Display first message if(read_) { inttolcd(141,RCREG); // Show counter value inttolcd(203,TXREG);
read_=0; usart_putc(RCREG); } } } //----------
Вытаскиваешь контакт RX ПИКА в воздух, на дисплее начинается билибурда, то есть прием есть. С компа нет.. В передаче тут же прописывается число 10 и не меняется никогда.
i++; // usart_puts(i); // Display first message TXREG = i; delay(250); // if(read_) //{ inttolcd(141,RCREG); // Принятые данные inttolcd(203,TXREG+" "+i); // То что передается if (i > 3)i = 0;
Перемычку перемыкаешь на дисплее возвращается все что передаешь. Перемычку до макса и после, все работает, на компе порт коротишь в гипертерминале возвращается. Комп с устройством не коннектятся блин, матных слов уже не хватает.
еще перемыкаешь 13 и 14 макса то возвращается в дисплей и скачут символы повторяющиеся в гипертерминале.. И непонятно почему обмена нет. Перепаивал TX и RX местами на компе. Шнурок сам паял может думал перепутал, не помогает, паял по схеме.
Откопал я осциллограф свой древний, пора новый покупать.. В общем пакеты шлются с пика с амплитудой 3.3 вольт. А после макса на комп уже 10 вольт. Как то странно.
Действительно странно, если учесть, что 5 вольтовое питание - откуда 3.3 ? Внутри макса источник напряжения - из+5 -> +12 в и -12 в, и преобразователи уровня ТТЛ - в эти +=12. Проверьте напряжение на конденсаторах - может быть +-10 Вольт, это нормально. После этого проверьте сам макс, отключите мк и закоротите у макса ноги 11 и 12. Должно идти эхоотражение (уже через макс).
Зарегистрирован: Вс сен 11, 2011 12:35:11 Сообщений: 378
Рейтинг сообщения:0
Да блин в задницу эту макс уже. Соберу на 2-х транзисторах. Там просто ключик в одну сторону и другую?? Если коротить со стороны пика отсоеденив пик то эхо нет, после макса есть. А максов у меня 2 штуки. И получается обе не пашут. И по ножкам проверял, все правильно подключено. Бред какой то.
Зарегистрирован: Вс сен 11, 2011 12:35:11 Сообщений: 378
Рейтинг сообщения:0
Там в максе 2 канала. У меня задействованы ножки 7.8.9.10 вот если коротить 9 и 10 отсоединив пик то эхо нет. А если коротить 7 и 8 приччем надо только вынуть макс то эхо есть, со вставленным максом нет.. В общем непонятно чего то. Щас на 2-х вс547 соберу.
Зарегистрирован: Вс сен 11, 2011 12:35:11 Сообщений: 378
Рейтинг сообщения:0
Ёшкинкот! собрал преобразователь все заработало. В общем похоже перепутана распайка сом порта в компе и еще паленые обе макса. В общем спасибо за помощь. Щас буду разбираться, главное железо работает и программа. Все емкости правильно подключены, все контакты правильно подключены. В общем ничего не понял так. На максе не пашет на 2-х транзюках пашет. Как вообще макс проверить еще можно простым способом?
У меня с максами никогда проблем не было и я ничего не понимаю. Как проверить - вход коротить через резистор то на плюс, то на землю и смотреть изменения на выходе.
Зарегистрирован: Вс сен 11, 2011 12:35:11 Сообщений: 378
Рейтинг сообщения:0
Как можно осуществить регулировку оборотов коллекторного микродвигателя да так что бы момент на валу оставался тем же и не падал. Скорость падает а мощность остается та же. Реально как то программно это осуществить на 16f887 и рассыпухе? Мне надо регулятор вращения в зависимости от температуры. Термометр уже готов и работает.
Зарегистрирован: Вс сен 11, 2011 12:35:11 Сообщений: 378
Рейтинг сообщения:0
А энкодер что за штука такая вообще??
Мне надо вентилятором (кулер от компа) управлять 80х80х25мм с третьим выводом или с 4-мя. С третьим выводом я понял как устроен а с четырьмя пока не искал но может вот как раз с 4мя и есть регулировка с моментом? Тока вентилятор не в компе стоит а в устройстве где насос насос во время работы греется но не сразу, вот хочу плавно регулировать обороты, считывать обороты и если обороты становятся критичные выключать устройство и на дисплей выводить ошибку вентилятора. Ну рано или поздно подшипники заклинит.
Разобрал кулер и вспомнил что он не коллекторный а там регулятор с датчиком холла. AH276 Это совсем другое управление.
Зарегистрирован: Вс сен 11, 2011 12:35:11 Сообщений: 378
Рейтинг сообщения:0
В общем компилятор Hi-tech C Pro ругается на русский шрифт когда его выводишь на дисплей. Например Error [228] D:\PICProgramming\mplab\Vacuum-tonus\tonus.c; 331.22 illegal character (0xD3) Error [228] D:\PICProgramming\mplab\Vacuum-tonus\tonus.c; 331.22 illegal character (0xE4) Error [228] D:\PICProgramming\mplab\Vacuum-tonus\tonus.c; 393.22 illegal character (0xC3) Error [228] D:\PICProgramming\mplab\Vacuum-tonus\tonus.c; 394.22 illegal character (0xCF)
Код:
lcd_puts (128, "Привет");
Пробовал по статье http://radiokot.ru/articles/31/ Получается если не все билибурда то частично непонятно что. Ощущение что не совпадают адреса. Но если эти непонятные символы вывести по одному то все выводится как положено. Только в общем массиве почему то не получается. Не понимаю что за бред.
Например const unsigned char logo1 [18] = {0x3E, 0x3E, 0xA4, 0xE3, 0x70, 0x61, 0xB3, 0x63, 0xBF, 0xB3, 0x79, 0xB9, 0xBF, 0x65, 0x3C, 0x3C}; // >>Здравствуйте<< На дисплее будет читайте внимательно по буквам >>Згравствуйте<< А если сделать так const unsigned char logo1 [1] = {0xE3}; На дисплее будет "д". Что за фигня?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения