Hallo allseits,
ich habe vorher nur PC-Programme in verschiedenen Basic-Varianten und
Webdesignsprachen geschrieben, dies ist mein erstes Projekt mit dem
Mikrocontroller. Ich möchte die restlichen Kanäle einer Fernsteuerung
mit dem Atmega 8 auslesen und dadurch die Lichter eines Modell-Lkws
steuern.
Das Prinzip habe ich auch schon verstanden und habe daraus folgenden
Code fabriziert:
1 | 'Definition für Mega 8
|
2 | $regfile "m8def.dat"
|
3 |
|
4 | 'Angabe der Taktfrequenz (8Mhz)
|
5 | $crystal = 8000000
|
6 |
|
7 | '======================================================
|
8 | 'Konfigurationen
|
9 | '======================================================
|
10 |
|
11 | 'Konfiguration der I/O-Ports´s
|
12 | Config Portc = Output
|
13 | Config Portb = Input
|
14 |
|
15 | '======================================================
|
16 | 'Deklarationen
|
17 | '======================================================
|
18 |
|
19 | Dim Rc_value As Integer
|
20 | Dim 1timer As Integer
|
21 |
|
22 | '======================================================
|
23 | 'Initialisierungen
|
24 | '======================================================
|
25 |
|
26 | 'Ports initialisieren
|
27 | Portc = &B11111111
|
28 |
|
29 | '======================================================
|
30 | 'Hauptprogramm-Schleife
|
31 | '======================================================
|
32 |
|
33 | Do
|
34 |
|
35 | If Portb.0 = 1 Then
|
36 | 1timer = 1timer + 1
|
37 | End If
|
38 |
|
39 | If Portb.0 = 0 Then
|
40 | Rc_value = 1timer
|
41 | 1timer = 0
|
42 | End If
|
43 |
|
44 | If Rc_value > 32767 Then
|
45 | Portc.5 = 1
|
46 | Else
|
47 | Portc.5 = 0
|
48 | End If
|
49 |
|
50 | Loop
|
51 |
|
52 | End
|
53 | Return
|
Fragt bitte nicht, wieso ich den Timer nachgebaut habe, ich habe
ursprünglich den Systemeigenen verwendet, doch beim Durchprobieren bin
ich bei dieser Variante gelandet.
Ich habe den Grenzwert für Rc_value in vielen Versuchen herausgefunden,
doch mein Problem ist, dass dieser Wert sowohl bei minimaler als auch
bei maximaler Knüppelstellung PORTC.5 einschaltet, bei einem um 1
höheren Rc_value geht bei keiner Knüppelstellung mehr der Port an.
Meines Wissens hat ein Servosignal in den zwei Endstellungen einen
Unterschied von ~1 Mhz, deswegen kann die Veränderung des Rc_value um 1
eigentlich nicht das ganze Knüppelspektrum abdecken.
Könnt ihr mir vielleicht sagen, ob ich einen generellen Fehler gemacht
habe, oder wodurch ich mein Problem lösen kann?
Vielen Dank im Vorraus,
nub