www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit UART bei Mega8


Autor: Pat F. (breaker87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Leute!

Ich habe möchte folgendes Programm auf meinem Mega8 testen...
Leider habe ich beim Compilieren folgenden Fehler:

   Error: C:\Progr...(38): parameter #1 of type 'flash unsigned char *'
   is incopatible with type 'unsigned char *' specified in the function
   'uart_puts' declaration

Der selbe fehler tritt auch in allen anderen Zeilen auf, in denen 
"uart_puts" aufgerufen wird...

Compiler ist der CVAVR.

Ich hoffe ihr könnt mir bei meinem Problem weiterhelfen...


lg Patrick

__________________________________________________________
Hier der Code:
#include <mega8.h>   
#include <LCDlib.h>
#include <ctype.h>
#define Key1 PINC.1    
#define LED1 PORTD.4

bit Taste1, Merker1;

int uart_putc(unsigned char c);
void uart_puts(unsigned char *str);

void main(void)
{ 
UBRRL=0x67;
UCSRA=0x20;   
UCSRB=0x08;
UCSRC=0x86;
   
   //Flankenerkennung
   Taste1 = Key1 & !Merker1;
   Merker1 = Key1;

while(Taste1)
 { 
  LED1=1;             
  uart_putc(0x0B);   //Steuerzeichen Schneller Vorschub
  uart_putc(0x1B);   //Steuerzeichen ESC
  uart_putc(0xC);    //Steuerzeichen doppelte Höhe und Breite
  uart_puts(" ZEITMESSUNG   V1.0");
  uart_putc(0x0A);   //Steuerzeichen LF
  uart_putc(0x1B);   //Steuerzeichen ESC
  uart_putc(0x1B);   //Steuerzeichen Standard Einstellungen
  uart_puts("________________________________________");
  uart_putc(0x0D);   //Steuerzeichen CR
  uart_puts("          Daten hier eintragen");
  uart_putc(0x0A);   //Steuerzeichen LF    
  uart_putc(0x0D);   //Steuerzeichen CR
  uart_puts("    DATUM:_________________________");  
  uart_putc(0x0D);   //Steuerzeichen CR
  uart_puts("      ORT:_________________________");
  uart_putc(0x0D);   //Steuerzeichen CR
  uart_puts("  LAEUFER:_________________________");
  uart_putc(0x0D);   //Steuerzeichen CR
  uart_putc(0x0D);   //Steuerzeichen CR
  uart_puts("________________________________________");
  uart_putc(0x0B);   //Steuerzeichen Schneller Vorschub
  uart_putc(0x1B);   //Steuerzeichen ESC
  uart_putc(0xC);    //Steuerzeichen doppelte Höhe und Breite
  uart_puts("    ERGEBNISSE:");
  uart_putc(0x0D);   //Steuerzeichen CR
  uart_puts("   1.  11:11:11");
  uart_putc(0x0D);   //Steuerzeichen CR
  uart_puts("   1.  11:22:33");
  uart_putc(0x0D);   //Steuerzeichen CR
 }
}
int uart_putc(unsigned char c)
{
  while (!(UCSRA & 0b00100000))
  ;  
  UDR = c;
  return 0;
}            

void uart_puts(unsigned char *str)
{
  while(*str)
    uart_putc(*str++);
}

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du übergibst einer Funktion, die lt. Deklaration einen Pointer auf eine 
Variable im SRAM erwartet, einen String, der im Flash abgelegt ist. Das 
beißt sich. Du musst die Funktion, wenn Du konstante Strings (die nunmal 
standardmäßig im Flash abgelegt werden, was auch sinnvoll ist) dann auch 
entsprechend deklarieren bzw. definieren:
void uart_puts(flash unsigned char *str)
{
   //Code
}

Autor: Pat F. (breaker87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnelle Antwort!

Jetzt sind alle Fehler weg...
Teste jetzt gleich mal das Prog.


lg Patrick

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.