proteus vs cvavr

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 5
Зарегистрирован: Ср авг 04, 2010 18:30:26

Сообщение akori »

третий день не могу разобраться в фундаментальном затыке
в протеусе собрал простую схемку с atmega16 + виртуальный терминал
синхронизация МК внешная - кварц на 8мГц
reset - через 10кОм на +5
далее, в бесплатной версии cvavr создаю простую программку которая через uart должна выводить строчку на терминал (стандартная ф-я библиотеки stdio - puts)
пока дело не касается работы с этой библиотекой все вроде работает, порт Б в цикле мигает, ошибок нет...
но как только разкомментируешь putchar('Q') - начинается затык...
код инициализации взят из хелпа cv

Код: Выделить всё

//Настройка параметров UART
/* quartz crystal frequency [Hz] */
#define xtal 8000000L
/* Baud rate */
#define baud 9600

// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART0 Receiver: On
// USART0 Transmitter: On
// USART0 Mode: Asynchronous
// USART0 Baud Rate: 9600
    UCSRA=0x00;
    UCSRB=0x18;
    UCSRC=0x86;
/* initialize the USART's baud rate */
    UBRRH=(xtal/16/baud-1) >> 8;
    UBRRL=(xtal/16/baud-1) & 0xFF;
сам цикл

Код: Выделить всё

while (1)
      {
      PORTB=0;
      for (i=0;i<60000;i++);
      PORTB=0xff;
      for (i=0;i<60000;i++);
       putchar('A');
      }
ткните носом куда копать?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 5826
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Откуда: Воронеж

Сообщение >TEHb< »

Может с putchar что не то? Ну там буфер не объявлен или даже терминал не так настроен.... Попробуйте вместо

Код: Выделить всё

putchar('A');
написать

Код: Выделить всё

UDR='A';
Усложнять просто. Упрощать сложно.
Контактная информация:
Реклама
Родился
Сообщения: 5
Зарегистрирован: Ср авг 04, 2010 18:30:26

Сообщение akori »

бррр...
в общем, ночером снес нафик все выкрутасы и стал пробовать на голой связке atmega16 + VT
и нефига, глючит...
поставил atmega32 с тем же кодом - работает... :kill:
Вымогатель припоя
Сообщения: 541
Зарегистрирован: Вт фев 09, 2010 17:52:26

Сообщение codenamehawk »

Код: Выделить всё

while (1)
      {
      PORTB=0;
      for (i=0;i<60000;i++);
      PORTB=0xff;
      for (i=0;i<60000;i++);
       putchar('A');
      }
ткните носом куда копать?
Попробуйте так

Код: Выделить всё

char k;

k='A';
putchar(k);

У вас 'A' хранится во FLASH, а должна в SRAM
Если проект создан визардом, должен работать.

Код: Выделить всё

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
И установите скорость виртуал терминал 9600
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 5826
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Откуда: Воронеж

Сообщение >TEHb< »

А вообще нафиг эмуляторы, даёшь железо!
Усложнять просто. Упрощать сложно.
Контактная информация:
Реклама
Вымогатель припоя
Сообщения: 541
Зарегистрирован: Вт фев 09, 2010 17:52:26

Сообщение codenamehawk »

>TEHb< писал(а):А вообще нафиг эмуляторы, даёшь железо!
В железе, без JTAG, отладка займет больше времени.
Удобнее отладить в эмуляторе, потом в железо.
Реклама
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

Тема по Протеусу - в разделе "Цифровая техника"!
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»