ATMega328 UART

Gast #1261823
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 :(
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 #1261896
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)
Gast #1263194
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 !?
Gast #1263285
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
Gast #1263295
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren