Hallo, ich beschäftige mich seit ein paar Tagen damit einen ATtiny13 zu programmieren. Mal abgesehen von ein paar Anfängerfehlern (Reset als Ein-/Ausgang & Fusebitspielereien), die ich jetzt lasse, habe ich ein Problem: Ich habe ein simples Programm, welches nicht läuft und weiss nicht, warum. Ich benutze den Programmieradapter von lancos & PonyProg. Das Programm soll -erstmal- einfach nur 2 LED's über Taster Ein-/Ausschalten. Ich hoffe mir kann jemand helfen. Programm: .INCLUDE "C:\AVR\Test\tn13def.inc" ; ;Initialisierung; ; cbi DDRB,0 cbi DDRB,1 ;Port 0+1 Eingänge sbi DDRB,3 sbi DDRB,4 ;Port 3+4 Ausgänge sbi PORTB,0 sbi PORTB,1 ;Pull-ups eingeschaltet ; main: sbic PORTB,0 cbi PORTB,3 sbic PORTB,1 cbi PORTB,4 sbis PORTB,0 sbi PORTB,3 sbis PORTB,1 sbi PORTB,4 rjmp main end:
Bin kein Assemblerspezialist, aber in C fragt man den Pin ab und nicht das Port.
sbic portb fragt nur den Zustand des port-FF's ab, aber nicht den Zustand des port-Pins. Der Pin kann extern auf 1 oder 0 geschaltet werden, der Befehl sbic portb,x erkennt das nicht. Es muss der Zustand des Pins abgefragt werden, das geschieht z.B durch sbic pinb,x
Danke schon einmal für die antworten! Das lustige ist, dass es im Simulator funktioniert?! Ich hatte irgendwo im Datenblatt gelesen, dass wenn man die Port-Pins abfragt, der Status grundsätzlich gewechselt wird. Irgendsowas hatte ich schon mal gesehen, wo ich damit rumprobiert hatte, darum habe ich das gelassen... ich werde mich nochmal daransetzen.
Vielleicht sollte man die Eingänge entprellen, wenn Taster daran angschlossen sind. Was ich einfach mal vermute.
Dien Programm kan nicht funktioniern da das portb register überhaubtnichts hinter dem sdic zu tun hat . Pass mal auf gets richtig
1 | .INCLUDE "C:\AVR\Test\tn13def.inc" |
2 | ; |
3 | ;Initialisierung; |
4 | ; |
5 | sbi DDRB,3 |
6 | sbi DDRB,4 ;Port 3+4 Ausgänge |
7 | sbi PORTB,0 |
8 | sbi PORTB,1 ;Pull-ups eingeschaltet |
9 | ; |
10 | main: |
11 | sbic PINB,0 |
12 | cbi PORTB,3 |
13 | sbic PINB,1 |
14 | cbi PORTB,4 |
15 | sbis PINB,0 |
16 | sbi PORTB,3 |
17 | sbis PINB,1 |
18 | sbi PORTB,4 |
19 | rjmp main |
20 | end: |
So das müste jetzt gehen. sag mal nach welchen Vorlagen Hast du dich eigentlich gerichtet?
Hallo schrieb: > Vielleicht sollte man die Eingänge entprellen, wenn Taster daran > angschlossen sind. Was ich einfach mal vermute. Die Eingänge brauche ich nicht entprellen, da ich mir ein Testlayout geätzt habe. Die werden mit Jumpern gesetzt :) Ich hatte vorhin leider nicht genug Zeit das mit den PIN-Abfragen zu testen. Das umgeschriebene probiere ich morgen bei der Arbeit mal aus (da habe ich leider meinen Adapter liegen lassen). Wenn ich das richtig verstehe brauche ich die Eingänge gar nicht definieren und sie sind Standartmäßig 0? Wäre logisch, da ich das Register ja quasi nicht beschrieben habe... Die Pfadangabe hatte ich noch drin, weil ich versuchen wollte, ob Ponyprog evtl. die Datei nicht findet... Und was ich immer noch nicht verstehe: Warum funktioniert alles im Simulator so schön? Danke an alle, die mich unterstützen!
Vielen Dank an Martin. Das Programm funktioniert so. Das Problem ist nur: Im Simulator vom AVR-Studio funktioniert es nicht!? Da werden keine Bits im PIN-Register angezeigt... Und warum funktioniert das, was im Simulator funktioniert, nicht in der richtigen Schaltung?
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.