mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hat jemand mal einen Beispielcode für den UART (90S2313) ?


Autor: Michael Kirsten (onkel_michi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe hier eine Hand voll AT90S2313 und bin nun dabei mir die ersten
Gehversuche mit den Teilen anzueignen.

Das erste Projekt: Schnittstellenwandler RS232-->Centronics

ging schon böse in die Hose.

Ich habe mir nun gedacht, das es wohl besser ist, erst einmal die
Basics zu lernen und das nicht so, das man aus heruntergeladenem Code
die Teile wegmacht, die man nicht braucht.

Ich brauche ein möglichst einfaches Programm, das nur ein Zeichen /
String auf dem UART mit 9600 Baud ausgibt.

Die Stücke aus dem AVR-GCC Tutorial (Habe ich gewissenhaft 3 mal
durchgelsen und dann im Forum mindestens 50 versch. Stellen mit
Beispielcode, der nach dem Zusammenstutzen nicht mehr lief.)

Ich weiß sehr wohl, das ich bei 8MHz eine 51 in UBRR laden muß und das
ich warten muß bis Bit 5 im UDRE 1 ist.
Auch weiß ich, das ich mit UDR=Zeichen, das Zeichen zum Senden schicke,
aber ich krieg die Abfolge im Programm nicht gebacken.

C habe ich schon mal Programmiert und einfache Sachen, wie das
Einschalten einer LED auf Tastendruck oder eine Bitfolge (ein Zeichen)
an einen Drucker mit Parallelschnittstelle schicken, hat schon
geklappt.

Nur das mit dem UART kriege ich nicht hin.

Ich weiß, das es unverschämt ist, aber kann mir bitte jemand einen Link
oder ein Programm sagen, mir Deppen hilft, meinen Fehler zu finden ??

Danke.

Michael

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn due hier duch Suchen nichts findest, solltest du mal ins complete
Datenlatt gucken. Da sind in der Regel solche Sachen recht gut erklärt.

Autor: Michael Kirsten (onkel_michi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du mit dem complete Datenblatt das DOC0839 von Atmel meinst ...

Das habe ich schon mehrmals gelesen.
#include <avr/io.h>

int main ()
 {
   
   char x='x';
   DDRD=255;

// Vorerst nur senden, also nur Transmitter einschalten;

  UCR |= (1<<TXEN);

  UBRR = 8000000 / (9600 * 16L) - 1;

     while (!(USR & (1<<UDRE)))  /* warten bis Senden moeglich  */
             {
             
              }
            UDR = x; /* schreibt das Zeichen auf die Schnittstelle */

   }


So weit bin ich. Aber irgendwas fehlt da, damit das Zeichen am Terminal
rauskommt.

Weil ich mir mit der Harware nicht sicher war, hatte ich irgendwelche
Assemblerprogramme kompiliert und in den 2313 reingebacken. Da kamen
dann Sachen auf der RS232 raus. Aber ich schließlich kapieren, wie das
geht.

Das mit dem Kapieren klappt im Moment aber wohl nicht.

Gruß

Michal

Autor: Kai Markus Tegtmeier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Wenn Du Dir nicht sicher in der C-Programmierung bist, ist eventuell
der C-Compiler von Codevision eine Einstiegshilfe. Da kann man sich mit
einem "Code Wizard" ein Grundprogramm zusammenbauen lassen, in dem die
wichtigsten Initialisierungen gemacht werden. Eine Testversion bis 2kB
Code (die bei Dir völlig ausreichen sollte) gibts AFAIK bei
www.hpinfotech.ro

Später, wenn Du etwas sicherer in AVR-C bist, kannst Du dann auf WinAVR
umsteigen...

Greetz
KMT

Autor: Michael Kirsten (onkel_michi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tipp,

ich benutze aber nur und ausschließlich Linux.

Ich konnte mein Problem gestern selber lösen.

Die Entwicklungsumgebung (KDevelop für Ethernut angepasst) im Hobbyraum
hatte noch das Makefile für den ATmega128 auf dem Ethernut.

Gestern hatte ich dann mal mein Projekt mit dem Schnittstellenwandler
auf dem Laptop (Da ist nur der AVR GCC und die binutils drauf) mit
einem selbstgestrickten Makefile kompiliert und das klappt jetzt
einigermaßen.

Auch Sachen mit dem UART in die RS232 schreiben klappt jetzt. War also
nur eine Softwaresache.

Michael

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.