Страница 2 из 2
Добавлено: Сб авг 04, 2007 20:23:33
Mozart
Почему оно не работает?
потому что не работает... зарплату заплатите этому УСАРТу у него вообще забастовка...
Исправил на INTERRUPT(SIG_UART_TRANS) и INTERRUPT(SIG_UART_RECV)
да оставьте вы SIGNAL, а вот нули убрали это хорошо... это достойно
Код: Выделить всё
void USART_Init(unsigned int baud) //Инициализация УСАРТ
{
UCSRC = 0;
uint16_t baud1;
baud1 = (F_CPU/16/baud - 1);
UBRRH = (unsigned char)(baud1>>8);
UBRRL = (unsigned char)baud1;
UCSRB = (1<<RXEN)|(1<<RXCIE); //разрешить приём и прерывание
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0); //8 байт, 2 стоп бита
}
вот ваша функция должна так выглядеть... потом не настраивайте PD0, PD1 МК сам должен это всё настроить...
ах да вот что в протеусе частоту МК постаьте, которая F_CPU
з.ы. потом ещё одно если вы хотите установить бит то пользуйтесь либо _BV(bit); либо (1 << bit); читаемость улучшится в 10 раз...
Добавлено: Сб авг 04, 2007 23:17:06
Mozart
заработала??
Добавлено: Вс авг 05, 2007 00:21:08
Томатный
Нет. Если бы заработало уже все бы знали
С передатчиком всё в порядке это 100% - просматривал виртуальным осцилографом УСАРТ, посылает всё как положено.
А вот приёмник виснет!
Не понимаю почему, а самое непонятное почему имено на том месте.
Код: Выделить всё
PORTC = UDR;
a = massive[1];
b = massive[2];
LCD_Comm(0x80);
LCD_Data((a/100)%10 + 0x30);
После этой строки зацикливается в прерывании...
Наверно там всё просто но у меня уже голова не варит

Всё я спать.
Добавлено: Вс авг 05, 2007 01:08:46
Mozart
хитрый...
Наверно там всё просто но у меня уже голова не варит Всё я спать.
а я бы сейчас тоже спать бы пошёл... так что именно не работает?? ничего не принимается??
Добавлено: Вс авг 05, 2007 01:32:12
Mozart
в общем
1. приятных вам снов...
2. поставьте резисторы по 1к на каждую кнопку с подтяшкой на +5В!!!
а то у вас не понятное состояние кнопок...
3. у вас логика программы вообще жуткая...
если отбросить дисплеи и ацп то подумайте как следует!!! как вы будете передавать данные с одного мк на другой
я вам выкладываю свои труды... в урезанном виде....
Добавлено: Вс авг 05, 2007 15:23:12
Томатный
я вам выкладываю свои труды... в урезанном виде....
Код: Выделить всё
SIGNAL(SIG_UART_RECV)
{
if (cur < 3) massive[cur++] = UDR;
else
{
cur = 0;
massive[cur++] = UDR;
a = massive[0];
b = massive[1];
c = massive[2];
}
}
зделал как у вас, только добавил "massive[cur++] = UDR;"
потому что получается что теряем пакет при cur = 3
УРА!!! УРА!!! УРА!!!

Работает
Mozart, Спасибо Вам БОЛЬШОЕ за помощь!
Добавлено: Вс авг 05, 2007 15:37:34
Mozart
поздравляю...
теперь оптимизируйте... убирайте лишниее ЛСД если есть... ибо стоят они по 200р за штуку...
код программы разносите по файлам... пишите описание.. и в папочку "My_development"
Добавлено: Вс авг 05, 2007 15:49:15
Mozart
это не правильно!!!
Код: Выделить всё
cur = 0;
massive[cur++] = UDR;
a = massive[0];
b = massive[1];
c = massive[2];
правильнее было бы так
Код: Выделить всё
cur = 0;
a = massive[0];
b = massive[1];
c = massive[2];
massive[cur++] = UDR;
Добавлено: Вс авг 05, 2007 16:26:29
Томатный
теперь оптимизируйте... убирайте лишниее ЛСД если есть...
То я так для прикола 3 штукин наципил
ибо стоят они по 200р за штуку...
у нас дороже
код программы разносите по файлам... пишите описание.. и в папочку "My_development"
оки
наверное я ещё эту програму помучаю...
зделаю посылки по 8 бит в которых первых 4 будет адрес пакета,
а младшие 4 бита будут сами данные.
а на приёмнике это всё будет распознаваться и склевиваться байты по 4 бита.
это так на всякий случай чтоб если потиряю посылку ничего не поперемешывалось...
Добавлено: Вс авг 05, 2007 16:30:33
Томатный
Mozart писал(а):это не правильно!!!
Код: Выделить всё
cur = 0;
massive[cur++] = UDR;
a = massive[0];
b = massive[1];
c = massive[2];
правильнее было бы так
Код: Выделить всё
cur = 0;
a = massive[0];
b = massive[1];
c = massive[2];
massive[cur++] = UDR;
точно

Добавлено: Вс авг 05, 2007 16:49:33
Mozart
мда... извращенству нет предела... тогда уж про CRC16 почитайте.... начните писать что-нить для компутера... что бы вся эта муть передавалась в комп...
з.ы. начните что-нить другое изучать... напишите статью коту... вам будут благодарны... например и2с актуально... сейчас еепром на и2с... возьмите приделайте к мк... соберите всё это в железо... сфоткайте видео снимите...
Добавлено: Вс авг 05, 2007 17:11:10
Томатный
извращенству нет предела...
ну почемуже...а вдруг в голову стукнит сигналы с Усарт по радио пустить...
начните писать что-нить для компутера... что бы вся эта муть передавалась в комп...
это ж ещё на комп программу писать надо...
напишите статью коту...
мне их читать надо, а не писать - я только начал осваивать МК
например и2с актуально...
с и2с уже работал - управлял аудиочипом TDA7314
соберите всё это в железо... сфоткайте видео снимите...
нету возможности в железе(на даный момент) - я начал активно осваивать МК потому, что нашол такой замечательный симулятор PROTEUS