interrupt (VECTOR) enablenested ISR(void)
{
// neither EINT nor DINT required inside
}
if you have to enable nested interrupts within ISRat some different than
beginning of ISR point, omit 'enablenested' and use eint(), etc.
~d
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of
[email protected]
Sent: Wednesday, June 09, 2004 1:57 AM
To: [email protected]
Subject: RE: [Mspgcc-users] uart0 can't send
Dima,
> You faced with loop elimination and non-volatile issues tricks.
thanks.
Due to ANSI that loop is not guaranteed to work and optimizing should
cause that malfunction; it's a bug of the IAR compiler that it ever
worked with optimizing because that behavior it's not ANSI-C. Even
without optimization it's not portable.
I've read the complete C-99 after that old code and didn't thought about
checking the code twice. And my colleagues don't care about such things
and also did not found that bug.
> 2. Nested interrupts supported via 'enablenested' keyword (attribute
> 'signal') . Check docs.
I found no examples.
Do i have to set
signal interrupt (UART0TX_VECTOR)
or
interrupt (UART0TX_VECTOR) [wakeup, enablenested]
?
The code with the nested interrupts uses _EINT() and _DINT inside the
ISR, several lines after the start of the ISR.
Does this not work with mspgcc?
Cheers,
Rolf
>
> Cheers,
> ~d
>
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of
> [email protected]
> Sent: Friday, June 04, 2004 11:03 PM
> To: [email protected]
> Subject: [Mspgcc-users] uart0 can't send
>
> Hi,
>
> a program (compiled the IAR compiler) which sends data from uart0 does
> send nothing after compiled with mspgcc:
>
> ...
> void
> Send_Data (void)
> {
> if (COM_TRANSMIT.len > 0) // Ignore data packets of length zero.
> {
> COM_TRANSMIT.cnt = 1;
> U0TXBUF = COM_TRANSMIT.buffer[0];
>
> do // Interrupt
> {
>
> // ddd hangs at this point while it works with IAR
> /////////////////////////////////////////
>
> }
> while (COM_TRANSMIT.cnt < COM_TRANSMIT.len);
> COM_TRANSMIT.len = 0;
> }
> return;
> }
> ...
> #ifdef MSPGCC
> interrupt (UART0TX_VECTOR)
> #endif
> #ifdef IAR
> interrupt[UART0TX_VECTOR]
> void
> #endif
> uart0_transmit (void)
> {
> if (COM_TRANSMIT.cnt < COM_TRANSMIT.len)
> U0TXBUF = COM_TRANSMIT.buffer[COM_TRANSMIT.cnt++];
> return;
> }
>
> What's wrong with that code?
>
> And i've got other problems (measuring voltages with comparators) with
> another code with nested interrupts.
> Does mspgcc handle nested interrupts in another way as iar does?
>
> Rolf
>
>
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by the new InstallShield X.
> From Windows to Linux, servers to mobile, InstallShield X is the one
> installation-authoring solution that does it all. Learn more and
> evaluate today! http://www.installshield.com/Dev2Dev/0504
> _______________________________________________
> Mspgcc-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/mspgcc-users
>
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by the new InstallShield X.
> From Windows to Linux, servers to mobile, InstallShield X is the one
> installation-authoring solution that does it all. Learn more and
> evaluate today! http://www.installshield.com/Dev2Dev/0504
> _______________________________________________
> Mspgcc-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/mspgcc-users
-------------------------------------------------------
This SF.Net email is sponsored by: GNOME Foundation
Hackers Unite! GUADEC: The world's #1 Open Source Desktop Event.
GNOME Users and Developers European Conference, 28-30th June in Norway
http://2004/guadec.org
_______________________________________________
Mspgcc-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mspgcc-users