Ja aber nur unter Vorbehalt denn das sind nur Richtwerte.
In der Praxis gibt es abweichungen
Druckbare Version
Ja aber nur unter Vorbehalt denn das sind nur Richtwerte.
In der Praxis gibt es abweichungen
Habe mich heute etwas mit meinem Vater an den Programmcode gesetzt. Leider spuckt Bascom beim compilieren noch Fehler aus, die aber immer die gleichen sind.
Error 230 You can not write to a PIN register
Error 105 StoreBit error (immer in der selben Zeile wie Error 230)
Error 31 Invalid datatype
Und ganz zum Schluss:
Error 124 (Line 0) LOOP expected
Ebenfalls sagt mir Bascom, dass Debounce bei $tiny nicht unterstützt wird.
Der Code zu den Fehlern:Code:$regfile = "at15def.dat"
$tiny
$initmicro
Pinb.6 = 255 * 0.6
'Initialisierung
_init_micro:
Config Pinb.1 = Output 'PortB.1 als Ausgang
Ausgang Alias Pinb.6
Config Pinb.2 = Input 'Pin (PB4) als Eingang
Tasterhoch Alias Pinb.2
Config Pinb.3 = Input 'Pin (PB5) als Eingang
Tasterrunter Alias Pinb.3
Config Pinb.4 = Input 'Pin (PB6) als Eingang
Tastervoll Alias Pinb.4
Portb.1 = 1 'Pullup Widerstand ein
Return
'Ausführungsprogramm
Pr:
Do
If Tasterhoch = 0 Then 'Spannungserhöhung
If Ausgang > 245 Then
Ausgang = 255
Else
Ausgang = Ausgang + 10
End If
Else
nop
End If
If Tasterrunter = 0 Then 'Spannungsverminderung
If Ausgang < 10 Then
Ausgang = 0
Else
Ausgang = Ausgang - 10
End If
Else
nop
End If
If Tastervoll = 0 Then
If Ausgang = 255 Then 'Volle 12V
Ausgang = 0
Else
Ausgang = 255
End If
Else
nop
End If
End
Ja,das kann auch nicht funktionieren.
Am Anfang kommen die Definitionen,
Also welche Ports oder Pinne als ein odr ausgang.
Die Variablen werden deklariert (Auch Alias)
eventuell. benötigtwe Libarys geladen.
usw.
Erst danach kommt das Programm
und am Ende hinterm Programm steht "END"
Danach Eeprom und Datazeilen falls nötig.
Das solltest du erstmal umstellen.
Dann ist die Dokumentation nicht mehr stimmig.
Dann versuchst du ganz oben einen Pin mit einem Bytewert zu beglücken und das vor den Dedinitionen wobei genau dieser Pin noch garnicht definiert wird
Änder das mal und bring Ordnung rein.(Gleich angewöhnen)
alternativ kann ich mir das mal in ruhe ansehen aber das dauert ne weile.
Hm habe nun einmal alles sortiert und den Loop-Fehler behoben. Leider kommen die restlichen Fehler immernoch...
Wie gesagt bin totaler Neuling auf dem Gebiet, was mich aber wundert, ist, dass kopierte Codes funktionieren, ich aber eigentlich keine Unterschiede sehe :(
Dann noch eine Frage: erkennt der Tiny automatisch, dass es sich bei den 255 um Byte handelt? Oder muss ich das mit "Dim Ausgang As Iram Byte" definieren?
Definieren must du alles was du nutzen willst.
Vorallendingen fehlt dir hier die Zeile um den Timer im PWM-Modus zu betreiben.
zb.
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 64
Beim 15L macht Bascom das aber nicht (Is vieleicht bei der 81er Version schon gefixt. Probieren)
Wenn das nicht geht dann Manuell mit
Tccr1 = &B01010011
Tcnt1 = &B10000111
Ddrb.1 = 1
Mit
Ocr1a = 127
Ocr1b = 127
Ocr1a = X
Kannste dann Arbeiten.
OK, dann mach ich das nun einmal hier Schritt für Schritt. Anscheinend unterscheided sich der Code für Bascom schon etwas vom Visual Basic gecode.Zitat:
Zitat von Ratber
Das steht vor meinem Programm:
Wenn ich die Bascom-Hilfe richtig verstanden habe, kann man ganz am Anfang mit $initmicro in das Sub _init_micro springen. So kann ich doch einmal den Startwert festlegen oder?Code:$regfile = "at15def.dat"
$tiny
$initmicro
$crystal = 1000000
$noramclear
Config Pinb.1 = Output 'PortB.1 als Ausgang
Config Pinb.2 = Input 'Pin (PB2) als Eingang
Config Pinb.3 = Input 'Pin (PB3) als Eingang
Config Pinb.4 = Input 'Pin (PB4) als Eingang
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 64
Ausgang Alias Pinb.6
Tasterhoch Alias Pinb.2
Tasterrunter Alias Pinb.3
Tastervoll Alias Pinb.4
Also $Initmicro ist nur Sinjnvoll wenn du einge Portpinne so schnell wie Möglich auf einen definierten Wert setzen willst weils die Schaltung erfordert und man nicht die Möglichkeit hat den Einschaltfehler abzufangen (Selten)
Das ist auch nur bei langen Programmen mit umfangreicher Initialisierung nötig.
Für deine Anwendung ist das irrelevant.
Die Pinne am Controller sind beim Einschalten auf Eingang also passiert hier nichts ausser das der Lüfter vieleicht einige Millisekunden anders läuft als gewollt (Also garnicht weil Träge)
Ok, dann kann ich das auch weglassen. Habe ich denn soweit alle nötigen Definitionen usw. oder fehlt da noch etwas? Habe bei Beispielcodes nichts weiter finden können, was noch wichtig sein könnte.
Ich hab jetzt nicht den Überblick aber ich denke mal das du noch Variablen nutzen willst
Also zb. "Dim A as Byte" usw. fehlt da noch.
Ach so ,nochwas nebenbei.
Die PWM kannste gut mit einer LED+Vorwiderstand am PWM ausgang testen.
Man sieht dann gut was läuft.
Super Ratber vielen Dank! Habe den Code nun fertig und er funktioniert auch (zumindest in Bascom). Wenn endlich die richtigen Microcontroller da sind, wird gleich mal getestet!