Hallo,

Ich habe vor den srf05 ultraschall sensor an meinen Asuro zu bauen. Das hat mit Bascom auch schon wunderbar funktioniert aber mit c will es nicht so wie ich es möchte.

Code:
#include <stdlib.h>
#include <stdio.h>
#include <avr/io.h>
#include <inttypes.h>
#include <util/delay.h>
#include "asuro.h"

int main(void)
{

  Init();
  
  uint16_t ergebnis;
  char buffer [20];
  ergebnis = 0;
 

  while (1)
  {     

     DDRC |= (1<<PC3);              // PC3 Ausgang
     PORTC |= (1<<PC3);             // PC3 High
     _delay_us(20);                 // warte 20 µSekunden
     PORTC &= ~(1<<PC3);           // PC3 Low
     DDRC &= ~(1<<PC3);            // PC3 Eingang
     while(!(PINC & (1<<PC3)));   // tue solange PC3 nicht 1 ist nichts
     TCNT0 = 0;                    // setze Timer0 auf 0
     TCCR0 = (1<<CS01);            // starte timer Prescaler 8
     while((PINC & (1<<PC3)));    // tue solange PC3 auf 1 ist nichts
     TCCR0 = (0<<CS01);           // Stoppe timer
     
     ergebnis = TCNT0;              //setze Timerergebnis in Variable ergebnis 
     
     SerPrint("\n\r Ergebnis: \n\r"); 
     itoa(ergebnis, buffer, 10); //übersetze (int)ergebnis in ASCII
     SerPrint(buffer);              //übertragung des Ergebnisses über RS232
     _delay_ms(500);            //warte 500ms
  }
}
Der Timer müsste nach meinem Verständnis von 0 bis 256 zählen wenn das echo signal startet und wenn das Echo signal aufhört gibt der Timer seinen Wert an die Variable 'ergebnis'. Allerdings weiß ich das der timer wenn er die 256 erreicht hat wieder von 0 beginnt. Das ist wahrscheinlich auch der Grund warum ich wirre Werte von 0 bis 256 im Hyperterminal erhalte. Denn das Echo Signal kann ja länger anhalten als ein ?Overflow? des Timers. Ich hoffe mir kann jemand erklären wie ich feststellen kann wie häufig ein Overflow statt gefunden hat.

P.s.: Ich habe schon die Suche benutzt und auch code gefunden, aber jeder dieser codes funktionierte mit dem Timer im normalen Modus.

Ich hoffe ich habe jetzt nicht zu viel schwachsinn geschrieben

MfG Maxtronik