Forum: Compiler & IDEs USART am AtMega162 mit AVR Studio 6 zu reden ermutigen


von Christian O. (goustrup)


Angehängte Dateien:

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

von Oliver S. (oliverso)


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

von Christian O. (goustrup)


Lesenswert?

Wie meinst du ohne Grundlagen wird das nichts. Ich habe seit 2 Tagen 
nichts anderes gemacht als gelesen. Nun habe ich den Code nach der 
Anleitung (http://www.youtube.com/watch?v=pld4ZRMrFAY) geschlieben und 
mit Atmel Studio 6 zu Compeliern versucht. Die Reihenfolge war im 
Beispiel die gleiche?

Danke für Antwort.

Chris

von Oliver S. (oliverso)


Lesenswert?

Ok, ich habe das Bild nicht weuter beachtet.

Das hier
>#include <avr/iom162.h>

sollte schonmal raus. Und dann bitte per Datenblatt überprüfen, wie die 
Register des ATMega 162 heissen.

Und bitte lies das Tutorial...

Oliver

von spontan (Gast)


Lesenswert?

@Christian O..

Glaub ich Dir nicht, den Code hast Du irgendwo rauskopiert und nicht 
ganz verstanden.

von Ralf G. (ralg)


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?

von xfr (Gast)


Lesenswert?

Er hat das anscheinend wie in dem Youtube-Video gemacht: Den 
Beispielcode aus dem Datenblatt per Copy & Paste ins Projekt eingefügt 
...

von Oliver S. (oliverso)


Lesenswert?

Was dazu führt, daß da nicht druckbare Zeichen mit kopiert werden, die 
der gcc überhaupt nicht mag...

Oliver

von Christian O. (goustrup)


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

von Ralf G. (ralg)


Lesenswert?

Christian O. schrieb:
> So wird aus:
> UCSRC = (1<<URSEL)|(1<<U?BS)|(1<<UCSZ1);
Ich würde mich an deiner Stelle trotzdem mal kümmern, wo hier schon 
wieder das Fragezeichen herkommt!

von Christian O. (goustrup)


Lesenswert?

Ja die Fragezeichen haben mich auch schon gewundert. Ich hab auch schon 
versucht die Doku bei Atmel neu zu laden mit dem gleichen Resultat. 
Scheint bei der Doku so zu sein. Am Mac wie in der VM mit Adobe Reader 
das selbe.

Kommt das bei Atmen häufig vor??

Gruß

Chris

von xfr (Gast)


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.

von Christian O. (goustrup)


Lesenswert?

Schon klar, nur wenn das lesen eines Beispiels schon nicht möglich ist, 
kann man da schon etwas an zusammenhänge vermissen.

von xfr (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.