ATMega328 UART

Gast #1261823
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 :(
1
.include "m328Pdef.inc"
2

3
.def temp    = r16  
4
 
5
; Baudrate einstellen
6
ldi     temp, 25
7
sts     UBRR0L, temp
8

9
; 8 Bit,1S, 0P,Asy
10
 
11
ldi     temp, 0b10000110
12
sts     UCSR0C, temp
13
  
14
ldi     temp, 0b00001000
15
sts     UCSR0B,temp                  
16
 
17
loop:
18
  lds     temp,UCSR0A
19
  sbrs    temp,UDRE0                  
20
rjmp    loop
21
     ldi   temp, 'U'
22
     sts     UDR0, temp
23
rjmp   loop

Danke für eure Hilfe!
Gast
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
> 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.
Gast
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)
Gast
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 !?
Gast
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
Gast
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
Gast
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
Gast
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
Gast
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.