www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik C167 Interrupt


Autor: Toni (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich versuche gerade für meine Diplomarbeit einen C167 in Betrieb zu
nehmen. Die UART wird dabei auch benötigt. Sie scheint mir auch zu
funktionieren.
Aber ich bekomme nicht den von mir erwarteten Hex Code, sonder bloss FF
ins Terminal geschrieben.
Also stimmt Baudrate, Stopbit und Reloadreg. Aber was hab ich falsch
gemacht das nicht meine Zeichenkette heraus kommt? Könnte es mit den
Interrupt zusammenhangen?

Danke für eure Tips

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm, hast du den microcontrollen direkt an den com port angeschlossen?!
in der regel bracht man da noch n chip zwischen der die signale
verstaerkt.
zb MAX3232 von maxim ...

Autor: T.Stütz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void LEER_BUFF(void)
{
  while(S0TIR == 1)
  {
  }
}

Meines Wissens wird dieser Interrupt-Request (Bit 7 im S0TIC)
GESETZT wenn du neue Zeichen eintragen kannst, danach sollte er
gelöscht werden (du verwendest ja keinen Interrupt, welcher dies ja
automatisch machen würde). Fakt ist dadurch das du den S0TBUF ständig
neu belegst kommt dann chrott raus.

besser wäre vielleicht:

void LEER_BUFF(void)
{
  while(S0TIR == 0); // Warten bis übergang von 0 -> 1
  S0TIR = 0;         // IR löschen
}

Außerdem solltest du in main ganz am Ende eine Endlosschleife machen

for(;;);

da sonst unvorhergesehene Dinge passieren (Stack zerschossen,
Programmcode ausgeführt der nicht erwünscht etc.)

Dann noch ein paar Anmerkungen:

Wenn das Programm auch noch etwas anderes machen soll, ist es ratsam
das Senden (und Empfangen) in Interrupts zu machen, da du selbst wenn
du mit 115200Baud arbeitest ca. 86us Sekunden in der Schleife hängt bis
er neue Dinge tun kann (das sind ungefähr 400 MC-Befehle wo er was
sinnvolles tun kann.

Gruss

Autor: Toni (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Tips

Habe jetzt eine Routine die über die Interrupts gesteurt wird. Im Keil
Simulator wird dann auch der ganze String ausgegeben.
Sobald ich das ganze auf den Prozessor lade und im Terminal dann
anschaue, bekomme ich nur FF FF FF FF FF FF FF u.s.w. er will garnicht
mehr aufhören. Was kann das sein?

Autor: T.Stütz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
S0TINT(0x2A) / S0TBINT(0x47) sind richtig per #define definiert ?

Ich tippe mal das er in den Wald springt (und dann irgendwann mal
wieder bei 0 anfängt)

Du solltest in deiner START167.a66 nachschauen ob
CLR_MEMORY = 1 oder 0 und INIT_VARS = 1 ( wenn hier eine 0 steht dann
werden Variablen die du initialisierst nicht vorbelegt).

Für einen Test kannst du auch "const char cSenden[] = { 0x11 ... };"
Die Angabe "const" führt dazu das die Variable im ROM verbleibt und
von dort auch gelesen wird.

! Wie sieht die Hardware aus, gibts da ein RAM und wenn ja ist
BUSCON1/ADRSEL1 richtig definiert !

Generell: Max232 zwischen PC und C167 ?

mehr fällt mir nicht ein...

Gruss

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.