PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit SRF04 und 90S2313



Jack Ruben
26.09.2005, 18:10
Hallo
Ich habe eine problem mit einenSRF04 und einen 90S2313.
Denn nächste code habe ich gesammelt und sol eine L293d steuern.

Hoffe ihr könnt mir helfen.

M.f.g.
Jack

pebisoft
26.09.2005, 19:35
habe in fastavr-basic eine einfache routine ohne timer und ohne pulse für den srf04 zum testen geschrieben, ich wollte einmal nach dem datenblatt gehen mit den zeiten und es geht, jetzt weiss ich auch wie ein sfr04 funktioniert.
geht bis auf 3mm genau. musst diese in einer sub packen und am anfang interrupt disable und am ende wieder interrupt enable.

$Device= m16
$Stack = 32
$Clock = 8
$Baud = 19200
$Source= On

Dim entfernung As Integer

DDRD.7=0 ' eingang
DDRD.6=1 ' ausgang

Enable Interrupts

Do

PORTD.6=1
WaitUs 2
PORTD.6=0
WaitUs 38
entfernung=0
While PIND.7=1
Incr entfernung
Wend
Print entfernung
WaitMs 150

Loop


oder von bascom :


$regfile = "m16def.dat"
$crystal = 8000000
$baud = 19200

Declare Function Ultrasonic_re() As Integer
Declare Sub Initialize_ultrasonic_re

Dim Ultra_daten_re As Integer

Enable Interrupts

Call Initialize_ultrasonic_re

Do

Ultra_daten_re = Ultrasonic_re()

Print Ultra_daten_re
Waitms 100

Loop

Sub Initialize_ultrasonic_re
Config Pind.6 = Output
Config Pind.7 = Input
End Sub

Function Ultrasonic_re() As Integer
Portd.6 = 0
Pulseout Portd , 6 , 10
Pulsein Ultrasonic_re , Pind , 7 , 1
End Function




noch mal eine in fastavr-basic , wurde 1 zu 1 von winavr-c umgesetzt mit timer1 und TCCR1B :


$Clock = 8
$Baud = 19200
$Timer1 = Timer,Prescale=1
$Source= On

Dim entfernung As Word
Dim starttimer1 As Byte

Const Prescale_1 = 9

DDRD.7=0 ' eingang
DDRD.6=1 ' ausgang

Enable Interrupts

StartTimer1=Prescale_1

Do

PORTD.6=1
WaitUs 2
PORTD.6=0
WaitUs 24
Timer1=0
TCCR1B=StartTimer1
While PIND.7=1
Wend
entfernung=Timer1
Print entfernung
WaitMs 150

Loop

mfg pebisoft