USART am AtMega162 mit AVR Studio 6 zu reden ermutigen

OP #2917677
Lesenswert?

Hallo

Ich würde gerne eine RS232 verbindung mit meinem PC und dem Atmega162 
herstellen. Nun habe ich einige Beispiele mir angeschaut und mit Hilfe 
des Datenblattes folgendes geschrieben:
1
#include <avr/io.h>
2
#include <avr/iom162.h>
3

4

5
#define FOSC 16000000// Clock Speed
6
#define BAUD 9600

7
#define MYUBRR FOSC/16/BAUD-1
8

9

10
void USART_Init( unsigned int ubrr );
11
void USART_Transmit( unsigned char data );
12

13
int main( void )
14
{
15
  USART_Init ( MYUBRR );
16
}
17

18
void USART_Init( unsigned int ubrr )
19
{
20
  UBRRH = (unsigned char)(ubrr>>8);
21
  UBRRL = (unsigned char)ubrr;
22
  /* Anabole receiver ?nd transmitter */
23
  UCSRB = (1<<RXEN)|(1<<TXEN);
24
  /* Set frame format? 8data, 2stop bit */
25
  UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
26
}
27

28
void USART_Transmit( unsigned char data )
29
{
30
  /* Wait for empty t?ansmit buffer */
31
  while ( !( UCSRA & (1<<UDRE)) )
32
  ;
33
  /* Put data into bu?fer, sends the data */
34
  UDR = data;
35
}

Leider wirft der Compiler immer fehler aus. Ist der Code falsch oder 
fehlt mir noch etwas?

Danke im vorraus

Chris
Angehängte Dateien:
#2917691
Lesenswert?

Was ist das denn für ein komischer Compiler?

Die, die ich kennen, melden sowas wie:

>line 42: error 42: totally useless code

oder ähnlich. Da steht geschrieben, was dem Compiler nicht gefällt.

Ansonsten sieht das alles sehr danach aus, als ob du den zweiten Schritt 
vor dem ersten tust. Bitte hier ganz vorne anfangen zu lesen:

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

Ohne Grundlagen wird das nichts.

Oliver
#2917728
Lesenswert?

"expected expression before '?' token" in Zeile 29/ Spalte 30 ???
Ich kann da gar kein Fragezeichen entdecken. Irgendwas komisches 
mitkopiert? Was aber nicht angezeigt wird? Und wo kommen die 
Fragezeichen in den Kommentaren her? Mit deinem Computer alles in 
Ordnung?
OP #2917789
Lesenswert?

Fehler gefunden!!!

Da der 162 zwei USART Schnittstellen hat, muss man ihm mitteilen welchen 
man meint...


So wird aus:
UCSRC = (1<<URSEL)|(1<<U?BS)|(1<<UCSZ1);

dieses hier:
UCSR0C = (1 << URSEL0) | (0 << UPM00 ) |(0 << UPM10 ) | (0 << USBS0);

dieses ist leider etwas unglücklich erklärt und der Doku...

sorry

Chris
Gast #2917848
Lesenswert?

Damit muss man bei PDFs rechnen. Die sind nämlich zum Lesen am 
Bildschirm bzw. zum Ausdrucken gedacht, und nicht dafür, dass man 
Quellcode rauskopiert. Den Code soll man selber schreiben oder zumindest 
nur aus reinen Textdateien kopieren.
Gast #2917872
Lesenswert?

Hast Recht, in dem Fall ist es wirklich im PDF falsch. Es kann aber auch 
passieren, dass es im PDF richtig angezeigt wird, beim Rauskopieren aber 
falsche/zusätzliche/nicht-druckbare Zeichen mitkopiert werden. Deshalb 
schreib den Code lieber selber. Wenn man dabei gleich mitdenkt, was die 
Anweisungen machen, ist der Lerneffekt auch ungleich höher.

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