www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ampelschaltung funktioniert nicht,


Autor: Tugrul Ö (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 Ö.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
2313.dat => AT90S2313
ATtiny2313.DAT => ATTiny2313

Autor: Tugrul Ö (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 Ö.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tugrul Ö (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi AK,

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

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

MfG,
Tugrul Ö.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A.K. (Gast)
Datum:

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

Autor: Tugrul Ö (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 Ö.

Autor: Tugrul Ö (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Der Port ist net beschädigt oder so...hab ich
> getestet.

Wie hast du das getestet?


Autor: Tugrul Ö (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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]

Autor: Eisingstone (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan Eising (eisingstone)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tugrul Ö. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 Ö.

Autor: Stefan Eising (eisingstone)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.