Atemga16 Bascom Shiftin Problem PINA.0

Gast #2316005
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?
Gast #2316180
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.
#2317541
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
Gast #2317652
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.
#2319064
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren