Forum: Mikrocontroller und Digitale Elektronik Absoluter Anfänger (ADC STK500)


von Daniel (Gast)


Lesenswert?

Hallo zusammen,
ich heiße Daniel und bin noch ein totaler Anfänger auf dem Gebiet der 
Mikrocontroller-Programmierung und würde gerne einen IR-Abstandssensor 
der Fa. Sharp (GP2-1080K) über ein "STK500" Board mit "ATMega16" AVR 
digitalisieren und abfragen. Hierzu habe ich schon einige tutorials 
gelesen und auch schon einen kleinen Teil des Quellcodes geschrieben. 
Ich habe nur Sekunde das Problem, dass ich nicht weiss, wie die 
ermittelten werte über RS232 ausgegeben werden. Könnt Ihr mir bitte 
Helfen, hier einen Ansatz zu finden oder bei Bedarf einige von mir 
gemachten Fehler zu identifizieren?

Hier mal mein bisheriges Code:
1
#define F_CPU 16000000UL
2
#define BAUDRATE 9600UL
3
#include <avr/io.h>
4
#include <avr/interrupt.h>
5
6
ISR(ADC_vect)
7
8
{
9
  PORTC = ADCH;
10
}  
11
12
int main(void)
13
{
14
  DDRC = 0b11111111; 
15
  
16
  //ADC-Konfiguration 
17
  ADMUX |= (1<<REFS0) | (1<<REFS1) | (1<<ADLAR);
18
  ADCSRA |= (1<<ADEN) | (1<<ADSC) | (1<<ADATE) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1);
19
  sei();
20
  
21
    while(1)
22
    {
23
    }
24
}
Momentan werden die Daten auf PORTC ausgegeben, möchte diese aber gern 
an die RS232 Schnittstelle übergeben und über Putty auslesen.

Vielen Dank schon mal im voraus!

Gruß, Daniel

von Fabian O. (xfr)


Lesenswert?


von Karl H. (kbuchegg)


Lesenswert?

Und dann noch:

FAQ
gleich der erste Punkt

von Daniel (Gast)


Lesenswert?

Vielen Dank, werde mich mal die Tage da durch arbeiten, nur bin ich mir 
nicht sicher, ob ich das ganze auch verstehe, sieht schon ziemlich 
kompliziert aus.

von Onkel Herbert (Gast)


Lesenswert?

Daniel schrieb:
> ich heiße Daniel und bin noch ein totaler Anfänger auf dem Gebiet der
> Mikrocontroller-Programmierung und würde gerne ...

Möglicherweise sind deine Ambitionen für einen Anfänger (noch) zu 
anspruchsvoll.

Nutze deine Motivation für einen Einstieg, aber übernehme dich dabei 
nicht.

Es macht schon Sinn für einen Anfänger mit der Standard-Übung eines 
Anfänger-Tutoriums anzufangen und sich langsam anderen Themen zu nähern. 
Bevor du den UART angehst musst du vorher allerhand anderes verstanden 
haben.

von Daniel (Gast)


Lesenswert?

Guten Abend zusammen,

so ich habe mich jetzt mal durch einige Tutorials durchgelesen und mir 
jede Menge Codes angeschaut. Ich habe mich jetzt erstmal nur auf das 
Senden über der RS232 Schnittstelle beschränkt. Nur jetzt bin ich total 
verwirrt?! Das Senden einzelner Zahlen funktioniert soweit bzw. ein x 
dauerhaft auf der Rs232 auszugeben. Über Putty sieht soweit alles gut 
aus. Nur ändere ich den Buchstaben in z.B. 'l', dann steht im Putty nur 
noch Blödsin, wie kann das sein?

Hier mal der Code, der ja eigentlich stimmen sollte:

#include <avr/io.h>

#define F_CPU 4000000UL
#define BAUDRATE 9600UL
#define UBBR F_CPU/16/BAUDRATE-1



void usart_init(void){
  UBRRH = UBBR >> 8;   //Baudrate einstellen
  UBRRL = UBBR & 0xff; //Baudrate einstellen

  UCSRB = (1<<TXEN); //Transmitter (Daten schicken) aktivieren
  UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //8Bit länge und 1 Stoppbit; 
Asynchron
}
void usart_send(void){
  while (!(UCSRA & (1<<UDRE)));  //warten bis Senden moeglich (UDRE)
  UDR = 'l';   //'x'
}


int main(void){

  DDRD = 0xff;


  usart_init();

  while(1){
    usart_send();


  }
}




Gruß, Daniel

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.