Forum: Mikrocontroller und Digitale Elektronik Ampelschaltung funktioniert nicht,


von Tugrul Ö (Gast)


Lesenswert?

Guten Abend alle,

Ich hab mal dieses Programm auf mein Attiny 2313 drauf geladen.
Und 3 LED's an PB0, PB1 und PB2 dran gemacht.

Zuerst soll die Rote LED leuchten an PB0, 20 Sek lang,
dann soll sie ausgehen, die Orange soll leuchten 3 sek
dann soll die Orange ausgehen und die Grüne leuchten.

Aber irgendwie leuchtet nur die rote ^^.

Hier ist mal mein Code:
 $regfile = "2313def.dat"
 $crystal = 12000000
 Config Pinb.0 = Output
 Config Pinb.1 = Output
 Config Pinb.2 = Output

 Do
 Toggle Portb.0

 Wait 20
 Toggle Portb.0
 Toggle Portb.1

 Wait 3
 Toggle Portb.1
 Toggle Portb.2


 Loop

MfG,
Tugrul Ö.

von A.K. (Gast)


Lesenswert?

2313.dat => AT90S2313
ATtiny2313.DAT => ATTiny2313

von Tugrul Ö (Gast)


Lesenswert?

Hallo A.K,

Ich hab eben bei der gelben LED falsch gesteckt, jetzt leuchtet die Rote 
20 Sek und danach die Gelbe 3 Sek aber die Grüne nicht.

Und was du da geschrieben hast, versteh ich nicht so, ich bin neu in 
diesem Element und bitte bei Hilfen um vollständige Sätze (SPO = 
Subjekt, Prädikat und Objekt)

Danke

MfG,

Tugrul Ö.

von A.K. (Gast)


Lesenswert?

> $regfile = "2313def.dat"

Falsche Controller-Beschreibung ausgewählt. Ist zwar möglicherweise 
nicht die Ursache des Problems, aber trotzdem falsch.

Wäre noch nützlich zu wissen, wie die Hardware aussieht.

von Tugrul Ö (Gast)


Lesenswert?

Hi AK,

So sieht die Hardware aus:
http://www.electronic-idea.de/typo3/uploads/pics/avrispschaltung.jpg

Wenn ich
AT90S2313.dat oder AT90S2313def.dat oder so mache, sagt er
"Could not find" beim kompilieren.

MfG,
Tugrul Ö.

von A.K. (Gast)


Lesenswert?

Wenn dein Controller ATTiny2313 heisst, warum suchst du dann so 
hartnäckig nach einer Beschreibung von einem anderen Controller, dem 
AT90s2313? Wie ich schon andeutete, heisst das korrekte File 
ATtiny2313.DAT.

von A.K. (Gast)


Lesenswert?

Der Testplatine fehlt der übliche 100nF Kondensator zwischen VCC und 
GND. Ohne denn kann alles mögliche passieren.

von Tugrul Ö (Gast)


Lesenswert?

Hallo,

Danke für eure Antworten. Ja das mit dem 100nF hab ich übersehen, auf 
meiner anderen Platine (IgorPlug-USB) hab ich einen drauf. Ich werde 
morgen einen mal dazu packen.

MfG,

Tugrul Ö.

von Tugrul Ö (Gast)


Lesenswert?

Hallo,

Ich hab diesen Code ausprobiert, aber es geht nicht ! Also die dritte 
LED geht nicht an. Der Port ist net beschädigt oder so...hab ich 
getestet.


 $regfile = "ATtiny2313.DAT"
 $crystal = 12000000
 Config Pinb.0 = Output
 Config Pinb.1 = Output
 Config Pinb.2 = Output

 Do
 Toggle Portb.0

 Wait 20
 Toggle Portb.0
 Toggle Portb.1
 Toggle Portb.2

 Wait 3
 Toggle Portb.1
 Toggle Portb.2

 Wait 10

 Loop

Hab echt keine Ahnung.

von Rahul, der Trollige (Gast)


Lesenswert?

>Hab echt keine Ahnung.

Schalte doch einfach mal alle an.
Wenn dann auch alle leuchten, weisst du, dass die Hardware in Ordnung 
ist.
Und dann solltest du die LEDs lieber einschaltet statt umschalten 
(togglen).

von Karl H. (kbuchegg)


Lesenswert?

> Der Port ist net beschädigt oder so...hab ich
> getestet.

Wie hast du das getestet?


von Tugrul Ö (Gast)


Lesenswert?

Hallo,

Ich hab den PB2 getestet in dem ich da mal ne LED ran gemacht und sie 
leuchtet. Ich glaube aber das ich das Problemkind schon gefunden habe, 
es liegt an einem Kabel.

Nochmal zu deinem "einschalten und umschalten"

Der Befehl toggle ist ja umschalten.

Kann ich mit diesem Befehl die Ports ein-und auschalten ?

Config Portc.0 = Output
Portc.0 = 1
Portc.0 = 0

Danke

von Marko (Gast)


Lesenswert?

ziemlich krude Sache mit dem Toggeln ... es wird einfach immer der
Zustand gewechselt, 1 -> 0 und 0 -> 1 mit set und reset oder
1 und 0 sind die sachen oft übersichtlicher, von wegen was wann wo
ein und ausgeschaltet wird.

von Rahul, der Trollige (Gast)


Lesenswert?

>Kann ich mit diesem Befehl die Ports ein-und auschalten ?

Solche Fragen beantwortet in der Regel das Handbuch / die 
Referenzübersicht zur Programmiersprache...

[mal wieder OffTopic]
Wieso verfallen eigentlich so ziemlich alle BASCOM-"Programmierer" immer 
diesem Wahn, sich hier im Forum diese Sprache beibringen lassen zu 
müssen?

[/mal wieder OffTopic]

von Eisingstone (Gast)


Lesenswert?

@Tugrul

versuch es mal mit diesem Code, bei mir funzt es zumindest so.

$regfile = "attiny2313.dat"
$crystal = 1000000

Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output

Do
Toggle Portb.0

Wait 20
Toggle Portb.0
Toggle Portb.1

Wait 3
Toggle Portb.1
Toggle Portb.2

Wait 10
Loop

von Stefan E. (eisingstone)


Lesenswert?

Hab den Code noch etwas umgeschrieben:

$regfile = "attiny2313.dat"
'Definition des MC
$crystal = 1000000
'Quarz einstellen, Sekunden im Programm Ablauf sind nicht wirklich 
Sekunden sondern etwas weniger, also nicht wundern!!

Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
'die Ports werden auf Ausgang gesetzt

Do
Portb.0 = 1      'grün wird geschaltet

Wait 10          'warte 10 Sekunden

Portb.0 = 0      'grün wird ausgeschaltet
Portb.1 = 1      'gelb wird eingeschaltet

Wait 5           'warte 5 Sekunden

Portb.1 = 0      'gelb wird ausgeschaltet
Portb.2 = 1      'rot wird eingeschaltet

Wait 5           'warte 5 Sekunden

Portb.1 = 1      'gelb wird eingeschaltet
Portb.2 = 1      'rot wird eingeschaltet

Wait 5           'warte 5 Sekunden

Portb.0 = 1      'grün wird eingeschaltet
Portb.1 = 0      'gelb wir ausgeschaltet
Portb.2 = 0      'rot wird ausgeschaltet

Loop             'von vorne beginnen


Man kann das bestimmt auch kürzer machen, aber dazu habe ich jetzt im 
Moment keine Lust mehr. Hauptsache es funktioniert.

Gruß
Stefan

von Tugrul Ö. (Gast)


Lesenswert?

Danke für eure Antworten, aber muss ich die Quarz Variable nicht auf
12000000 setzen, wenn ich einen 12 MHZ Quarz benutze ?

Oder ist das egal... ?

MfG,

Tugrul Ö.

von Stefan E. (eisingstone)


Lesenswert?

Also wenn Du einen externen Quarz nutzt der 12 MHz hat dann schon, Du 
kannst aber auch den internen Quarz, ich glaube bis 4 MHz, nutzen. Ist 
Deine entscheidung wie Du es machen willst.

Gruß
Stefan

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.