www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SRF10 Problem


Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
Ich habe ein Problem mit dem Auslesen meines SRF10.
Der SRF10 wird zwar angesprochen und reagiert auch (allerdings erst ab 
ca. 20 cm) aber das was er mir in HyperTerminal ausgibt sind nur Pfeile, 
Smilies usw..
Außerdem ist mein ack andauernd auf 0.
#include <inttypes.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include <avr/io.h>
#include <math.h>
#include "i2cmaster.h"
#include "twimaster.c"
#include <util/delay.h>
#include <avr/sfr_defs.h>
#define SRF 0xE0
#define BAUD 115200L
#define F_CPU 7372800UL

//unsigned int distance;



void initusart(void) 
{
unsigned char x; 

UBRRL = (F_CPU / (16L*BAUD)) -1; 
UCSRB |= (1<<TXEN) | (1<<RXEN); 
UCSRC |= (1<< URSEL) | (1<< UCSZ1) | (1<<UCSZ0); 
x = UDR;
}

void sendeusart(int x)
{
while (!(UCSRA & (1<<UDRE))); 

UDR = x;
}


int main(void) 
{ 
initusart();

unsigned char Lbyte,Hbyte;

while(1) 
{ 
i2c_init();

i2c_start(SRF); 
i2c_write(0x00); 
i2c_write(0x51); 
i2c_stop(); 

_delay_ms(65); 

i2c_start(SRF);  
i2c_write(0x02);
i2c_stop(); 

i2c_start_wait(SRF + 0x01); 
Hbyte=i2c_readAck(); 
Lbyte=i2c_readNak(); 
i2c_stop(); 
//distance=(Hbyte*256)+Lbyte;
//sendeusart(Hbyte);
sendeusart(Lbyte); 
}
}

Pullups hab ich dran...

Ich denk es ist ein doofer Anfängerfehler bei dem ihr mir bestimmt 
helfen könnt.


MfG

Marc

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>aber das was er mir in HyperTerminal ausgibt sind nur Pfeile,
>Smilies usw..

>sendeusart(Lbyte);

Und was meinst du, was in 'lbyte' stehen sollte?

MfG Spess

Autor: Tombstone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>#include "twimaster.c"
?????

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
@Spess
ich dachte, dass ich mit
>distance=(Hbyte*256)+Lbyte;
und dann mit sendeusart(distance) den Abstand raus bekomm.


@Tombstone
hab den code größten Teils übernommen...

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>>ich dachte, dass ich mit
>>distance=(Hbyte*256)+Lbyte;
>und dann mit sendeusart(distance) den Abstand raus bekomm.

Aber das ist mit Sicherheit ein Hexwert, der im Terminalprogramm das 
entsprechende ASCII-Zeichen erzeugt. Pfeile,Smilies deuten auf Werte 
zwischen 0 und 31.

MfG Spess

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist es denn richtig, dass mein Ack immer 0 ist?
Die Rechnung für distance ist dann ja unsinnig...

MfG

Marc

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe meinen Fehler gefunden. Bzw. es war nie einer da...
Das tut weh.

Trotzdem danke

Autor: Auch aus Fehlern anderer Lernwilliger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja was war's denn nun?

Da liest man nun schon mit, und dann gibt's am Ende nichts, wo man auch 
was draus für sich mitnehmen kann?

Und denkt doch bitte auch mal an die, die den Thread später mal lesen. 
So ein offenes Ende ist doch irgendwie blöd.

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der SRF10 gibt den Abstand dezimal in cm aus und mein Hyper Terminal hat 
die dezimale Zahl in ein ASCII-Zeichen umgewandelt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.