Перейти к содержанию
    

разочеровался в PROTEUSE

:(

Работает только с маленькими програмками, не любит подпрограммы обработки прерывания (то работает то нет, так и не понял в чём проблемма)

 

AVRSTUDIO есть, но он програмный отладчик, лучше бы схемный. Может есть что нибудь аналогичное PROTEUSU, что б с COF файлами работал, или каким то образом Си понимал

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:(

Работает только с маленькими програмками, не любит подпрограммы обработки прерывания (то работает то нет, так и не понял в чём проблемма)

 

AVRSTUDIO есть, но он програмный отладчик, лучше бы схемный. Может есть что нибудь аналогичное PROTEUSU, что б с COF файлами работал, или каким то образом Си понимал

 

Ну чтож... у меня тоже самое было... в железе все работало, а в Proteus'е - нет! Потом на Телесистемах мне сказали, что все эти софтовые отладчики - игрушки. Я их и не использовал ни разу, не Proteus, не Vmlab. Хотя вполне возможно, что где-то они могут и помочь.

 

А насчет схемной отладки - так лучше реально собранного железа ничего быть не может, а если еще Jtag прикрутить, то вообще жизнь медом кажется :) Правда я и Jtag не использовал, я про него говорю со слов вполне компетентных людей, которым я доверяю.

 

P.S. Да вот еще... AVRStudio на мой взгляд работает вполне сносно, правда есть тоже глюки, но я ни разу не встречался с ними. В основном я на студии проверял ход првильности алгоритма и время выполнения "куска" кода.

Изменено пользователем haker_fox

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AVRSTUDIO есть, но он програмный отладчик, лучше бы схемный. Может есть что нибудь аналогичное PROTEUSU, что б с COF файлами работал, или каким то образом Си понимал

 

Дык а зачем оно Вам? Эмуляторы тормозят.. на готовом железе куда приятней и полезней отлаживать. AvrStudio+ jtag+железо - лучшего отладчика для avr не найти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:(

Работает только с маленькими програмками, не любит подпрограммы обработки прерывания (то работает то нет, так и не понял в чём проблемма)

 

AVRSTUDIO есть, но он програмный отладчик, лучше бы схемный. Может есть что нибудь аналогичное PROTEUSU, что б с COF файлами работал, или каким то образом Си понимал

 

Наверна проблемма твоя в версии Протеуса

У меня 6.73 СП3 ПРО -

Счас работаю с программой на 17к (атмега 32) + Прога на 4 К (атмега 8) + модель 24с04

Когда работал в 6.5 - проблеммы были.

Тоже говорят мне о Демо версиях переделаных в ПРО

 

Аналогов программы нету (развечто WMLAB но он корявый и неудобный)

 

Ищи проблеммы у себя

Для отладки советую отключить оптимизацию кода компиллером (если это возможно)

 

По крайне мере с отладкой формата IAR проблемм нету.

 

На саите производителя Протеуса есть форум

Может тебе там чтото подскажут.

 

Про эмуляторы:

1. Эмулятор останавливает процессор а вся переферия + обект управления проболжает безконтрольно работать.

2. Есть еще Реалтайм мониторы но они крадут быстродействие ....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня то ж такая версия, но код в Си написан, может в этом и проблемма???

А на счёт ошибок....AWRSTUDIO работает как нада а Протеусу что то не нравится, вот элемнтарный пример:

Всё смотреть не надо, достаточно того, что есть подпрограмма обработки прерывания( interrupt [TWI] void twi_isr(void)) , все прерывания разрешены(#asm("sei")).........

формируем СТАРТ с разрешением последушего прерывания....

А после посылки старта, программа даже не переходит на подпрограмму прерывания, хотя все условия выполняются (смотрел регистры)............

Ну вот и не пойму в чём проблемма то?

 

/*****************************************************

This program was produced by the

CodeWizardAVR V1.24.6 Standard

Automatic Program Generator

© Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

e-mail:[email protected]

 

Project :

Version :

Date : 18.01.2006

Author : TeleSys Embedded

Company : FastmanSoft Inc.

Comments:

 

 

Chip type : ATmega16

Program type : Application

Clock frequency : 16,000000 MHz

Memory model : Small

External SRAM size : 0

Data Stack size : 256

*****************************************************/

 

#include <mega16.h>

 

#define RXB8 1

#define TXB8 0

#define UPE 2

#define OVR 3

#define FE 4

#define UDRE 5

#define RXC 7

 

#define FRAMING_ERROR (1<<FE)

#define PARITY_ERROR (1<<UPE)

#define DATA_OVERRUN (1<<OVR)

#define DATA_REGISTER_EMPTY (1<<UDRE)

#define RX_COMPLETE (1<<RXC)

 

// USART Receiver buffer

#define RX_BUFFER_SIZE 8

char rx_buffer[RX_BUFFER_SIZE];

 

#if RX_BUFFER_SIZE<256

unsigned char rx_wr_index,rx_rd_index,rx_counter;

#else

unsigned int rx_wr_index,rx_rd_index,rx_counter;

#endif

 

// This flag is set on USART Receiver buffer overflow

bit rx_buffer_overflow;

 

// USART Receiver interrupt service routine

interrupt [uSART_RXC] void usart_rx_isr(void)

{

char status,data;

status=UCSRA;

data=UDR;

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)

{

rx_buffer[rx_wr_index]=data;

if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;

if (++rx_counter == RX_BUFFER_SIZE)

{

rx_counter=0;

rx_buffer_overflow=1;

};

};

}

 

#ifndef _DEBUG_TERMINAL_IO_

// Get a character from the USART Receiver buffer

#define _ALTERNATE_GETCHAR_

#pragma used+

char getchar(void)

{

char data;

while (rx_counter==0);

data=rx_buffer[rx_rd_index];

if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;

#asm("cli")

--rx_counter;

#asm("sei")

return data;

}

#pragma used-

#endif

 

// USART Transmitter buffer

#define TX_BUFFER_SIZE 8

char tx_buffer[TX_BUFFER_SIZE];

 

#if TX_BUFFER_SIZE<256

unsigned char tx_wr_index,tx_rd_index,tx_counter;

#else

unsigned int tx_wr_index,tx_rd_index,tx_counter;

#endif

 

// USART Transmitter interrupt service routine

interrupt [uSART_TXC] void usart_tx_isr(void)

{

if (tx_counter)

{

--tx_counter;

UDR=tx_buffer[tx_rd_index];

if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;

};

}

 

#ifndef _DEBUG_TERMINAL_IO_

// Write a character to the USART Transmitter buffer

#define _ALTERNATE_PUTCHAR_

#pragma used+

void putchar(char c)

{

while (tx_counter == TX_BUFFER_SIZE);

#asm("cli")

if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))

{

tx_buffer[tx_wr_index]=c;

if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;

++tx_counter;

}

else

UDR=c;

#asm("sei")

}

#pragma used-

#endif

 

// Standard Input/Output functions

#include <stdio.h>

 

// 2 Wire bus interrupt service routine

interrupt [TWI] void twi_isr(void)

{

#asm

nop;

#endasm

// Place your code here

 

}

 

// Declare your global variables here

 

void main(void)

{

// Declare your local variables here

 

// Input/Output Ports initialization

// Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTA=0x00;

DDRA=0x00;

 

// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTB=0x00;

DDRB=0x00;

 

// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTC=0x00;

DDRC=0x00;

 

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTD=0x00;

DDRD=0x00;

 

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

 

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

 

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

 

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

// INT2: Off

MCUCR=0x00;

MCUCSR=0x00;

 

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;

 

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART Receiver: On

// USART Transmitter: On

// USART Mode: Asynchronous

// USART Baud rate: 9600

UCSRA=0x00;

UCSRB=0xD8;

UCSRC=0x86;

UBRRH=0x00;

UBRRL=0x67;

 

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;

 

// 2 Wire Bus initialization

// Generate Acknowledge Pulse: On

// 2 Wire Bus Slave Address: 0h

// General Call Recognition: On

// Bit Rate: 400,000 kHz

TWSR=0x00;

TWBR=0x0C;

TWAR=0x01;

TWCR=0x45;

 

// Global enable interrupts

#asm("sei")

TWCR=0B10100101;//?????

while (1)

{

// Place your code here

 

};

}

 

 

AVRSTUDIO есть, но он програмный отладчик, лучше бы схемный. Может есть что нибудь аналогичное PROTEUSU, что б с COF файлами работал, или каким то образом Си понимал

 

Дык а зачем оно Вам? Эмуляторы тормозят.. на готовом железе куда приятней и полезней отлаживать. AvrStudio+ jtag+железо - лучшего отладчика для avr не найти.

 

К этому пока всё и идёт :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если хочеш - Скинь исходники в архиве с откомпилиным КОФом

Ато у мя нету твоего компиллера

И файл с можелью протеуса тоже пригодица

Разберемся вместе

Проект никому непродам =) Обещаю =)

 

У меня толькачто заработал ТВИ Слейв на атмеге 8 под протеусом =)

Но прирывания я неиспользовал.

 

[email protected]

 

А протеус точно ПРО ???

 

Ты с диска ставил или демо ломал ??

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня на ПРОТЕУСЕ прекрасно работает мастер-приемник,мастер-передачик как по прерыванию так и без,Слейв-приемник и слейв-передатчик по прерыванию.Версия демо 6.73 SP0.

Так что ройтесь в своем коде.

Смотрел вашу инициализацию TWI в принципе верно.TWCR=$45 не нужно,лишнее.

Я в Си плох,так что скажите где у вас вектор на прерываение TWI,может быть там засада.

Кроме того в таблице векторов TWI почти последнее, и при таком количестве прерываний вполне

может "пасти хвосты"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня на ПРОТЕУСЕ прекрасно работает мастер-приемник,мастер-передачик как по прерыванию так и без,Слейв-приемник и слейв-передатчик по прерыванию.Версия демо 6.73 SP0.

Так что ройтесь в своем коде.

Смотрел вашу инициализацию TWI в принципе верно.TWCR=$45 не нужно,лишнее.

Я в Си плох,так что скажите где у вас вектор на прерываение TWI,может быть там засада.

Кроме того в таблице векторов TWI почти последнее, и при таком количестве прерываний вполне

может "пасти хвосты"

 

На счёт TWCR=$45 - это понятно, т.к потом его всёравно писать, генератор CVAVR просто так генерит, да и собственно проблемма не в этом :)

 

Подпрограмма прерывания начинеатся со строки interrupt [TWI] void twi_isr(void), там обна вставка на асме "nop" и всё. ПРОБЛЕММА ТО В ТОМ ЧТО ОН ДАЖЕ НЕ НА ПРЕРЫВАНИЕ НЕ ПЕРЕХОДИТ

 

Если хочеш - Скинь исходники в архиве с откомпилиным КОФом

Ато у мя нету твоего компиллера

И файл с можелью протеуса тоже пригодица

Разберемся вместе

Проект никому непродам =) Обещаю =)

 

У меня толькачто заработал ТВИ Слейв на атмеге 8 под протеусом =)

Но прирывания я неиспользовал.

 

[email protected]

 

А протеус точно ПРО ???

 

Ты с диска ставил или демо ломал ??

 

ОК сегодня что нибудь элементарное напишу и скину, проектом не особо охото раскидываться :) :blush:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Proteus качнул из интернета, но ничего неломал, при установке кнопки понажимал, где я так понял надо было вводить фаил лецензии, у меня там перепрыгнуло что то из одного окошка в другое. Нажал отмена и вперёд всё установилось.

При входе в HELP->ABOUT ISIS такая вот картина. Может дествительно ломать ещё дополнительно как то надо. Или если есть у тебя с диска скинь пожалуста на [email protected]

post-7517-1137732555_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот ещё одина непонятка, кусок из вс ей программы

 

while (!(col_pered_bait_simvola==0))//

{

mass_i2_peredan=0;

pered_bait_mass_i2=0;

mas_peredachi_i2[0]=0b10100000;

mas_peredachi_i2[2]=*ukaz_m_hl;

mas_peredachi_i2[1]=*++ukaz_m_hl;

mas_peredachi_i2[3]=*++ukazatel[prinat_ussap-delta_hex];

col_simv_pered_bait_mass_i2=4;

TWCR=0B10100101;

 

while (mass_i2_peredan==0)

{

};

TWCR=0B10010101;

delay_us(400);

col_pered_bait_simvola--;

adres_m++;

*--ukaz_m_hl;

};

 

Когда первый раз заходит в цикл "mass_i2_peredan=0;" понимает и зацикливается на этом "while (mass_i2_peredan==0) { };", а при входе второй раз просто игнорирует и проскакивает этот цикл. :angry2:

Чесно говоря уже неделю или две БАДАЮСЬ с этим протеусом и кроме "СЮРПРИЗОВ" ничего хорошего :(

 

Протеус качал от сюда http://www.rivstech.ru/downloads/index.php...c2988398337701a

 

 

Что то такое ощущение либо протеус не полный какойто, либо его всё таки крякать надо. Таких же элементарных ошибок быть не доложно!!!

Изменено пользователем *SERG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Протеус качал от сюда http://www.rivstech.ru/downloads/index.php...c2988398337701a

 

 

Это демоверсия половина файлов которой заменино на про и заставлино работать =)

Глючить такая штука должна по определению. :)

 

Фулл версия весит 300 метров

К сожалению немогу залить сюда

Инет слабенький.

 

Если есть знакомые в Одессе - присылайте =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Протеус качал от сюда http://www.rivstech.ru/downloads/index.php...c2988398337701a

 

 

Это демоверсия половина файлов которой заменино на про и заставлино работать =)

Глючить такая штука должна по определению. :)

 

Фулл версия весит 300 метров

К сожалению немогу залить сюда

Инет слабенький.

 

Если есть знакомые в Одессе - присылайте =)

 

:ohmy: :ohmy: :ohmy: УПС........................материца не охота, вотблин а........................столько времени............эх........... :(

Ну хорошо хоть выяснилось что к чему, всё что не делается всё к лучшему. :)

Огроменное спасибо!!!

Буду искать

 

А на ftp есть полная версия???

 

Ой сорри, я и не заметил что меня в "свои" перевели. УРААААААААААААААААААААА товарищчи!!! :biggrin::biggrin::biggrin:

Спасибо модерам и админам!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подпрограмма прерывания начинеатся со строки interrupt [TWI] void twi_isr(void), там обна вставка на асме "nop" и всё. ПРОБЛЕММА ТО В ТОМ ЧТО ОН ДАЖЕ НЕ НА ПРЕРЫВАНИЕ НЕ ПЕРЕХОДИТ

 

Ну я это понял ,я просто спрашивал по какому адрессу у вас находиться вектор на это прерывание,

вполне возможно он расположен не по тому адрессу.Кроме того есть ограничение на использование

команды относительного перехода в пределах 2048 байт,вполне возможно ваша подпрограмма

находиться за этим пределом.

 

300 кБ ПРОТЕУС это прога с пдфками (документацией на компоненты)

То что демка слабовата на хелп это не секрет.

Начиная с 6.2 также урезали SDK для создания своих моделей.

Скорее всего Вы наложили версию поновее поверх и перетащили ключи в ЛИЦЕНЗЕ.ЭХЭ

Если у Вас проект сохраняется а также можете делать трассировку плат и сохранять,считайте

что у Вас прога работает.

 

Ну а заморочки в любой проге есть,не стоит так растраиваться,что ПРОТЕУС не может ткнуть

пальцем на Ваши ошибки в проге.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да вроде получилось что то, на железе проверю сегодня и выложу. TWI по прерываниям

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...