Tachchen!!!
ich mühe mich schon eine ganze weile mit diesen 2. themen ab. das LCD
funktioniert, die tastenabfrage per lcd leider nicht.
fang ich mal mit dem ddram vom lcd an.
ich habe ein 8x2 display, demnach liegt die adresse für die 2. zeile bei
0x40. schreibe ich diese zahl als befehl ins lcd, im anschluss ein paar
buchstaben; passiert rein gar nix.
passe ich den string aber an, also mache alles bis zur 62. stelle voll
mit leerzeichen (o.ä.), und gebe danach meinen weiteren text ein,
funktioniert alles einwandfrei. was mache ich falsch?
dann zur tastenabfrage.
habe 5 tasten an den adc1 angeschlossen und nun einen relativ
komplizierten code geschrieben ( blicke selbst manchmal nichtmehr durch,
vor sovielen vergleichen :)), der auch soweit funktioniert hat ( ist
halt immer 2-6 stellen gesprungen) bis auf diese flankenerkennung. da
man beim adc leider keine bits hat, sondern ständig ein byte vergleichen
muss, ist das alles eher schlecht als recht. hat jemand ne idee, wie ich
diese flankenerkennung funktionierend ausführen kann? meine idee war
einfach, zu warten, bis der adc wert wieder (annähernd) 0 erreicht, das
scheint aber irgendwie nicht zu funktionieren :(.
hier nich der code für die tastenerkennung:
1
LCDmenu:
2
3
lcdsteu:
4
ldi r19, 4 ;3 mal aufs ergebnis testen
5
clr r16
6
out ddrc, r16
7
out portc, r16
8
out pinc, r16
9
;LCD konfig
10
adc1start:
11
ldi r16, 0b01100001
12
out ADMUX, r16
13
ldi r16, 0b11000011
14
out ADCSR, r16
15
adcfertig: ;warte bis adc eine zahl in reg schreibt
16
sbic ADCSR, 6
17
rjmp adcfertig
18
in r17, ADCL
19
in r18, ADCH
20
;wenn kein taster gedrückt (r<10), dannn ADC nochmal starten
21
cpi r18, 10
22
brlo lcdsteu
23
;schleife, erstes mal in reg kopieren
24
cpi r19, 4
25
brne weiter ;nur das erste mal das register kopieren
26
mov r20, r18 ;r20 = vergleichsregister, darf nicht geändert werden
27
weiter:
28
;hier dann 4 mal vergleichen, und überprüfen ob wert annähernd gleich
29
dec r19 ;zweite wandlung werden ergebnisse geprüft, ob annähernd gleich
Atmega 8, lcd unbekannt. weiß nur das es ein 8x2 ist mit diesem hd44....
IC oder vergleichbarem. ( initialisiere ich es als 16x1 speilt es
verrückt, alle balken schwarz. desweiteren würde es auch keinen sinn
ergeben zu
"passe ich den string aber an, also mache alles bis zur 62. (hex 40)
stelle voll mit leerzeichen (o.ä.), und gebe danach meinen weiteren text
ein, funktioniert alles einwandfrei.
"
)
gibts lcd´s, bei denen man den ddram nicht festlegen kann? das macht für
mich wiederum keinen logischen sinn. ist der aufruf evtl falsch? lade ja
nur das 0b1xxxxxxx in das r17 und rufe dann die routine zum befehl
senden auf. ( alle anderen befehle funktionieren; cursor shift, clear
display usw. )
vielleicht hat noch jemand eine idee.
so, ich hab nun mal den kondensator auf 1n verringert, nun springt das
ding wild hin un her. ist aber schon besser geworden. ich glaube, ich
schließ die scheiß taster einfach an einen port an, das geht mir langsam
auf die nerven :)