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?
Tach karsten, was heißt "geht nicht"? Poste erstmal den code und dann sehen wir mal weiter. Thor
"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.
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
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 :(
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
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 :(
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.