Forum: Mikrocontroller und Digitale Elektronik ATTiny13 Programmieren


von Sebastian F. (Gast)


Lesenswert?

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:

von Hubert G. (hubertg)


Lesenswert?

Bin kein Assemblerspezialist, aber in C fragt man den Pin ab und nicht 
das Port.

von peter-neu-ulm (Gast)


Lesenswert?

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

von Natürlich (Gast)


Lesenswert?

Das ist ne seltsame Unart bei den AVRs. Bei den PICs gibts diesen Unsinn 
nicht.

von Sebastian F. (snake080)


Lesenswert?

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.

von Hallo (Gast)


Lesenswert?

Vielleicht sollte man die Eingänge entprellen, wenn Taster daran 
angschlossen sind. Was ich einfach mal vermute.

von Martin Meumann (Gast)


Lesenswert?

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?

von Sebastian F. (snake080)


Lesenswert?

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!

von Sebastian F. (snake080)


Lesenswert?

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
Noch kein Account? Hier anmelden.