Absoluter Anfänger (ADC STK500)

Gast #3050257
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
Gast #3052748
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.
Gast #3054505
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

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