Archiv verlassen und diese Seite im Standarddesign anzeigen : Geschwindigkeitsanzeige
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.
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...?
die abfrage
if portxy.0 = 0 then
bringt nix. pinstatus abfragen macht man mit
if pinxy.0 = 0 then
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.