Guten Morgen,
bitte um Rat zu folgendem Problem mit Studio 7. Ich hatte gestern AtmelStudio 7.0.634 installiert und so den Umstieg von AVRStudio 4.18 Build 700 vorbereitet. Win7 Pro SP1, Notebook Sony Vaio SVE171A11M / SVE1711G1EW, 2,30 GHz, 4 GB. Vor der Installation wurden sämtlichen vorherigen Files zu WINAVR und Studio 4 entfernt, sie tauchen auch wirklich nicht mehr auf (kontrolliert mit File-Explorer).
Ich verwende eine Headerdatei mydefs.h (von P.Dannegger, mit eigenen Erweiterungen) zur einfacheren Verwendung von "allerlei". Bisher, im Studio4, hatte ich damit keinerlei Probleme.
Ein kurzer Auszug davon :
Code:
// Easier type writing:
typedef unsigned char u8;
typedef signed char s8;
typedef uint16_t u16; //typedef unsigned short u16;
typedef int16_t s16; //typedef signed short s16;
typedef unsigned long u32;
typedef signed long s32;
Als Umstiegstest dient ein eher kurzes Quellprogramm zum Betreiben eines Encodermotors mit einer Ansteuerung wie ein Modellbauservo, darin werden Variablen z.B. aus der typedef-Umbenennung verwendet. Daraus entstehen die folgenden, im Studio4 nicht aufgetretenen Fehlermeldungen (NUR diese, dazu noch einige Warnungen wie "implizit" etc.) :
Code:
Description Project File Line
(x) unknown type name 'u8' S-bbo_1a C:\..\Sbbyo_inf13.c 48
(x) 'RX0_SIZE' undeclared (first use in this function) S-bbo_1a C:\..\Sbbyo_inf13.c 48
(i) each undeclared identifier is reported ... S-bbo_1a C:\..\Sbbyo_inf13.c 48
(x) 'rxrawb' undeclared (first use in this function) S-bbo_1a C:\..\Sbbyo_inf13.c 48
(x) 'rx_buff' undeclared (first use in this function) S-bbo_1a C:\..\Sbbyo_inf13.c 48
(x) unknown type name 'int16_t' S-bbo_1a C:\..\Sbbyo_inf13.c 77
(x) unknown type name 'uint16_t' S-bbo_1a C:\..\Sbbyo_inf13.c 84
Der zugehörige File, auszugsweise, die entsprechenden Textzeilen sind (farbig) markiert in der richtigen Reihenfolge :
Code:
// ============================================================================= =
// == Lies den Puffer rx_buff[RX0_SIZE] und gib ihn auf UART aus
// Der Puffer rx_buff[RX0_SIZE] wird kopiert nach rxrawb [RX0_SIZE]
// und anschließend wird rxrawb auf UART ausgegeben
// ============================================================================= =
void wrrxua (void) // Schreib den RX-Puffer auf die UART
{ //
uputs0 ("\t=> wrrxua\r\n"); //
cli(); // Beim Kopieren kein Interrupt erlaubt
for (u8 i = 0; i<(RX0_SIZE-1); i++) rxrawb [i] = rx_buff[i]; // line 48
// rxrawb [RX0_SIZE-1] = "\0"; // String abschließen
sei(); //
// uputs0 ( *rxrawb ); //
} //
// ============================================================================= =
// ============================================================================= =
// ============================================================================= =
// ============================================================================= =
// Initialisiere USART0 mit vorgegebener Baudrate 07Dez2012 übernommen von
// Code:von PDannegger http://www.mikrocontroller.net/topic/101472
// Zum Senden von Zeichen wie char irgendwas[] = "meintext" verwenden:
// uputs0 (irgendwas); oder direkt
// uputs0 ("meinText"); verwenden
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Vor dem 07Dez2012 hießen die Programme: siehe:
// RSeTe_x10_24Aug13_0936_Menue-6-7-8-9-u-12-gut_vor-Versionsaenderung-auf-x20
// ============================================================================= =
// Hilfsfunktion, um Zahlen über das UART auszugeben
void uputs0i(const int val) // Zahlen signed Integer8 über UART0 ausgeben
{
char buffer[8];
uputs0 ( itoa(val, buffer, 10) );
}
// ============================================================================= =
// ============================================================================= =
void uputs0i2 ( int16_t val ) // Zahl signed 16bit üb UART ausgeben lib // line 77
{
char buffer[8];
uputs0 ( itoa(val, buffer, 10) ); // lib
}
// ============================================================================= =
// ============================================================================= =
void uputs0u( uint16_t val ) // Zahl unsigned16bit üb UART ausgeben lib // line 84
{
char buffer[8];
uputs0 ( utoa(val, buffer, 10) ); // lib
}
// ============================================================================= =
Die beanstandeten Variablentypen werden auch an anderer Stelle wiederholt verwendet ohne Fehlermeldung. Kann es sein, dass die Fehlermeldung nur in einer Parameterliste auftreten ?
Die Fehlermeldungen sind mir rätselhaft.
Ich bitte um Hilfe, Aufklärung, Hinweise . . . und danke im Voraus.
Lesezeichen