Autor |
steuerung von ausgängen am µC per rs232 |
|
|
|
|
BID = 526145
thunderbird487 Gerade angekommen
Beiträge: 10 Wohnort: st.pölten
|
|
hallo!
hätte eine frage an die µC-Profis!
kann ich dieses Programm wie es hier ist auf meinen atmega8515 spielen und damit per rs232 die ausgänge schalten??das makefile hab ich auch!
danke
#include <io.h> // Wir brauchen Zugriff auf die I/O's des Controllers
#define F_CPU 6000000 /* 6Mhz */
#define UART_BAUD_RATE 9600 /* 9600 baud */
// Berechnung des Inhalts des UBBR-Registers
#define UART_BAUD_SELECT (F_CPU/(UART_BAUD_RATE*16l)-1)
// Datentypdefinitionen
typedef unsigned char BYTE;
typedef unsigned short WORD;
int main (void)
/****************************************************************************
Hier ist der Programmeinstiegspunkt.
*/
{
/* UART Control Register laden. Wir verwenden (noch)
keine Interrupts. Hier wollen wir nur empfangen, also wird
nur das Receiver Enable Flag gesetzt. */
outp ((1 << RXEN), UCR);
/* Baudrate einstellen */
outp ((BYTE) UART_BAUD_SELECT, UBRR);
// Port B als Ausgang konfigurieren
outp (0xff, DDRB);
// Hier machen wir einmal etwas anderes zur Realisierung der
// Endlosschleife. Wir setzen zu Beginn der Schleife ein Label.
// Am Schleifenende springen wir direkt zu diesem Label.
// Nicht schön, aber unheimlich schnell.
LOOP:
// Prüfen, ob ein Zeichen empfangen wurde.
if (inp (USR) & (1 << RXC)) { // Bit RXC im USR gesetzt ?
switch (inp (UDR)) { // Datenregister auslesen
case '1': // LED einschalten
sbi (PORTB, PINB0);
break;
case '0': // LED ausschalten
cbi (PORTB, PINB0);
break;
default: // Bei allen anderen Zeichen nichts tun
break;
}
}
goto LOOP;
} /* end of main */
|
|
BID = 526147
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
|
Direkt an die Pins des Prozessors solltest du RS232-Pegel nicht anschliessen denn das bringt ihn möglicherweise um.
Da gehören spezielle Treiber- und Empfängerchips hin, die die Pegelumsetzumg machen und in aller Regel das Signal dabei invertieren.
Das Programm debuggen musst du schon selbst erledigen.
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten ! |
|
BID = 526194
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Erstmal so zum Anfang:
1. Es wäre angenehm, wenn du die Regeln der deutschen Rechtsschreibung einhalten würdest. Groß- und kleinschreibung wurde ja nicht scherzhaft erfunden und Interpunktion hilft extrem, den Sinn eines Textes zu verstehen bzw. ihm erst einen zu geben. Schließlich soll sich jemand die Texte durchlesen.
2. Du hast uns nur einen Teil des Quelltextes gezeigt, es fehlt der Kopf:
Code : |
/****************************************************************************
UART.c
------
Übungsprojekt zum Empfang von Daten mit dem UART.
Eine LED an Pin 0 von Port B soll gesteuert werden beim Empfang
folgender
Zeichen:
'1' - LED ein.
'0' - LED aus.
Autor: Christian Schifferle
Datum: November 2002
Software: AVR-GCC
needed
****************************************************************************/
|
|
Das gehört sich nicht, da es den eigentlichen Autor nicht erwähnt.
3. Der Kode ist schon länger nicht mehr aktuell, da er inp und outp benutzt, was mittlerweile obsolet geworden ist.
4. Beschreibe dein Problem mal genauer: in diesem Programm wird überhaupt nur ein Pin geschaltet, und zwar anhand der Informationen, die über die UART eintreffen, steht so auch im Kopf...
Du kannst es beliebig anpassen, um andere Pinnen/ganze Ports zu schalten.
Du musst aber das Programm auch an das Zielsystem (dein AVR) anpassen: vorerst prüfen, ob alle Registernamen wie USR und Bitnamen (RXC) mit den Beschreibungen im Datenblatt übereinstimmen. Weiterhin muss dem Compiler/Kompilierer mitgeteilt werden, auf welchem AVR das Programm laufen soll. Das sollte in deinem, sinnigerweise vorenthaltenem Makefile stehen. Dies wird später dem avr-gcc weitergegeben mit -mmcu=m8515.
_________________
|
BID = 526209
Ltof Inventar
Beiträge: 9330 Wohnort: Hommingberg
|
Offtopic :
| @DonComi
Das Wort "Kleinschreibung" wird groß geschrieben. |
_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)
|
BID = 526212
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Offtopic :
| Ja, ist halt ein, ironischerweise genau hier passierter Fehler meinerseits. Kommt vor. |
_________________
[ Diese Nachricht wurde geändert von: DonComi am 5 Jun 2008 21:14 ]
|
BID = 526219
Jornbyte Moderator
Beiträge: 7178
|
Zitat :
| Das gehört sich nicht, da es den eigentlichen Autor nicht erwähnt. |
Der ist lesbar im Code....
Zitat :
| /****************************************************************************
UART.c
------
Übungsprojekt zum Empfang von Daten mit dem UART.
Eine LED an Pin 0 von Port B soll gesteuert werden beim Empfang
folgender
Zeichen:
'1' - LED ein.
'0' - LED aus.
Autor: Christian Schifferle
Datum: November 2002
Software: AVR-GCC
needed
****************************************************************************/
|
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.
|
BID = 526224
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Achne,
Ich hatte auch bemängelt, dass er den Kopf, indem der Autor genannt ist, großzügig ausgelassen hat.
Freundlicherweise habe ich dann diesen Kopf nachgereicht, schließlich weiß auch ich mit Suchmaschinen umzugehen... und gelesen habe ich den auch.
[ Diese Nachricht wurde geändert von: DonComi am 5 Jun 2008 21:46 ]
|
BID = 526233
Jornbyte Moderator
Beiträge: 7178
|
Ja, entschuldige. Im nachgang hab ich gesehen, war ja von dir.
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.
|
BID = 526235
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Offtopic :
| Macht ja nichts |
_________________
|