www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mein MCT Programm läuft nicht!


Autor: Thomas E. (bazibua)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute, hab hier ein kleines Problem.
Ich hab zwei Mikrocontroller als Sender programmiert und einen als 
Empfänger. Die Eingangssignale der Sender sind je 4 Taster, die dann 3V 
an die Eingangpins von PORTB legen. Die Senderprogramme sind identisch, 
die unterscheiden erfolgt über den PIN 4 (je nachdem ob er über einen 
Schalter gesetzt ist oder nicht). Das ganze soll dann über den Seriellen 
Ausgang (TXD und RXD) auf den Empfänger übertragen werden. An den 
Ausgängen von dem Empfänger MCT hängen an PORTB 8 LED´s und an PORTA 
eine LED und ein Summer. Die 8 LED´s an PORTB sollen noch ca 10s 
nachleuchten, deshalb die Zähler und der Timer. Wenn nichts mehr 
übertragen wird, soll er in den Power-down Mode gehen.
Nur irgendwie klappt des ganze ned. Hab schon einiges ausprobiert und 
umprogrammiert, aber sie wollen nicht so wie ich es will.

Hab die beiden Programme im Anhang.

Würde mich tierisch über Hilfe freuen!
Danke schon mal im Vorraus.

MFG Thomas

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eine ".doc" - Datei öffnen viele nur ungerne....

Gruss Otto

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... mit einem "Windows Pc" gleich garnicht! :(

Autor: Thomas E. (bazibua)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was wollt ihr dann?

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kommt darauf an, was in der doc-Datei drin ist.....

Ist es z. B. ein Programm, dann lieber als "asm" oder "c"

Otto

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MaOAm :) reimte sich gerade. grins

Autor: Thomas E. (bazibua)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ok
hier ist der Sender

Autor: Thomas E. (bazibua)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
und hier der Empfänger

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>  UDR = 'x';            // Inhalt von x �bertragen auf Schnittstelle

Das überträgt nicht den Inhalt, sondern das ASCII-Zeichen "x" - und zwar 
nur dieses.

Gruss Otto

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu Empf_nger.c

volatile unsigned char c1 = 0;  // Z�hler 1 initialisieren und auf Null 
setzen
volatile unsigned char c2 = 0;  // Z�hler 2 initialisieren und auf Null 
setzen
volatile unsigned char c3 = 255; // Z�hler 3 initialisieren und auf 255 
setzen

Autor: Thomas E. (bazibua)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Otto

Also muss ich es dann so machen oder?
UDR = x;

Danke für die Hilfe.


Dir auch holger. Werd ich auch ausprobieren.

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Die Eingangssignale der Sender sind je 4 Taster, die dann 3V
> an die Eingangpins von PORTB legen.

Mit welcher Spannung arbeitet der Controller ?

> Die Senderprogramme sind identisch,
> die unterscheiden erfolgt über den PIN 4 (je nachdem ob er über einen
> Schalter gesetzt ist oder nicht).

hängen die beiden gleichzeitig an der seriellen Schnittstelle?
Falls ja, wäre das nicht so gut - versuche es mit nur einem Sender

Otto

Autor: Thomas E. (bazibua)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Mikrocontroller versorg ich auch mit 3V (2x 1,5V Batterie). Ist ein 
ATmega 8515L dem müsste das reichen, oder? L steht doch für Low Power 
oder?

Noch hängen nicht beide Sender MCT´s auf der seriellen Schnittstelle. 
Aber es klappt ja mit einem Sender auch nicht. :-(

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Aber es klappt ja mit einem Sender auch nicht.

o. g. Änderungen schon getestet ?

> wie ist die Schaltung ?

Otto

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach ja: interner Oszillator oder Quarz und welche Baudrate?

Hast Du den Sender schon mit einem Terminalprogramm getestet ?

(Falls Du einen MAX232 verwendest)

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
steht ja im Programm:

> 9600Bd bei 3.6846 MHz

aber stimmt es auch - ist der Quarz in den Fuses aktiviert?

Autor: Thomas E. (bazibua)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Otto wrote:
> o. g. Änderungen schon getestet ?

Bin grad dabei, hab nen Testaufbau auf einer Platine zusammengelötet.


Bautrate hab ich bei beiden gleich eingestellt:
UBRRL = 0x17;      // 9600Bd bei 3.6846 MHz

Ich hab ein STK 500 und das AVR Studio 4

Autor: Thomas E. (bazibua)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Otto wrote:
> aber stimmt es auch - ist der Quarz in den Fuses aktiviert?

Versteh ich jetzt nicht.
Meinst du ob im Datenblatt steht, dass die UBRR 23 und die 9600 Bautrate 
zusammenpassen bei fosc = 3.6864 MHz?

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DDu musst dem Controller über "Fuses" mitteilen, dass er winen Quarz hat 
- sonst läuft er mit 1MHz

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Thomas E. (bazibua)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab aber keinen externen Quarz, falls du das meinst. Also nix mit 
XTAL1 usw.
Drum hab ich das ja mit dem Zähler gemacht. Aber bin grad noch am 
weiterlesen. Nur vorab mal. :)

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann hast Du auch kein fosc = 3.6864 MHz - ausserdem ist der interne 
Oszillator relativ ungenau, wenn er nicht kalibriert ist.

Entweder, Du hängst einen Quarz dran, damit Du mit 9600 Baud arbeiten 
kannst, oder Du reduzierst die Baudrate auf 300 - 2400 und lässt die 
Fuses, wie sie sind.

Autor: Thomas E. (bazibua)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, ungenau ist egal. Kommt auf ein paar Sekunden hin oder her nicht 
an. Will aber eigentlich keine Externen Bauteile mehr dazu.
Ich dachte wenn ich den Timer auf langsamste Geschwindigkeit stell 
reicht des. Oder was wäre das für ein Befehl um die Bautrate runter zu 
setzen?

beim Empfänger
TCCR1B = 0x05;         // (Timer) prescaler 1024 (langsamste Geschw.)

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nee - ungenau bedeutet, dass die sereille Übertragung nicht 
funktioniert.

Lies dazu bitte:

http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Autor: Thomas E. (bazibua)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja ok danke. Werd ich mir morgen vornehmen.
Hab da auch schon einiges raus, aber ich geh´s nochmal durch. Vielleicht 
is mir ja jetzt alles ein wenig klarer.

Na dann, vielleicht bis die Tage.

Danke nochmal für die bisherige Hilfe.

MFG Thomas

Autor: Thomas E. (bazibua)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
hab mir das
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...
nochmal durchgelesen. Und wenn ich es richtig verstanden hab muss ich 
diese Zeile noch hinzufügen
UCSRC = 
(1<<URSEL)|(0<<UMSEL)|(0<<UPM0)|(UPM1<<0)|(0<<USBS)|(1<<UCSZ0)|(1<<UCSZ1 
);
Aber es funktioniert immer noch nicht.

Ich weis nicht mehr weiter....

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du bereits geprüft, ob die Schaltung überhaupt funktioniert - also 
z. B. eine LED blinken lassen?

An einer Stelle schreibst Du, dass Du die Schaltung mit 3V betreibst - 
an anderer, das es ein STK500 ist.

Falls es ein STK500 ist, teste Sender und Empfänger über ein 
Terminalprogramm, indem Du die "RS232-Spare" an einen PC anschliesst.

Otto

Autor: Thomas E. (bazibua)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Schaltung funktioniert sicher. Hab sie selbst auf einer Platine 
aufgebaut und durchgemessen. Diese wird mit 3V betrieben. Mit dem STK500 
programmiere ich immer nur die MCT und steck sie dann in meine 
Schaltung.

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann teste Sender- und Empfängerprogramm mit dem STK500 über ein
Terminalprogramm, indem Du die "RS232-Spare" an einen PC anschliesst.

Programmiere zuerst die Sender-UART komplett so, wie im Tutorium 
beschrieben und sende die Tasten an das Terminalprogramm.

Funktioniert dies, programmiere die UART des Empfängers identisch und 
sende mit dem Terminalprogramm Daten an den Empfänger.

Otto

Autor: Thomas E. (bazibua)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, hab mir ein Terminalprogramm besorgt.
Werds mal damit versuchen.
Hab übrigens noch ein paar Fehler gefunden. Bin ja mal gespannt, ob ich 
es in den nächsten Tagen hin bekomme.

Danke

Autor: Thomas E. (bazibua)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,
also das Mikrocontroller Programm funktioniert. Mit den XBee Modulen 
aber leider nicht.

Ich hab jetzt nur die zwei Mikrocontroller über die Serielle 
Schnittstelle (TXD & RXD) verbunden und es funktioniert alles 
einwandfrei. Aber sobald ich die Verbindung trenne und die XBee Module 
zwischen schalte, funktioniert es nicht mehr.

Hat das schon mal jemand gehabt?
Kann mir jemand Helfen?

Danke schon mal im Voraus.

Gruß Thomas

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.