- Вложения
-
- asu.zip
- (43.33 КБ) 223 скачивания
ATmega32 вывод информации через COM порт
- Реклама
Неа... ни пахаить...у меня нету половины всяких либов и lkk чтоб скомпилить проект...да и просто класс сериалки беру создаю откруваю на 230400 и меня снова куда-то далеко посылають
жееееесть....(
- Сообщения: 134
- Зарегистрирован: Вс авг 01, 2010 16:05:25
Здравствуйтею. Вот такое дело изучаю WinAVR после CVAVR
#include <avr/interrupt.h> // прерывание
#include <avr/io.h> // библиотека I/O
#include <util/delay.h> // библиотеки пауз
#include <stdio.h>
#include <avr/pgmspace.h>
#define kn1 (PINC & (1<<0))
void proba (void)
{
if(kn1==0)
{
printf("%3u\r",35);
while(kn1==0);
_delay_ms(50);
}
int main(void)
{..........
...........
}
while (1)
{ proba();}
Это вкрадце. Пытаюсь просто при нажатии кнопки выдовала 35. В CVAVR работает,а WinAVR нет чё не так подскажите,симулировал на AVRstudio+PROTEUS. Спасибо.
#include <avr/interrupt.h> // прерывание
#include <avr/io.h> // библиотека I/O
#include <util/delay.h> // библиотеки пауз
#include <stdio.h>
#include <avr/pgmspace.h>
#define kn1 (PINC & (1<<0))
void proba (void)
{
if(kn1==0)
{
printf("%3u\r",35);
while(kn1==0);
_delay_ms(50);
}
int main(void)
{..........
...........
}
while (1)
{ proba();}
Это вкрадце. Пытаюсь просто при нажатии кнопки выдовала 35. В CVAVR работает,а WinAVR нет чё не так подскажите,симулировал на AVRstudio+PROTEUS. Спасибо.
а вы вывод-то в UART определили самостоятельно? WinAVR не делает этого за вас! лично я использую такой модуль (см. вложение) - просто подключите его к проекту и в его хидере укажите требуюемую скорость связи и другие параметры, что вам потребуются... после этого printf() будет выводить в USART автоматически.TICLIR писал(а):В CVAVR работает,а WinAVR нет чё не так подскажите,симулировал на AVRstudio+PROTEUS.
- Вложения
-
- 000.rar
- (1.66 КБ) 257 скачиваний
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 134
- Зарегистрирован: Вс авг 01, 2010 16:05:25
а вы вывод-то в UART определили самостоятельно?
Я понимаю так,в регистре UCSRB при установке бита TXEN,вывод TXD становится выходом
UART.Или я что то не догоняю.
- Реклама
"вывод" - это я имел ввиду "процесс вывода байта", а не режим работы ножки МКTICLIR писал(а):а вы вывод-то в UART определили самостоятельно?
Я понимаю так,в регистре UCSRB при установке бита TXEN,вывод TXD становится выходом
UART.Или я что то не догоняю.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 134
- Зарегистрирован: Вс авг 01, 2010 16:05:25
ARV Спасибо, буду пробовать. Подскажите что за переменные такие со звёздочкой
*cp, *cp2;*rxp;FILE *stream, uint8_t count,после cvavr так всё трудно понимается.
*cp, *cp2;*rxp;FILE *stream, uint8_t count,после cvavr так всё трудно понимается.
переменные со звездочкой - это указатели. это стандартная возможность языка Си - в CVAVR это тоже есть. а трудно вам потому, что вы Си не знаете, а напрасно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 134
- Зарегистрирован: Вс авг 01, 2010 16:05:25
ARV
Большое Спасибо. Заработало. Долго не мог понять куда чё подключать. А принимать данные с компа будет?лично я использую такой модуль (см. вложение) - просто подключите его к проекту и в его хидере укажите требуюемую скорость связи и другие параметры, что вам потребуются... после этого printf() будет выводить в USART автоматически.
для приема надо добавить функцию ввода байта, однако, с этим не все так просто: стандартные функции ввода из stdlib.h работают по ожиданию, т.е. "зависают" до тех пор. пока не получат то, что хотят. так что с вводом надо извращаться...TICLIR писал(а):ARVБольшое Спасибо. Заработало. Долго не мог понять куда чё подключать. А принимать данные с компа будет?лично я использую такой модуль (см. вложение) - просто подключите его к проекту и в его хидере укажите требуюемую скорость связи и другие параметры, что вам потребуются... после этого printf() будет выводить в USART автоматически.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 134
- Зарегистрирован: Вс авг 01, 2010 16:05:25
А можно какой примерчик, что бы предстевление иметь, а то DEMO ну не чё понять не могу.ARV писал(а): для приема надо добавить функцию ввода байта, однако, с этим не все так просто: стандартные функции ввода из stdlib.h работают по ожиданию, т.е. "зависают" до тех пор. пока не получат то, что хотят. так что с вводом надо извращаться...
- Сообщения: 134
- Зарегистрирован: Вс авг 01, 2010 16:05:25
Вроде чё то получается, а вот можно как то преобразовать(представить) ASCII-код в целое число для того что бы можно было как то их обрабатывать и отображеть зажиганием светододов, или это глупость.
функция atoi вам в помощьTICLIR писал(а):Вроде чё то получается, а вот можно как то преобразовать(представить) ASCII-код в целое число для того что бы можно было как то их обрабатывать и отображеть зажиганием светододов, или это глупость.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
если надо преобразовать одну цифру, то достаточно вычеть из кода 0x30 (48). если более 1 разряда, то как сказал ARV.
- Сообщения: 134
- Зарегистрирован: Вс авг 01, 2010 16:05:25
Спасибо. А вот как её оформить? Что то пробовал всяко, но ни как.ARV писал(а):функция atoi вам в помощь
дык такTICLIR писал(а):Спасибо. А вот как её оформить? Что то пробовал всяко, но ни как.
Код: Выделить всё
char *number = "128";
int n = atoi(number);
- Сообщения: 134
- Зарегистрирован: Вс авг 01, 2010 16:05:25
Это и всё? Никаких заголовочных файлов не надо?TICLIR писал(а):char *number = "128";int n = atoi(number);
- Сообщения: 134
- Зарегистрирован: Вс авг 01, 2010 16:05:25
Доброе время суток! Может кто сталкивался с таким делом.
Отправляю данные с компа на контроллер контр дожен ответить и он отвечает но зацикливается,и ни как не могу исправить это дело вот. Проверял на протеусе всё чётко. ПРограмма для проверки COM Port Toolkit 3.7 да впрочем и другие программы так же работают, а зто отрывок
#include <stdlib.h>
#include <avr/interrupt.h> // прерывание
#include <stdio.h> // ввод вывод в UART
#include "com_io.h"
#include "com_io.c"
#include <avr/io.h> // библиотека I/O
#include <util/delay.h> // библиотеки пауз stdlib
int tr=0;
ISR(USART_RXC_vect) // USART, Rx Complete
{ scanf("%d",&tr);
printf("summa=%3u\n",tr);
}
int main(void)
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19;
sei(); // глобальное разрешение прерываний
while (1)
Отправляю данные с компа на контроллер контр дожен ответить и он отвечает но зацикливается,и ни как не могу исправить это дело вот. Проверял на протеусе всё чётко. ПРограмма для проверки COM Port Toolkit 3.7 да впрочем и другие программы так же работают, а зто отрывок
#include <stdlib.h>
#include <avr/interrupt.h> // прерывание
#include <stdio.h> // ввод вывод в UART
#include "com_io.h"
#include "com_io.c"
#include <avr/io.h> // библиотека I/O
#include <util/delay.h> // библиотеки пауз stdlib
int tr=0;
ISR(USART_RXC_vect) // USART, Rx Complete
{ scanf("%d",&tr);
printf("summa=%3u\n",tr);
}
int main(void)
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19;
sei(); // глобальное разрешение прерываний
while (1)


