mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMega328 UART


Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich hab irgendwie Probleme mit den "neuen" AVRs.

Ich wollt mich jetzt erstmal zum warm werden von meinem Mega328 mit 
lauter Us benageln lassen. Wenn ich nun aber das Hyperterminal auf mache 
kommt nichts an.

Hab jetzt schon paar mal drüber geschaut und probiert aber es klappt 
irgendwie nicht :(
.include "m328Pdef.inc"

.def temp    = r16  
 
; Baudrate einstellen
ldi     temp, 25
sts     UBRR0L, temp

; 8 Bit,1S, 0P,Asy
 
ldi     temp, 0b10000110
sts     UCSR0C, temp
  
ldi     temp, 0b00001000
sts     UCSR0B,temp                  
 
loop:
  lds     temp,UCSR0A
  sbrs    temp,UDRE0                  
rjmp    loop
     ldi   temp, 'U'
     sts     UDR0, temp
rjmp   loop

Danke für eure Hilfe!

Autor: Z8 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
; Baudrate einstellen
>ldi     temp, 25
>sts     UBRR0L, temp

ich hab keinen Bock mehr drauf --> bitte mit Bit-Namen! Z8

Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hoffe ich hab das jetzt richtig verstanden:

also die 25 ist einfach der vorher berechnete Wert für 4MHz und 9800Baud

und bei UCSR0C
URSEL|UMSEL|UPM1|UPM0|USBS|UCSZ1|UCSZ0|UCPOL

bei UCSR0B
ist halt in dem Fall TXEN gesetzt

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ldi     temp, 0b10000110
> sts     UCSR0C, temp

Was versprichst du dir davon, einen Modus zu benutzen, der im Datenblatt 
mit "(Reserved)" markiert ist? Oder versuchst du hier vielleicht, das 
Bit URSEL zu benutzen? Das gibt es beim Mega328 gar nicht.

Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun gut also für Asynchron UMSEL1 und UMSEL0 auf 00 gesetz geht aber 
leider
trotzdem nicht.

Autor: Z8 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist Deine Hartware ok?
Hast Du den µC auf einem Sockel?

Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja hab grad mal den Controller getauscht ging auch nicht und vorhins 
nochmal mit nem 8515 getest um zu gucken ob es wenigstens damit geht und 
es ging, also geht Kabel und beide Stecker ;). Aber dabei sei vielleicht 
gesagt das ich das STK200 nutze. Kann es vielleicht daran 
liegen?(Einfache Programme gehn aber zBsp Lampe an Lampe aus)

Autor: Z8 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was? der 8515 ist ein 40-Pinner, im Gegensatz zum m328 mit 28 Pins!

STK200! ich binn raus.

mfg Z8

Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja klar. Nur weiß ich das auf den 8515 meine UART funktionier und damit 
ab ich meine Stecker und alles getestet um das auszuschließen

Autor: Z8 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenn das STK200 nicht.

Z8 DU BIST RAUS.

Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sehe da zweimal
rjmp    loop

So sendet er wohl nie ein U.

Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja das erste wird ja "geskipt" wenn der UART wieder bereit ist.

Ich bin aber selber schon n bisschen weiter ich habs jetzt geschafft das 
schon ein Zeichen ankommt (Fusebits) aber eben nicht das richtige und 
nur dann wenn ich ein U schicke sonst ist auch nichts. Klingt ja danach 
als wäre was mit der Baudrate nicht richtig aber
eigentlich ist doch die 25 für 4MHz und 9600 Baud richtig !?

Autor: Z8 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>eigentlich ist doch die 25 für 4MHz und 9600 Baud richtig !?

schau mal hier:

http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART

Der Schlüsselsatz lautet : lass Deinen Rechner rechnen. :)

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Der Schlüsselsatz lautet : lass Deinen Rechner rechnen. :)

>Z8 DU BIST RAUS.

25 ist schon richtig. Benutzt du den internen RC-Oszillator oder einen 
Quarz?

MfG Spess

Autor: Z8 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frage von leztlich:

>Ist Deine Hartware ok?
>Hast Du den µC auf einem Sockel?

das habe ich nicht, so sinnlos mal derher gefragt.
Wenn der  mC auf einem Sockel sitzt, könnte man
diesen entfernen und eine Brücke zwischen RX und TX
schalten. Damit könnte man die Kommunikation zwischen
dem Pc und Deiner Schaltung überprüfen.

Wenn Du über Dein Terminal-Prog. ein Zeichen sendest,
solltest Du es dann auch zurück bekommen.

Funktioniert das? Z8

Autor: Z8 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nie wieder ohne:

>.equ F_CPU = 4000000                            ; Systemtakt in Hz
>.equ BAUD  = 9600                               ; Baudrate

>; Berechnungen
>.equ UBRR_VAL   = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden
>.equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))     ; Reale Baudrate
>.equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)  ; Fehler in Promille

>.if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))       ; max. +/-10 Promille Fehler
>  .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu 
hoch!"
>.endif

Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wie schon gesagt es kommen ja Zeichen an. Ich hab mir das jetzt so 
gebastelt das bei jedem Tastendruck das Zeichenregister erhöht wird und 
dieses ausgegeben. Also 1..2..3..A..B..
Bei machen Zeichen geht gar nichts bei anderen kommt nur so ein C mit 
nem Strich dran.
Ich nutz die Clock vom STK200

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich tippe auf falsch gesetzte Fuses.

MfG Spess

Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss ich da noch irgendwas setzen? Hab die Clockbbits eigentlich richtig 
gesetzt.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Muss ich da noch irgendwas setzen?

Was hast du denn gesetzt?

MfG Spess

Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja im AvrStudio ist so ne Auswahlliste für den Quarz und da is
"ExtClock, 40ms + 6CK" gewählt sonst alles aus ausser SPI.

Das STK200 hat ja nen Clock.

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.