www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik printf bringt HC12 zum Absturz


Autor: Funkenschlosser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe ein ganz einfaches Programm mit einem Interrupt und in der 
main-Schleife wird der printf-Befehl genutzt.

Die Interrupt-Routine läuft einwandfrei durch, bis nach dem ersten 
printf der Controller hängen bleibt. Alleine funktioniert der 
printf-Befehl aber.

Wer kann mir helfen?
#include <hc12.h>
#include <912b32.h>
#include <stdio.h>

int Zaehler=0;
int i=1234;

#pragma interrupt_handler Zeitbasis
void Zeitbasis(void)
{
 TC0 = TCNT + 65530;
 
 Zaehler++;
 putchar('2');
 
 TFLG1 = 0x01;
}

void main(void)
{
 *((unsigned char *)0x0be8) = 0x06;    
 *((void (**)(void))0x0be9) = Zeitbasis; 
   
  TSCR=0x80;                               
  TMSK2=0x05;                                        
  TIOS=0x01;               
  TMSK1=0x01;                
  TFLG1=0xFF;
 
  INTR_ON();
     
  while (1)
  {  
  if (Zaehler == 50)
     {  
      printf("Wert: %d \r",i);
   
    Zaehler = 0;
   }   
  }  
}

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne deinen Controller nicht muss ich vorweg
sagen. Benutzt printf() evtl. putchar() zur Zeichenausgabe?
Dann ist es keine gute Idee putchar() in einem
Interrupt aufzurufen und printf() in main().

Autor: Funkenschlosser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das putchar('2') im Interrupt war nur zum Test. Auch ohne das bleibt der 
Fehler unverändert.

Sobald ein printf ausgeführt wird, macht der HC12 nichts mehr.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die ganze SChleife vielleicht wegoptimiert? Mal im listing 
nachschauen...
Zaehler als volatile deklarieren...

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.