Hey... ich habe ein MyAVR board und möchte die Werte vom Ultraschallsensor erstmal testweise abfragen.
Bin im Bereich microcontroller eher noch Blutiger Anfänger und versuch durch "Probieren" mir das
eine oder andere Beizubringen.

Dazu hab ich ein kurzes Programm aufgesetzt.
Leider hat sich irgendwo ein Fehler eingeschlichen und ich find den nicht.

Generell ist es so gedacht, das bei steigender Flanke vom Echo in einem Interrupt der Timer gestartet wird
und mir die Länge des Echos als Zeitwert ans Programm übergibt.

Könnt ihr bitte mal durchschauen, was ich da falsch hab.

Code:
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'Programmname:    Sensorabfrage.bas
'Letzte Änderung: 11.11.2012
'Funktion:        Abfrage des Ultraschallsensor hc-sr04
'Mikrocontroller: Mega8
'
'Input:           D2 - Echosignal
'
'Output:          C0 - Triggersignal
'
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------
'Den Atmega mit den passenden Daten füttern.
'-------------------------------------------------------------------------------
$regfile = "m8def.dat"                                      'eingesetzter Mikrocontroller
$crystal = 3686400                                          'eingestellte Taktfrequenz(externes Quarz)
$hwstack = 40                                               'Standardwert
$swstack = 32                                               'Standardwert
$framesize = 60                                             'Standardwert
'-------------------------------------------------------------------------------
'Ports/Pins konfigurieren.
'-------------------------------------------------------------------------------
Config Portc.0 = Output
Config Pind.2 = Input

'-------------------------------------------------------------------------------
'Timer/OCR/PWM usw. setzen
'-------------------------------------------------------------------------------
Config Timer0 = Timer , Prescale = 1024

Config Int1 = Rising
Enable Int1
Enable Interrupts
On Int1 Pulsbeginn

'-------------------------------------------------------------------------------
'Variablen
'-------------------------------------------------------------------------------
Dim Entfernungcm As Long
Dim Zeitecho As Byte

'-------------------------------------------------------------------------------
'Hauptprogramm
'-------------------------------------------------------------------------------

Do

   Timer0 = 0
   Portc.0 = 0
   Delay
   Portc.0 = 1
   Waitus 15
   Portc.0 = 0
   Print Zeitecho
   Waitms 150

Loop

End

Pulsbeginn:
  Timer0 = 0
  Start Timer0
  Do
  Waitms 1
  Loop Until Pind.2 = 0
  If Timer0 < 200 Then
  Zeitecho = Timer0
  Else
  Zeitecho = 0
  End If
  Stop Timer0

Return