ATtiny13 BASCOM programm geht nicht

Gast #669558
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
Gast
> 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?
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...

...
Gast
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
Persönliche Seite
> 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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.