Forum: Mikrocontroller und Digitale Elektronik Atemga16 Bascom Shiftin Problem PINA.0


von karsten (Gast)


Lesenswert?

Hallo,

ich habe ein Problem. und zwar.

ich habe insgesammt 6 PINs am Atmega16 die ich mittels Shiftin abfrage.
an PortC habe ich keine Probleme.
PortC. 0,2,4,6

wenn ich jetzt aber PortA.0 & 2 Abfrage geht PortA.0 "anscheinend" 
nicht.
"anscheinend" weil ich PortA.2 zuvor abfrage auf Signale um 
festzustellen ob was angeschlossen ist.

ich habe auch schon einen anderen µC versucht.

weiß einer rat bzw. hat einer eine idee?

von Alex S. (thor368)


Lesenswert?

Tach karsten,

was heißt "geht nicht"? Poste erstmal den code und dann sehen wir mal 
weiter.

Thor

von karsten (Gast)


Lesenswert?

"geht nicht" soll heißen das die am PIN ankommenden daten immer gleich 
sind.
signale kommen aber am Pin an und ändern sich auch
1
$regfile = "m16def.dat"                                     'definieren des verwendeten Chips
2
3
$crystal = 16000000
4
5
$hwstack = 32
6
$swstack = 40
7
$framesize = 40
8
9
Config Watchdog = 1024                                      'Watchdog Wert ca. 1sec
10
11
Ddra = &B00001010
12
Porta = &B00000000
13
14
Ddrc = &B10101010
15
Portc = &B00000000
16
17
Ddrd = &B00000000
18
Portd = &B00000000
19
20
'########### Variablen #########################################################
21
Dim L As Long
22
23
24
'########### L C D #############################################################
25
26
27
Dim ___lcdno As Byte
28
29
Config Lcd = 40 * 2
30
31
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , E2 = Portb.3 , Rs = Portb.0
32
33
___lcdno = 0
34
Initlcd
35
Cls
36
Cursor Off
37
38
___lcdno = 1
39
Initlcd
40
Cls
41
Cursor Off
42
43
44
'##### S T A R T B E D I N G U G E N ###########################################
45
Porta.1 = 0
46
Porta.3 = 0
47
'Portc.1 = 0
48
'Portc.3 = 0
49
50
51
'##### M A I N L O O P #########################################################
52
Main:                                                       'Hauptprogramm
53
54
Do
55
56
57
   Start Watchdog
58
   L = 0
59
   Shiftin Pina.0 , Pina.2 , L , 7 , 24
60
   Reset Watchdog
61
62
   ___lcdno = 0
63
   Locate 2 , 1
64
   Lcd Str(l)
65
   Waitms 10
66
67
'   Start Watchdog
68
'   L = 0
69
'   Shiftin Pinc.0 , Pinc.2 , L , 7 , 24
70
'   Reset Watchdog
71
72
'   ___lcdno = 0
73
'   Locate 1 , 1
74
'   Lcd Str(l)
75
'   Waitms 10
76
77
Loop

Ich habe nur eine hardware bis jetzt. deshalb klammer ich aus und steck 
diese um. am PortC funktioniert alles. nur an PortA nicht.

von Alex S. (thor368)


Lesenswert?

Die DDRs sind gesetzt? Damit sind die portbits Ausgänge. Du kannst sie 
natürlich noch lesen aber was dabei rum kommt ist meist das was du ins 
Port geschrieben hast.

Thor

von karsten s. (kask)


Lesenswert?

ja klar sind die DDRs gesetzt. und richtig auch noch ;)
sonst würde es an Port C ja nicht gehen.

wie gesagt am Port C geht alles. nur an PortA nicht. An die Anderen 
Ports kann ich layout massig nicht mehr ran :(

von Alex S. (thor368)


Lesenswert?

Grmpf, nein sie sind nicht gesetzt. Ich bin in der Zeile verrutscht. 
Sorry.

Was ich mir noch vorstellen könnte: Du importierst doch da eine LCD 
library. Die sind sehr speicherintensiv. Insbesondere im stack. Versuch 
mal den stack drastisch zu vergrößern. 128byte minimum. Vielleicht hast 
du ja einen Stapelüberlauf.

Thor

von karsten s. (kask)


Lesenswert?

funktioniert immer noch nicht.
ich habe absolut keinen plan woran es scheitert.
die signale kommen definitiv an den pins an. sind auch soweit recht 
sauber.
der wert ist immer der selbe der angezeigt wird. aber was rein geht ist 
unterschiedlich :(

von MWS (Gast)


Lesenswert?

Der erzeugte Maschinencode ist in Ordnung und entspricht wenn auf PortC 
konfiguriert exakt dem Code für PortA, mit Ausnahme der Registeradressen 
natürlich.

Wenn die Bascom-Version alt ist, dann auf die neueste Version updaten, 
ansonsten nach einem Hardwareproblem schauen, z.B. AVCC nicht 
angeschlossen oder 2tes GND vergessen.

karsten schrieb:
> weil ich PortA.2 zuvor abfrage auf Signale um
> festzustellen ob was angeschlossen ist.

Davon ist im Code nichts zu sehen. Auch hat in solchem Testcode ein WD 
nichts zu suchen, also wirf den raus.

von karsten s. (kask)


Lesenswert?

was ist WD?

zweite GND und AVCC ist angeschlossen.

Aber das Problem hat sich geklärt. Auch wenn nicht Aufgeklärt.

Habe den Hardwareteil neu aufgebaut und nun geht es an PortA4-7. keine 
Ahnung wieso das nicht ging bzw. geht.

ich denke eventuell EMV.

danke für die Mühen.
gruß karsten

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.