Forum: Mikrocontroller und Digitale Elektronik Erste geh versuche in Bascom


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von maxe (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich hab mein erstes Programm in Bascom geschrieben.
http://pastebin.com/f421ea991
Und wollte mal fragen ob das so funktioniert wie ich mir das gemacht 
habe.
Das Programm sollte eine Rotlichtlampe mit einem Triac nach temperatur 
dimmen.

Grüße maxe

von Sven P. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich kenn mich mit dem Bascom-Zeugs nicht aus, aber: 'Wait' im Interrupt 
ist meistens immer falsch.

von maxe (Gast)


Bewertung
0 lesenswert
nicht lesenswert
der Interrupt wird im 0 durchgang ausgelöst und dann soll er warten und 
dann den triac zünden abhängig von der Temperatur.

von Mike (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Komm zu uns " da werden sie geholfen"
http://bascom-forum.de/

von Göck (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das sieht doch aber an sich ganz gut aus. Das mit dem Interrupt und Wait 
stimmt schon, ist aber in diesem Programm - denke ich - nicht weiter 
kritisch.

Grüße

von maxe (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Was ich noch fragen wollte, reichen 100 us für einen Optokoppler den 
triac zu zünden?

von Gast (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Du kannst in Bascom bei Waitus keine Variable angeben, sondern nur feste 
Werte (kann auch eine vorher vereinbarte Konstante sein).

Gruß

Rolf

von maxe (Gast)


Bewertung
0 lesenswert
nicht lesenswert
ok wie kann ich das dann lösen?

von MWS (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Einfache Lösung:

Aus Schleifen selbst 'ne Verzögerung bauen, bei 2MHz schafft der Tiny 2 
Takte/µS, ein Maschinenbefehl braucht 1,2 oder 3 Takte, eine for/next 
dann xxx Takte. Im Simulator 2 Breakpoints setzen und aus der Differenz 
der Prozessortakte (wird im Sim. unten mit "Cycles" angezeigt) die 
tatsächliche Verzögerung errechnen. Tuning der Verz. geht z.B. mit 
Einfügen von:

$asm
NOP
NOP
...
$end asm

1 NOP verbraucht einen Prozessortakt

Wird aus dieser selbstgestrickten Verzögerung eine Subroutine gemacht, 
so kann sich je nach Aufrufart eine zusätzliche Verzögerung ergeben, 
wenn Register gesichert werden.

Fortgeschrittene Lösung:

Timer/Counter verwenden, Start auf Int0 synchronisieren, 
Verzögerungswerte in's Compare-Register. Evtl. könnte eine der PWM Modes 
dazu "überredet" werden, gleich das Schaltsignal zu liefern.

von maxe (Gast)


Bewertung
0 lesenswert
nicht lesenswert
danke, ich werde es mit einem Timer versuchen.

von MWS (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Maxe,

wenn Du gerade anfängst, kann die Timer/Counter Lösung etwas tricky sein 
(sprich frustbehaftet), und ein Oszilloskop würde dabei sehr helfen.

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.