mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Periodisches signal auf Atmega168 UART rx leitung?


Autor: joerg_seemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
versuche verzweifelt den RX-Interrupt auszulösen und das geht nicht.

erste messungen an der leitung ergaben ein periodisches Signal (siehe 
jpg)

Hardwarefehler, normal, oder was?

kann mir jemand weiterhelfen?

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

Bewertung
0 lesenswert
nicht lesenswert
räusper, räusper, hier das bild...

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
welches JPG?????

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie weit ist die Störspg. von GND entfernt? Volt?

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist der Pin auch auf Input geschaltet oder gar auf ausgang und gibt eine 
o aus?

Autor: joerg_seemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
merkwürdiger weise ca (-!)6V.

beim senden liegt das lowlevel auch bei -6V, klappt aber problemfrei
(allerdings keine schwingung vorhanden)

Autor: joerg_seemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
im UCSR0B-register sind rx- und tx-enablebits gesetzt.

muss noch separat der port geschalten werden?

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soll der Port ein Eingang sein dann: DDRx = 0
Soll der Port ein Ausgang sein dann: DDRx = 1
Portpin lesen: PINx

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich macht Feierabend.
Bis Morgen.
Sandmännchen kommt gleich.
Gruß

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen...

Stell mal deinen Schaltplan in den Anhang.

Autor: joerg_seemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
moin moin

also ich habe das CAN-Testboard von 
http://www.kreatives-chaos.com/artikel/can-testboard
nachgebaut und grad nochmal gemessen, dass der RX-pin auf hi gesetzt 
ist, obwohl eigentlich im quelltext derartiges nicht vereinbart wurde.

werde mal am code basteln und ma gucken was passiert

Autor: joerg_seemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab am code gebastelt und der pegel am TX und RX sind noch bei ca. 
4.5V???

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht hast du den int. Pullup eingeschaltet?
In welcher Sprache programmierst du?

Autor: joerg_seemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.asm

bin erst seit ca. 14 tagen dabei, int. pullup?

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Z.B:

DDRB  = 0x00 ;Datenrichtungsregister B als Eingang

PORTB = 0xFF ;Alle internen Pullup's einschalten

Interne Pullup's benutzt man dann, wenn man einen eingang auf low
testen will und keinen ext. Widerstand hat.

z.B. ein Taster nach Masse: Gedrückt = low  nicht gedrückt = high

Zum ausschalten des P.U. : PORTB = 0x00

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Häng mal dein Programm in den Anhang

Hast du Skype?

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

Bewertung
0 lesenswert
nicht lesenswert
ich benutze avr studio...

titel und kommentare sind noch nicht aktualisiert.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das "sei" darfst du nicht in die Interruptroutine setzen.
Sondern nach der Initialisierun in die main Schleife.
So wie jetzt wird der globale Interrupt nicht freigegeben und folglich
die Int.Rut. nicht ausgeführt.

in main fehlt auch noch : loop: rjmp loop
Jetzt wird nach  main sofort einmal die Interruptroutine ausgeführt
und mangels Rücksprungadresse wieder ein Reset.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe dein Programm zu schnell überflogen.
Stimmt so nicht ganz was ich geschrieben habe.
Die Schleife hast du ja schon drin.
Soweit ich mich noch erinnere must du noch den UART Int. freigeben
nicht nur den globalen mit sei.

Autor: joerg_seemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich probier das gleich mal...

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

Bewertung
0 lesenswert
nicht lesenswert
Nochwas zum anschauen.

 Im Anhang

Autor: joerg_seemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
interrupt scheint zu kommen, led geht aus...


;-------------------------
.include "m168def.inc"  ;|   Definitionen der Adressen
;-------------------------
;
.def data = r17
.def temp = R16
.equ CLOCK = 7372800
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1

.org 0x00
        rjmp main

.org URXCaddr                             ; Interruptvektor für 
UART-Empfang
        rjmp int_rxc

; Hauptprogramm
main:
        ldi temp, LOW(RAMEND)
        out SPL, temp
        ldi temp, HIGH(RAMEND)
        out SPH, temp

    ldi temp, 0x01
    out DDRB,temp
    out PORTB,temp

        ; Baudrate einstellen
        ldi temp, LOW(UBRRVAL)
        sts UBRR0L, temp
        ldi temp, HIGH(UBRRVAL)
        sts UBRR0H, temp

        ; Frame-Format: 8 Bit
        ldi temp, 0x06
        sts UCSR0C, temp

    ldi temp, 0x98
        sts UCSR0B, temp              ; Interrupt bei Empfang
                          ; RX (Empfang) aktivieren

        sei                               ; Interrupts global aktivieren

loop:   rjmp loop                         ; Endlosschleife

; Interruptroutine: wird ausgeführt sobald ein Byte über das UART 
empfangen wurde
int_rxc:
        push temp                         ; temp auf dem Stack sichern

    ldi temp,0x00
    out PORTB, temp


        pop temp
                           ; temp wiederherstellen
        reti                              ; Interrupt beenden

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.