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

 
 
> WINAvr или IAR?, для тех, кто работал в обеих средах.
Karl
сообщение Aug 18 2005, 09:19
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 4-02-05
Пользователь №: 2 429



Программирую в WinAvr. Собираюсь попробовать написать новый проект на IAR. В связи с этим вопрос: стоит ли тратить время и силы на освоение IAR? Кто какие плюсы и минусы видит в той или иной среде?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_artem_
сообщение Oct 29 2005, 04:18
Сообщение #2


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



Nate, mozet prigoditsya - drayver dlya uart ucos RTOS pod avr. Mozet prigoditsya. Pisal sam .

dobavte v os_cpu_a.s90

EXTERN uart_UDREIsrAvr
EXTERN uart_RXIsrAvr

COMMON INTVEC

DS 4 ; 1 RESET = $000 Reset interrupt Vector Address
DS 4 ; 2 INT0addr = $002 External Interrupt0 Vector Address
DS 4 ; 3 INT1addr = $004 External Interrupt1 Vector Address
DS 4 ; 4 INT2addr = $006 External Interrupt2 Vector Address
DS 4 ; 5 INT3addr = $008 External Interrupt3 Vector Address
DS 4 ; 6 INT4addr = $00a External Interrupt4 Vector Address
DS 4 ; 7 INT5addr = $00c External Interrupt5 Vector Address
DS 4 ; 8 INT6addr = $00e External Interrupt6 Vector Address
DS 4 ; 9 INT7addr = $010 External Interrupt7 Vector Address
DS 4 ; 10 OC2addr = $012 Output Compare2 Interrupt Vector Address
DS 4 ; 11 OVF2addr = $014 Overflow2 Interrupt Vector Address
DS 4 ; 12 ICP1addr = $016 Input Capture1 Interrupt Vector Address
DS 4 ; 13 OC1Aaddr = $018 Output Compare1A Interrupt Vector Address
DS 4 ; 14 OC1Baddr = $01a Output Compare1B Interrupt Vector Address
DS 4 ; 15 OVF1addr = $01c Overflow1 Interrupt Vector Address
DS 4 ; 16 OC0addr = $01e Output Compare0 Interrupt Vector Address
JMP OSTickISR ; 17 OVF0addr = $020 Overflow0 Interrupt Vector Address
JMP spi_SpiIsr ; 18 SPIaddr = $022 SPI Interrupt Vector Address
JMP uart_RXIsr0 ; 19 URXC0addr = $024 USART0 Receive Complete Interrupt Vector Address
JMP uart_UDREIsr0 ; 20 UDRE0addr = $026 USART0 Data Register Empty Interrupt Vector Address
DS 4 ; 21 UTXC0addr = $028 USART0 Transmit Complete Interrupt Vector Address
DS 4 ; 22 ADCCaddr = $02a ADC Conversion Complete Handle
JMP eep_ERDYIsr ; 23 ERDYaddr = $02c EEPROM Write Complete Handle
DS 4 ; 24 ACIaddr = $02e Analog Comparator Interrupt Vector Address
DS 4 ; 25 OC1Caddr = $030 Output Compare1C Interrupt Vector Address
DS 4 ; 26 ICP3addr = $032 Input Capture3 Interrupt Vector Address
DS 4 ; 27 OC3Aaddr = $034 Output Compare3A Interrupt Vector Address
DS 4 ; 28 OC3Baddr = $036 Output Compare3B Interrupt Vector Address
DS 4 ; 29 OC3Caddr = $038 Output Compare3C Interrupt Vector Address
DS 4 ; 30 OVF3addr = $03A Overflow3 Interrupt Vector Address
JMP uart_RXIsr1 ; 31 URXC1addr = $03C USART1 Receive Complete Interrupt Vector Address
JMP uart_UDREIsr1 ; 32 UDRE1addr = $03E USART1 Data Register Empty Interrupt Vector Address
DS 4 ; 33 UTXC1addr = $040 USART1 Transmit Complete Interrupt Vector Address
DS 4 ; 34 TWIaddr = $042 TWI Interrupt Vector Address
DS 4 ; 35 SPMRaddr = $044 Store Program Memory Ready Interrupt Vector Address

END


;*******************************************************************************
*************************
; USART0 RX Complete handling ISR Routine
;*******************************************************************************
*************************

uart_RXIsr0: PUSH_ALL ; Save all registers and status register
IN R16,SREG ; Save the SREG but with interrupts enabled
SBR R16,BIT07
ST -Y,R16
PUSH_SP ; Save the task's hardware stack pointer onto task's stack

LDS R16,OSIntNesting ; OSIntNexting++;
INC R16 ;
STS OSIntNesting,R16 ;

CPI R16,1 ; if (OSIntNesting == 1) {
BRNE uart_rxc0_lab1
LDS R30,OSTCBCur ; OSTCBCur->OSTCBStkPtr = Y
LDS R31,OSTCBCur+1
ST Z+,R28
ST Z+,R29 ; }

uart_rxc0_lab1:
LDI R16, 0 ; Set previously stored port number
CALL uart_RXIsrAvr ; Call ISR handling C Code function
CALL OSIntExit

POP_SP ; Restore the hardware stack pointer from task's stack
POP_SREG ; Restore the SREG register
POP_ALL ; Restore all registers

RET ; Note: RET instead of RETI


;*******************************************************************************
*************************
; UART0 DATA REGISTER EMPTY Interrupt handling Routine
;*******************************************************************************
*************************
uart_UDREIsr0:
PUSH_ALL ; Save all registers and status register
IN R16,SREG ; Save the SREG but with interrupts enabled
SBR R16,BIT07
ST -Y,R16
PUSH_SP ; Save the task's hardware stack pointer onto task's stack
LDS R16,OSIntNesting ; Notify uC/OS-II of ISR
INC R16 ;
STS OSIntNesting,R16 ;

CPI R16,1 ; if (OSIntNesting == 1) {
BRNE uart_udre0_lab1
LDS R30,OSTCBCur ; OSTCBCur->OSTCBStkPtr = Y
LDS R31,OSTCBCur+1
ST Z+,R28
ST Z+,R29 ; }

uart_udre0_lab1:
LDI R16, 0 ; Set port to 0
CALL uart_UDREIsrAvr ; Call ISR handling C Code function
CALL OSIntExit

POP_SP ; Restore the hardware stack pointer from task's stack
POP_SREG ; Restore the SREG register
POP_ALL ; Restore all registers

RET ; Note: RET instead of RETI


a eto programma dlya raboti s uartom - read write with timeouts


/*@******************************************************************************
******************************
*
*
* The comm.c module implementes platform independent functions for serial UART communication .
* It must be cooperate with port dependent fucntions which are platform dependent .
*
* Data types :
* typedef struct
* {
* INT8U state; // Port state
* INT8U txstate; // Tx state
* // Receive related data
* OS_EVENT *rxsem; // Rx waiting semaphore
* INT8U rxbuf[UART_RXBUF_SIZE]; // Pointer to UART Rx ring buffer
* INT8U rxput; // Pointer to first empty pos in Rx ring buffer
* INT8U rxget; // Pointer to first nonemtpy pos in Rx ring buffer
* INT16U rxtimer; // Byte receive timer
* // Transmit related data
* OS_EVENT *txsem; // Tx waiting semaphore
* INT8U txbuf[UART_TXBUF_SIZE]; // Pointer to UART Tx ring buffer
* INT8U txput; // Pointer to first empty pos in Tx ring buffer
* INT8U txget; // Pointer to first nonempty pos in Tx ring buffer
* INT16U txtimer; // Byte transmit timer
* }uart_uart;
*
* Functions :
* Externaly UART subsystem communicates using 5 functions :
* - uart_InitUart()
* - uart_OpenUart()
* - uart_CloseUart()
* - uart_PutByte()
* - uart_GetByte()
*
* Typical function usage is as follow :
* - Initialize the whole uart subsystem with uart_InitUart()
* - Then to use uart port invoke uart_OpenUart().
* - If result from uart_OpenUart() is not COM_NO_ERR it is possible to send and receive data to/from UART via
* uart_PutByte() and uart_GetByte().
* - Finally if particular uart port is not needed - its resources can be deallocated by uart_CloseUart().
*
********************************************************************************
******************************/
#include "uart.h"
#include "uart_avr.h"

/********************************************************************************
******************************
* . TYPEDEFS SECTION
********************************************************************************
******************************/
typedef struct
{
INT8U state; // Port state
INT8U txstate; // Tx state
// Receive related data
OS_EVENT *rxsem; // Rx waiting semaphore
INT8U rxbuf[UART_RXBUF_SIZE]; // Pointer to UART Rx ring buffer
INT8U rxput; // Pointer to first empty pos in Rx ring buffer
INT8U rxget; // Pointer to first nonemtpy pos in Rx ring buffer
INT16U rxtimer; // Byte receive timer
// Transmit related data */
OS_EVENT *txsem; // Tx waiting semaphore
INT8U txbuf[UART_TXBUF_SIZE]; // Pointer to UART Tx ring buffer
INT8U txput; // Pointer to first empty pos in Tx ring buffer
INT8U txget; // Pointer to first nonempty pos in Tx ring buffer
INT16U txtimer; // Byte transmit timer
}uart_uart;

/********************************************************************************
******************************
* . STATIC DATA SECTION
********************************************************************************
******************************/
static uart_uart uartbuf[UART_UART_SIZE];

/********************************************************************************
******************************
* . DEFINITION SECTION
********************************************************************************
******************************/
/*@-----------------------------------------------------------------------------------------------------------*
| uart_InitUart() INITIALIZE UART SUBSYSTEM
|
| Syntax :
| INT8S uart_InitUart(void)
|
| Arguments :
| -
|
| Returns :
| COM_NO_ERR - Function executed OK
|
| Description :
| This function must be called at system startup before any UART related functions can be used
| Function initializes UART internal data .
|
*------------------------------------------------------------------------------------------------------------*/
INT8S uart_InitUart(void)
{
INT8U cnt;

for(cnt =0; cnt < UART_UART_SIZE; cnt++) // Block all UARTs
uartbuf[cnt].state = UART_STATE_CLOSE;

return COM_NO_ERR;
}

/*@-----------------------------------------------------------------------------------------------------------*
| uart_OpenUart() OPEN AND CONFIGURE UART PORT
|
| Syntax :
| INT8S uart_OpenUart(INT8U port,INT16U rxtimer,INT16U txtimer,INT8U speed,INT8U length,INT8U parity,INT8U stopbit)
|
| Arguments :
| INT8U port Port Identifier - UART_1, or UART_2
| INT8U rxtimer Receive timer value in number of clock ticks
| INT8U txtimer Transmit timer value in number of clock ticks
| INT8U speed UART speed - in form UART_SPEED_XXX, where XXX could be (300, 600, 1200, 2400, 4800,
| 9600, 14400, 19200, 38400, 57600, 115200.
| INT8U length Word data length - in form UART_SIZE_X, where X could be 5, 6, 7, 8, 9
| INT8U parity Parity setting - one of the UART_PARITY_EVEN, UART_PARITY_ODD, UART_PARITY_NONE
| INT8U stopbit Stop bits setting - UART_STOPBIT_1, UART_STOPBT_15 and UART_STOPBIT_2
|
|
| Returns :
| COM_NO_ERR If function executes OK
| COM_ERR_PORTID If port identifier supplied is not correct
| COM_ERR_PORT_OPEN If port is already opened
| COM_ERR_TX_SEM Fault when creating Tx semaphore
| COM_ERR_RX_SEM Fault when creating Rx semaphore
|
| Description :
|
*------------------------------------------------------------------------------------------------------------*/
INT8S uart_OpenUart
(
INT8U port, // UART port ID
INT16U rxtimer, // UART receive timeout
INT16U txtimer, // UART transmit timeout
INT8U speed, // UART port speed
INT8U length, // UART data word size
INT8U parity, // UART parity settings
INT8U stopbit // UART stop bits
)
{
uart_uart *uart_p;

if(port >= UART_UART_SIZE ) // Check port value
return COM_ERR_PORTID; //
uart_p = &uartbuf[port]; // Fetch pointer to port data record
//
if((uart_p->rxsem = OSSemCreate(0)) == NULL) // Create RX Semaphore
return COM_ERR_RX_SEM; //
uart_p->rxput = 0; // Reset read position from Rx ring buffer
uart_p->rxget = 0; // Reset write position to Rx ring buffer
uart_p->rxtimer = rxtimer; // Set uart_uart receive timer
//
if((uart_p->txsem = OSSemCreate(UART_TXBUF_SIZE -1)) == NULL) // Create TX semaphore
return COM_ERR_TX_SEM; //
uart_p->txput = 0; // init read position from Tx ring buffer
uart_p->txget = 0; // init write position to Tx ring buffer
uart_p->txtimer = txtimer; // set uart_uart transmitt timer
uart_p->txstate = UART_TX_STATE_OFF; // Set txstate to OFF
//
uart_OpenPortAvr(port, speed, length, parity, stopbit); // initalize platform dependent port data
uart_p->state = UART_STATE_OPEN; // Bring port to traffic
//
return COM_NO_ERR; //
}


/*@-----------------------------------------------------------------------------------------------------------*
| uart_CloseUart() CLOSE UART PORT AND FREE ITS RESOURCES
|
| Syntax :
| INT8S uart_CloseUart(INT8U port)
|
| Arguments :
| COM_ERR_PORTID - Port Id assigned invalid value
| COM_ERR_PORT_CLOSED - Port already in closed state
| COM_NO_ERR - Function executed OK
|
| Returns :
| COM_ERR_PORTID - Invalid (nonexisting) port referred
| COM_NO_ERR - Function executed OK
|
| Description :
| Function closes uart port and release its allocated reasources.
|
*------------------------------------------------------------------------------------------------------------*/
INT8S uart_CloseUart(INT8U port)
{
uart_uart *uart_p;
INT8U err;

if(port >= UART_UART_SIZE ) // Validate port value
return COM_ERR_PORTID;
uart_p = &uartbuf[port]; // Select port to close
if(uart_p->state == UART_STATE_CLOSE) // Check port state
return COM_NO_ERR;

uart_p->state = UART_STATE_CLOSE; // Set port state
uart_ClosePortAvr(port); // Down the port on platform dependent side
OSSemDel(uart_p->rxsem, OS_DEL_ALWAYS, &err); // Delete receive semaphore
OSSemDel(uart_p->txsem, OS_DEL_ALWAYS, &err); // Delete transmit semaphore

return COM_NO_ERR;
}

/*@-----------------------------------------------------------------------------------------------------------*
| uart_PutByte() SEND BYTE OVER UART PORT FUNCTION
|
| Syntax :
| INT8S uart_PutByte(INT8U portid, INT8U byte )
|
| Arguments :
| INT8U portid - UART port identifier
| INT8U byte - byte to send
|
| Return values :
| COM_NO_ERR Character sent to transmit buffer OK
| COM_ERR_PORT_CLOSED The port where transmit is attempted is not opened
| COM_ERR_TX_SEM Problem occured on UART's TX semaphore
|
| Description :
| The function is used to transfer one single byte over UART port .
|
*------------------------------------------------------------------------------------------------------------*/
INT8S uart_PutByte(INT8U portid, INT8U byte )
{
#if OS_CRITICAL_METHOD == 3 // Allocate storage for CPU status register
OS_CPU_SR cpu_sr; //
#endif //
INT8U err; // temp var for error
uart_uart *uart_p; // pointer to uart data structure
//
if(portid >= UART_UART_SIZE) // Check port value
return -1; //
//
uart_p = &uartbuf[portid]; // Fetch pointer to uart data record
if(uart_p->state == UART_STATE_CLOSE) // Validate UART state
return COM_ERR_PORT_CLOSED; //
//
if(uart_p->txstate == UART_TX_STATE_OFF) // If no ongoing transmit is active - send byte directly to port
{ //
uart_p->txstate = UART_TX_STATE_ON; // Mar TX is active
uart_StartTxAvr(portid, byte); // Invoke port gunction to send byte to the port
} //
else // Else if Transmitt is ongoing - put byte to transmit buffer
{ //
OSSemPend(uart_p->txsem, 0, &err); // Wait on Tx Semaphore if buffer full
if(err != OS_NO_ERR) // If semaphore error
return COM_ERR_TX_SEM; // return error
//
OS_ENTER_CRITICAL(); //
uart_p->txbuf[uart_p->txput++] = byte; // Put byte into transmit ring buffer
if(uart_p->txput == UART_TXBUF_SIZE) // Increment ring buffer pointer
uart_p->txput = 0; //
OS_EXIT_CRITICAL(); //
} //
return COM_NO_ERR; // Return OK
}

/*@-----------------------------------------------------------------------------------------------------------*
| uart_GetByte() RECEIVE BYTE FORM UART PORT FUNCTION
|
| Syntax :
| INT8S uart_GetByte(INT8U port, INT8U* rxbyte)
|
| Arguments :
| INT8U port - UART port identifier
| INT8U* rxbyte - Pointer to memory where received character will be stored
|
| Returns :
| COM_NO_ERR - OK result
| COM_ERR_PORT_CLOSED - Port is not initialised
| COM_ERR_RX_TIMEOUT - Receive timeout occured
| COM_ERR_RX_SEM - Problem with Rx semaphore happened
|
| Description :
| Function receives one byte from the uart port. If byte is received OK it will be stored in memory
| pointed by *rxbyte. Function will return error:
| - if uart_OpenUart() fucntion was not invoked before on referred port
| - if no byte received within uart timeout
| - if system error with rx semaphore happened
|
*------------------------------------------------------------------------------------------------------------*/
INT8S uart_GetByte(INT8U port, INT8U* rxbyte)
{
#if OS_CRITICAL_METHOD == 3 // Allocate storage for CPU status register
OS_CPU_SR cpu_sr; //
#endif //
uart_uart *uart_p; // pointer to port data
INT8U err; // error var for semaphore handling
//
if(port >= UART_UART_SIZE) // Check uart port id
return COM_ERR_PORT_CLOSED; //
uart_p = &uartbuf[port]; // select port data to use
if(uart_p->state == UART_STATE_CLOSE) // if port is not opened
return COM_ERR_PORT_CLOSED; // return error - 'attempt to use closed port'
//
OSSemPend(uart_p->rxsem, uart_p->rxtimer, &err); // Wait for byte from Rx line
switch(err) // Branch on the result
{ //
case OS_NO_ERR : break; // Byte is ready - proceed
case OS_TIMEOUT: return COM_ERR_RX_TIMEOUT; // Semaphore timeout
default : return COM_ERR_RX_SEM; // Semaphore or OS problem
} //
//
if(uart_p->rxget == uart_p->rxput) // Check if there is byte to process
return COM_ERR_RX_TIMEOUT; // This is not needed as semaphore handles that
// Extract received character from ring buffer
OS_ENTER_CRITICAL(); //
*rxbyte = uart_p->rxbuf[uart_p->rxget++]; // read byte from Rx ring buffer
if(uart_p->rxget== UART_RXBUF_SIZE) // if overflow on Rx ring buffer ?
uart_p->rxget = 0; // wrap around ring buffer
OS_EXIT_CRITICAL();

return COM_NO_ERR;
}

/*------------------------------------------------------------------------------------------------------------*
| uart_PutByteIsr() - PUT RECEIVED BUFFER INTO RX BUFFER FUNCTION
|
| Syntax :
| INT8S uart_PutByteIsr(INT8U port, INT8U byte)
|
| Arguments :
| INT8U port - Uart port id
| INT8U byte - Byte to store in rx buffer
|
| Returns :
| COM_ERR_PORT_CLOSED - Port is not ready
| COM_ERR_RXBUF_FULL - RX buffer full
| COM_NO_ERR - Function executed OK
|
| Description :
| The function is called from ISR device dependent uart source when new character received
| from Rx line .
|
*------------------------------------------------------------------------------------------------------------*/
INT8S uart_PutByteIsr(INT8U port, INT8U byte)
{
#if OS_CRITICAL_METHOD == 3 // Allocate storage for CPU status register
OS_CPU_SR cpu_sr; //
#endif //
uart_uart *uart_p; //
//
uart_p = &uartbuf[port]; // Select port data to use
if(uart_p->state == UART_STATE_CLOSE) // If port is not ready
return COM_ERR_PORT_CLOSED; // return error - 'attempt to use closed port'
//
OS_ENTER_CRITICAL(); //
uart_p->rxbuf[uart_p->rxput] = byte; // Store byte in Rx ring buffer
if(++(uart_p->rxput) == UART_RXBUF_SIZE) // Increment write pointer to rx buffer
uart_p->rxput = 0; // wrap around Rx ring buffer read pointer
//
if(uart_p->rxput == uart_p->rxget) // if Rx ring buffer full ?
{ //
uart_p->rxget++; // discard oldest character in ring buffer
OS_EXIT_CRITICAL(); // disable interrupt and DO NOT POST SEMAPHORE
return COM_ERR_RXBUF_FULL; // return error - 'Rx ring buffer full'
} //
OSSemPost(uart_p->rxsem); // Post semaphore to user task
OS_EXIT_CRITICAL(); //
//
return COM_NO_ERR; // Return OK
}

/*------------------------------------------------------------------------------------------------------------*
| uart_GetByteIsr() - get byte from transmit buffer to send
|
| Syntax :
| INT8S uart_GetByteIsr(INT8U portid, INT8U *byte)
|
| Arguments :
| INT8U portid
| INT8U *byte
|
| Returns :
| Description :
| The function is called from ISR when hardware completes character transfer on Tx line and ready to
| transmit new character . When porting this code - hardware dependent function must analyse return
| code from this function as follow :
| - If return code is COM_NO_ERR transfer must proceed
| - If return code either COM_ERR_PORT_CLOSED or COM_ERR_TXBUF_EMPTY transfer must be stopped
| and Transmit interrupts must be disabled .
|
*------------------------------------------------------------------------------------------------------------*/
INT8S uart_GetByteIsr(INT8U portid, INT8U *byte)
{
#if OS_CRITICAL_METHOD == 3 // Allocate storage for CPU status register
OS_CPU_SR cpu_sr; //
#endif //
uart_uart *uart_p; // pointer to uart data structure
//
uart_p = &uartbuf[portid]; // select port data
//
if(uart_p->state == UART_STATE_CLOSE) // if port is not opened
return COM_ERR_PORT_CLOSED; // return error - 'attempt to use closed port'
// Fetch byte from TX buffer
if(uart_p->txget != uart_p->txput) // If TX buffer IS NOT EMPTY
{ //
OS_ENTER_CRITICAL(); // Disable interrupts
*byte = uart_p->txbuf[uart_p->txget]; // Get character from Tx ring buffer
if(++(uart_p->txget) == UART_TXBUF_SIZE) // Increment read pointer
uart_p->txget = 0; //
OS_EXIT_CRITICAL(); // Enable interrupts
OSSemPost(uart_p->txsem); // Post TX semaphore
} //
else // Else if Tx buffer is EMPTY
{ //
uart_p->txstate = UART_TX_STATE_OFF; // set transimt state to passive
return COM_ERR_TXBUF_EMPTY; // and report error - 'tx ring buffer empty'
} //
return COM_NO_ERR; //
}

/********************************************************************************
******************************
* . SECTIONS END
********************************************************************************
******************************/


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Karl   WINAvr или IAR?   Aug 18 2005, 09:19
- - IgorKossak   Это не столько трата времени, сколько полезное осв...   Aug 18 2005, 12:36
- - halfdoom   С точки зрения качества генерируемого кода IAR без...   Aug 19 2005, 04:42
|- - Karl   Попробую написать следующий проект на IAR. Всвязи ...   Aug 19 2005, 08:24
|- - ReAl   Цитата(halfdoom @ Aug 19 2005, 07:42)С точки ...   Aug 29 2005, 12:50
|- - m16   Давно избитая тема но сравнение компиляторов ...   Aug 29 2005, 13:17
|- - IgorKossak   Цитата(m16 @ Aug 29 2005, 16:17)Давно  и...   Aug 29 2005, 14:46
|- - AVR   ЦитатаIAR понравился сразу (ибо есть большой опыт ...   Oct 26 2005, 20:34
|- - IgorKossak   Цитата(AVR @ Oct 26 2005, 23:34)Существуют ли...   Oct 27 2005, 06:26
|- - AVR   Цитата(IgorKossak @ Oct 27 2005, 10:26)Цитата...   Oct 27 2005, 20:18
|- - lazycamel   Цитата(AVR @ Oct 27 2005, 23:18)Есть ли прогр...   Oct 28 2005, 04:21
|- - m16   Цитата(AVR @ Oct 27 2005, 23:18)Есть ли прогр...   Oct 28 2005, 07:50
- - VladislavS   Качать однозначно последнюю с сайта разработчика. ...   Aug 19 2005, 08:48
|- - Karl   Последняя версия - EWAVR 4.10B?   Aug 19 2005, 09:22
|- - Igor26   Цитата(Karl @ Aug 19 2005, 12:22)Последняя ве...   Aug 19 2005, 09:33
|- - Igor26   Цитата(Igor26 @ Aug 19 2005, 12:33)Цитата(Kar...   Aug 19 2005, 09:41
|- - Karl   Цитата(Igor26 @ Aug 19 2005, 14:41)Цитата(Igo...   Aug 19 2005, 10:01
|- - Igor26   Цитата(Karl @ Aug 19 2005, 13:01)Цитата(Igor2...   Aug 19 2005, 10:05
|- - Karl   А где бы раздобыть примерчики проектов под IAR?   Aug 22 2005, 05:28
|- - BVU   Цитата(Karl @ Aug 22 2005, 09:28)А где бы раз...   Aug 22 2005, 05:49
|- - Karl   Спасибо, tutorials.eww нашел. Изучаю   Aug 22 2005, 06:18
|- - Karl   Что-то я библиотек стандартных функций в ИАР найти...   Aug 22 2005, 08:46
|- - BVU   Цитата(Karl @ Aug 22 2005, 12:46)Что-то я биб...   Aug 22 2005, 08:56
|- - Karl   не стандартные, но очень удобные при разработке .   Aug 22 2005, 08:59
|- - BVU   Цитата(Karl @ Aug 22 2005, 12:59)не стандартн...   Aug 22 2005, 09:43
- - axis   Доброго времени, Все. Что характерно - буржуи с a...   Aug 22 2005, 12:58
|- - dxp   Цитата(axis @ Aug 22 2005, 18:58)Что характер...   Aug 22 2005, 13:34
|- - axis   Цитата(dxp @ Aug 22 2005, 19:34)Цитата(axis ...   Aug 23 2005, 11:26
- - IgorKossak   Что касается буржуйских форумов, то надо знать их ...   Aug 23 2005, 08:32
- - beer_warrior   Серьезным преимуществом IAR IMHO являеться более у...   Oct 27 2005, 08:15
|- - dxp   Цитата(beer_warrior @ Oct 27 2005, 14:15)Серь...   Oct 27 2005, 09:41
|- - IgorKossak   Цитата(beer_warrior @ Oct 27 2005, 11:15)... ...   Oct 27 2005, 10:12
- - ROC   Кто тут "С"шные библиотеки искал? Есть ...   Oct 28 2005, 08:08
|- - AVR   Большое спасибо за эти ценные ссылки.   Oct 28 2005, 17:41
- - _artem_   RE: WINAvr или IAR?   Oct 29 2005, 04:18
- - INT1   тоже добавлю http://www.procyonengineering.com/   Oct 29 2005, 05:39
|- - AVR   Цитата(INT1 @ Oct 29 2005, 09:39)тоже добавлю...   Oct 29 2005, 10:32
- - INT1   Но вопос ведь темы WINAvr или IAR? или уже ИАР?   Oct 29 2005, 17:59
- - Waso   Спасибо за http://ccrma.stanford.edu/courses/250a...   Dec 17 2005, 20:09


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

 


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


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