Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: mega128+VMLAB+TTY
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Rattlesnake
ПЛЗ, ткните что я не так делаю.. Начинаю разбираться с МП, а тут затык..
Хочу вывести на TTY "Hello, world", но ни чего не получается..
prnt.c:
#include <mega128.h>
#include <stdio.h>
void main(void)
{
// USART0 initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART0 Receiver: Off
// USART0 Transmitter: On
// USART0 Mode: Asynchronous
// USART0 Baud rate: 38400
UCSR0B=0x00;
UCSR0A=0x00;
UCSR0C=0x86;
UBRR0H=0x00;
UBRR0L=0x0C;
UCSR0B=0x08;
//#asm("sei")

while (1)
{
printf("hello");
};
}

VMLAB:
prnt_vm.prj:
.MICRO "ATmega128"
.TARGET "prnt.hex"
.TOOLCHAIN "GENERIC"
.COFF "prnt.cof" ; " "
.SOURCE "prnt__.c"

.TRACE ; Activate micro trace

; Following lines are optional; if not included
; exactly these values are taken by default
; ------------------------------------------------------------
.POWER VDD=5 VSS=0 ; Power nodes
.CLOCK 1meg ; Micro clock
.STORE 250m ; Trace (micro+signals) storage time


X1 TTY(38400 8) PD0 PD1


Где я что неправильно делаю?
Pyku_He_oTTyda
осмотрелся, потру за ненадобностью
Палыч
Цитата(Rattlesnake @ Apr 19 2007, 13:49) *
X1 TTY(38400 8) PD0 PD1
Где я что неправильно делаю?


В m128 UART0 имеет выводы на РЕ0-РЕ1
=GM=
Цитата(Rattlesnake @ Apr 19 2007, 08:49) *
ПЛЗ, ткните что я не так делаю.. Начинаю разбираться с МП, а тут затык..
Хочу вывести на TTY "Hello, world", но ни чего не получается..

// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART0 Receiver: Off
// USART0 Transmitter: On
// USART0 Mode: Asynchronous
// USART0 Baud rate: 38400
UCSR0B=0x00;
UCSR0A=0x00;
UCSR0C=0x86;
UBRR0H=0x00;
UBRR0L=0x0C;
UCSR0B=0x08;
//#asm("sei")

while (1)
{
printf("hello");
};
}


X1 TTY(38400 8) PD0 PD1
Где я что неправильно делаю?

Если у вас клок 1 Мгц, то вы передаёте на скорости 4800 бод. Ну а принимать хотите на 38400? Так не пойдёт, скорости на передающей и приёмной стороне должны сооответствовать друг другу.

Ну и 7-ой бит в регистре UCSR0C не рекомендуется задействовать для атмеги128.
slog
А putchar() то существует?
WHALE
Я так понимаю,это Кодвижн?
Тогда можно просто взять пример из хэлпа по выводу в UART,используя putchar()
#include <stdio.h>
flash char string_Hello "Hello";
unsigned char index_uart_tx;
while(string_Hello[index_uart_tx]) putchar(string_Hello[index_uart_tx++]);
Rattlesnake
Всем спасибо.
Были подозрения, что нужно юзать PE0 PE1 (даташит был прав smile.gif , но примеры только под мегу8 нашел sad.gif - доверился им ), даже пробывал - шли данные, но мусор (те я ожидал несколько другие данные, вернул на PD0 PD1 - а вдруг... не прошло )..

Что касается частоты, то менял ее (только в ВМЛАБ"е), а в КОДвижн нет (изначально 1 МГЦ стоял, но сразу не нашел где установки).

Результаты:
1. Частоту нужно проверять дважды
2. Доверять Даташиту

Еще раз СПС
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.