PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Geschwindigkeitsanzeige



Gillich
16.09.2008, 11:22
Hallo,

ich bastel jetzt schon fast 2 monate an einem projekt, worum es dabei geht die geschwindigkeit eines fahrzeuges zu erfassen und anzuzeigen, sowie über eine fernbedienung signale ins fahrzeug zu übertragen die, dem fahrer befehle geben soll.

ich arbeite mit einem ATMEGA128, als anzeige habe ich ein Glcd mit sed-controller (ks0108b), als drehzahlsensor einen reedkontaktschalter und ein funkmodul für die fernbedienung.

...also mein problem besteht nun darin, das mein glcd nur pixelmüll anzeigt (habs schon mit pull ups versucht, JTAG ist auch aus)
...und mein hauptsächliches prob ist, das mein funkmodul 8 kanäle hat, die masse geschaltet sind und ich möchte das wenn einer von acht low ist
einen anderen pin auf high schalten...bloß leider klappt es nicht ](*,)

das wär ebend mein ansatz:

.....
config Portb = output
config portf = output

set portb
set portf

if portb.0 = 0 then portf.0 = 1
.....


vlt habt ihr noch n paar ideen

sry wenn vlt n falsches unterforum ist

pyr0skull
16.09.2008, 12:06
Also irgendwie fehlt da der Code.. Aus dem kleinen Schnippsel kann man leider nicht wirklich was rauslesen.

Gillich
16.09.2008, 12:33
sooo :-& hir ist das übel was mir schlaflose nächte bereitet....



$lib "glcdks108.lib "

$crystal = 16000000
$regfile = "m128def.dat"
$hwstack = 40
$swstack = 40
$framesize = 40


'LCD pin

' 1 Vss GND
'2 Vdd +5V
'3 V0 poti
'4 D/I Cd
'5 R/W Rd
'6 E enable
'7-14 DB Porta
'15 Cs1 Ce1
'16 Cs2 Ce2
'17 RESET reset
'18 Vee poti
'19 A 7,2V
'20 K Gnd

Config Portc = Output


Config Porta = Output


Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portc , Ce = 2 , Ce2 = 5 , Cd = 1 , Rd = 0 , Reset = 4 , Enable = 3

Wait 1


Locate 16 , 1 : Lcd "Geschwindikeitsanzeige"

Cls



'--------------------------------------------------------------------------

'**********************
'
'FUNKMODUL KOMMUNKATION
'
'**********************

config Portb = output 'verbunden mit den eingängen des funkmoduls
config portf = output 'verbunden mit LEDs die ein signal geben

set portb
set portf

if portb.0 = 0 then portf.0 = 1

if portb.1 = 0 then portf.1 = 1

if portb.2 = 0 then portf.2 = 1


'--------------------------------------------------------------------------

'*********************************
'
'GESCHWINDIGKEITSMESSUNG & AUSGABE
'
'*********************************

Set Pind.6 'Pullup aktiv

Config Pind.6 = Input 'Konfiguration des Timer/Counter und Signalinput für Geschwindigkeitsanzeige
Config Int0 = Falling
Config Timer1 = Timer , Prescale = 1024


Const Timervorgabe = 3036 ' festgelegte Konstanten
Const Schraubenprowelle = 6 '
Const Reifenumfangincm = 127 '


Dim Reifenumfanginkm As Long 'Dimensionierung der Bytes zur Berechnung der Geschwindigkeit
Dim Zaehlerirq0 As Long '
Dim Impulseprosekunde As Long '
Dim Impulseprostunde As Long '
Dim Umdrehungenprostunde As Integer '
Dim Kilometerprostunde As Integer '



Zaehlerirq0 = 0 'Prozedur Timer
On Int0 Irq0
Enable Int0

On Timer1 Timer_irq
Enable Timer1

Enable Interrupts


Do

Cls
'Das Programm brechnet die Geschwindikeit und zeigt sie auf dem LCD an
Print
Reifenumfanginkm = Reifenumfangincm / 100000
Impulseprostunde = Impulseprosekunde * 3600
Umdrehungenprostunde = Impulseprostunde / Schraubenprowelle
Kilometerprostunde = Umdrehungenprostunde * Reifenumfanginkm
locate 2 , 2 : Lcd Kilometerprostunde
Locate 3 , 3 : Lcd "Km/h"

Waitms 30

Loop

End


Irq0:
Incr Zaehlerirq0
Return


Timer_irq:
Timer1 = Timervorgabe
Impulseprosekunde = Zaehlerirq0
Zaehlerirq0 = 0
Return


'---------------------------------------------------------------------------

'****************************
'
'ZUFALLSGENERATOR
'
'****************************

'die drei ausgänge sollen alternativ auch über einen zufallsgenerator aktiviert werden

Dim A As Byte
Dim Count As Byte
Dim Lotto As Byte



Do

Cls

Print A
Incr A

Count = Rnd(12)
Lotto = Count + 2
Print Count




Waitms 30

Loop Until A = 40

End

Sauerbruch
17.09.2008, 01:06
Wenn Du den kompletten PortB auf 1 setzt - wieso fragst Du ihn dann mit If-Then ab? Soweit ich den Code überblicke, wird dort auch nirgendwo anders PortB verändert...



set portb
set portf

if portb.0 = 0 then portf.0 = 1
if portb.1 = 0 then portf.1 = 1
if portb.2 = 0 then portf.2 = 1

Und ich könnte mir vorstellen, dass Bascom meckert, wenn If-then ohne "End if" oder "Else" geschrieben wird...



Set Pind.6 'Pullup aktiv


Außerdem muss der PullUp-Widerstand mit Set Portd.6 aktiviert werden!

Und hat der Zufallszahlengenerator eine weiterreichende Bedeutung für das Programm?

Vielleicht kannst Du das Projekt ja nochmal etwas präziser schildern...?

Vitis
17.09.2008, 03:02
die abfrage

if portxy.0 = 0 then

bringt nix. pinstatus abfragen macht man mit

if pinxy.0 = 0 then