Forum: Mikrocontroller und Digitale Elektronik ATtiny13 BASCOM programm geht nicht


von Jay G. (jaydragon)


Lesenswert?

ich habe volgendes programm geschrieben und es geht nicht was mache ich 
falsch?
1
$regfile = "attiny13.dat"
2
$crystal = 1000000
3
4
Config Portb.1 = Output
5
Config Portb.2 = Output
6
Config Portb.3 = Input
7
Config Portb.4 = Input
8
9
Portb.1 = 0
10
Portb.2 = 1
11
12
13
Do
14
15
If Portb.3 = 1 Then Portb.1 = 1
16
17
If Portb.4 = 1 Then Portb.2 = 1
18
19
Waitms 1
20
21
Loop
22
23
End

Fehlerbeschreibung: Wenn ich ein von den beiden Input Pins gegen masse 
lege will der Output nicht auf High gehen.

MfG
Jay

von yalu (Gast)


Lesenswert?

> Wenn ich ein von den beiden Input Pins gegen masse lege will der
> Output nicht auf High gehen.

> If Portb.3 = 1 Then Portb.1 = 1

Hab keine Ahnung von Bascom. Aber muss nicht der Eingang auf High
gelegt werden, damit sich am Ausgang etwas ändert?

von Hannes L. (hannes)


Lesenswert?

Schau nur nicht ins Datenblatt des Tiny13! Denn ein Blick ins Datenblatt 
des Controllers könnte Dir Verraten, dass Eingänge nicht PORT, sondern 
PIN heißen. Ich vermute mal, dass BASCOM diese Bezeichnungen auch 
verwendet. Du könntest auch feststellen, dass der Tiny13 nicht mit 1MHz 
rennt, sondern mit 1,2MHz.

Also, bitte auf keinen Fall ins Datenblatt schaun, das ist nur was für 
dumme ASM-Programmierer...

...

von Paul Baumann (Gast)


Angehängte Dateien:

Lesenswert?

Nimm diesen, den ich angefügt habe.

MfG Paul

von Paul Baumann (Gast)


Lesenswert?

P.S.
Guck mal in der Bascom-Hilfe nach "Config Port". Da steht es auch drin, 
was Hannes sagte. Ich habe es bei Dir nicht geändert, da ich nicht weiß, 
was Du damit noch machen willst.

Paul

von Stefan B. (stefan) Benutzerseite


Lesenswert?

> Config Portb.3 = Input
http://www.roboternetz.de/wissen/index.php/Bascom#I.2FO-Port_als_Eingang

Config Pinb.3 = Input
Config Pinb.4 = Input

> Wenn ich ein von den beiden Input Pins gegen masse...

Wieso sollte der Eingangspin auf HIGH (1) gehen, wenn du ihn auf Masse 
legst? Masse ist LOW, 0 , Nada. Wenn du durch Verbindung mit Masse 
schalten willst, arbeitest du im Active Low Betrieb 
(http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Tasten_und_Schalter)

Die Hardware müsste fürs Schalten gegen Masse eher so aussehen: (2. Bild 
bei http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen 
eventuell mit einer Besonderheit bei R2!!!) und die Stelle im 
Programmcode so:

If Pinb.3 = 0 Then Portb.1 = 1

Und du musst dann eventuell (deinen Hardwareaufbau hast du ja nicht 
beschrieben/Schaltplan fehlt) was mit den Internen Pullup Widerständen 
an beiden Pins einstellen damit bei fehlender Masse eine 1 anliegt.

Hier die Besonderheit bei R2 im Link oben: den Zweig mit R2 und Vcc hast 
du durch das Zuschalten des internen Pullups "in den µC" verlegt.

Portb.3 = 1
Portb.4 = 1

> Loop

In deiner Schleife stellen sich Portb.1 und Portb.2 nie mehr auf 0 
zurück. Einmal Programm ausprobiert, bleiben die Portpins auf 1.

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.