реклама на сайте
подробности

 
 
> Шпак передача данных по USART
zeonix0
сообщение Aug 22 2011, 05:29
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 18-08-11
Пользователь №: 66 777



программа такая:
Код
#include <avr/io.h>
#include <avr/interrupt.h> //Для доступа к функции sei()
#include <avr/signal.h>    //Для доступа к макросу INTERRUPT
//Определяем одиннадцать выводимых строк (последняя - на тот случай, если был принят не цифровой символ)

char str0[] = "Zero";
char strl[] = "One";
char str2[] = "Two";
char str3[] = "Three";
char str4[] = "Four";
char str5[] = "Five";
char str6[] = "Six";
char str7[] = "Seven";
char str8[] = "Eight";
char str9[] = "Nine";
char strDefault[] = "Not digit";
unsigned char queueC, sendC;  //Индексы текущего и переданного символа
unsigned char queue[50];      //Очередь

ISR(USART0_TX_vect)  //Подпрограмма обработки прерывания при завершении передачи очередного символа.
{    //Если был передан не последний символ, то передаем текущий и увеличиваем счетчик переданных данных на 1
if (queueC != sendC) UDR = queue[sendC++];
}

//Функция формирования очереди символов из строки
void SendStr(char *s)
{
    queueC =0;    //Текущий символ - первый
    sendC = 1;    //Первый символ считаем уже переданным
    queue[queueC++] = 0x0D;       //Добавляем в конец очереди символы
    queue[queueC++] = 0x0A;       // возврата каретки и переноса строки. Просматриваем строку и помещаем в очередь символы.
    while (*s) queue[queueC++] = *s++;
    UDR = queue[0];              //Передаем первый символ, чтобы начать процесс
}

int main (void){
    char с;
    UCR = 0x58;
    UBRR = 0x33;
    sei();                    //Общее разрешение прерываний
    while(1)                //Бесконечный цикл
    {
        if (UCR & 0x80)    //Если UART принял символ от ПК,...
        {
        с = UDR;
            switch    (с)        //Анализируем символ и выводим соответствующую
            {                //строку через UART
                case    '0':    SendStr(str0); break;
                case    '1':    SendStr(strl); break;
                case    '2':    SendStr(str2); break;
                case    '3':    SendStr(str3); break;
                case    '4':    SendStr(str4); break;
                case    '5':    SendStr(str5); break;
                case    '6':    SendStr(str6); break;
                case    '7':    SendStr(str7); break;
                case    '8':    SendStr(str8); break;
                case    '9':    SendStr (str9); break;
                default: SendStr(strDefault);
            }
        }
    }    
}


лог ошибок такой:

Цитата
> "make.exe" all

-------- begin --------
avr-gcc (WinAVR 20100110) 4.3.3
Copyright © 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Compiling C: test3.c
avr-gcc -c -mmcu=atmega16a -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./test3.lst -std=gnu99 -MMD -MP -MF .dep/test3.o.d test3.c -o test3.o
In file included from test3.c:3:
c:/winavr/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
test3.c:20: warning: 'USART0_TX_vect' appears to be a misspelled signal handler
test3.c: In function 'main':
test3.c:37: error: stray '\361' in program
test3.c:37: warning: useless type name in empty declaration
test3.c:38: error: 'UCR' undeclared (first use in this function)
test3.c:38: error: (Each undeclared identifier is reported only once
test3.c:38: error: for each function it appears in.)
test3.c:39: error: 'UBRR' undeclared (first use in this function)
test3.c:45: error: stray '\361' in program
test3.c:45: error: expected expression before '=' token
test3.c:46: error: stray '\361' in program
test3.c:46: error: expected expression before ')' token
make.exe: *** [test3.o] Error 1

> Process Exit Code: 2
> Time Taken: 00:01


вот например
Цитата
test3.c:37: error: stray '\361' in program


Код
char с;

что тут не так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zeonix0
сообщение Aug 31 2011, 06:23
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 18-08-11
Пользователь №: 66 777



IgorKossak, это какая кнопочка?

aba, ничего не изменилось. Стабильно приходит 80.
А если Rx и Tx на ком порте поменять местами то 0 будет приходить.

такое чувство что в железяке что-то не так подрубил... Вечером фотки скинуть постараюсь платы...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zeonix0   Шпак передача данных по USART   Aug 22 2011, 05:29
- - 777777   Вместо 'с' напиши 'c' ) У тебя пе...   Aug 22 2011, 05:52
- - zeonix0   аЦитата38: error: 'UCR' undeclared (first ...   Aug 22 2011, 05:57
|- - 777777   UCR undeclared скорее всего означает, что проект т...   Aug 22 2011, 06:03
- - zeonix0   makefile выложить? atmega16a там все есть.   Aug 22 2011, 06:08
|- - 777777   Цитата(zeonix0 @ Aug 22 2011, 10:08) make...   Aug 22 2011, 06:24
- - Genadi Zawidowski   В атмеге 16 UCSRA, например. И ISR(USART_TXC_vect)...   Aug 22 2011, 06:40
|- - zeonix0   Цитата(Genadi Zawidowski @ Aug 22 2011, 10...   Aug 22 2011, 09:19
|- - Genadi Zawidowski   Цитатавроде скомпилился норм... но правильно ли эт...   Aug 22 2011, 09:58
- - 777777   А что такое "шпак"?   Aug 22 2011, 06:55
|- - Genadi Zawidowski   Цитата(777777 @ Aug 22 2011, 10:55) А что...   Aug 22 2011, 06:59
- - zeonix0   шпак это мужик который написал проги для МК, котор...   Aug 22 2011, 07:03
|- - 777777   Цитата(zeonix0 @ Aug 22 2011, 11:03) шпак...   Aug 22 2011, 07:05
|- - ILYAUL   Де жавю Цитата'Aug 18 2011, 15:15' post...   Aug 22 2011, 07:40
- - zeonix0   меня прикалывает шпак просто... Может кто посовет...   Aug 22 2011, 07:47
- - zeonix0   ген , спасибо. Попробую   Aug 22 2011, 12:12
|- - Genadi Zawidowski   Цитата(zeonix0 @ Aug 22 2011, 16:12) ген ...   Aug 29 2011, 15:28
- - zeonix0   RE: Шпак передача данных по USART   Aug 29 2011, 07:07
|- - 777777   Цитата(zeonix0 @ Aug 29 2011, 11:07) Кодc...   Aug 29 2011, 07:44
- - zeonix0   какая разница этого в контексте данного топика? ну...   Aug 29 2011, 08:56
- - Vasily_   Осциллом надо измерять а не вольтметром, хотя не и...   Aug 29 2011, 09:06
|- - zeonix0   Цитата(Vasily_ @ Aug 29 2011, 13:06) Осци...   Aug 29 2011, 09:11
- - GDI   Если вместо -8.5В меяется +6.48В, то однозначно до...   Aug 29 2011, 12:31
- - zeonix0   похоже что макс действительно сдох, заменил его на...   Aug 30 2011, 12:20
- - aba   Похоже что то напутано со скоростями. Вы уверены, ...   Aug 30 2011, 12:28
- - zeonix0   CODE##############################################...   Aug 30 2011, 12:33
- - aba   У вас есть срока ЦитатаCFLAGS += -Wall -gdwarf-2 -...   Aug 30 2011, 12:43
- - zeonix0   на кварце написано 16 ... бррр из-за этого что ли ...   Aug 30 2011, 12:44
- - aba   1 - в мэйк файле измените значение F_CPU=8000000UL...   Aug 30 2011, 13:11
- - IgorKossak   Господа, научитесь оформлять длинные коды в тэги c...   Aug 30 2011, 17:59
- - IgorKossak   Цитата(zeonix0 @ Aug 31 2011, 09:23) Igor...   Aug 31 2011, 07:29


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 21:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01416 секунд с 7
ELECTRONIX ©2004-2016