Silvio, das hast du sehr gut beschrieben und deckt sich mit meiner angelesenen Theorie.
Die 153 Seiten des Grundkurses auf Gerold's Hompage habe ich mir jetzt erst mal intensiv
zu Gemüte geführt.
Ich hoffe am WE jetzt komme ich dazu meine Theorie in die Praxis umzusetzen.
Ich melde mich dann auf jeden Fall um dann mit dem Timer weiter zu machen.
Erst muss ich es noch blinken lassen und dann schneller blinken lassen ...
Glaube aber, ich habe schon einiges viel mehr verstanden als noch vor einer Woche !
Werde meine weiteren Versuche mit einem ATMega8 unternehmen.
AVR Evaluationsboard von Pollin
-
-
Hallo Dirk,
ich hoffe das Du die LED`s zum blinken gebracht hast.Silvio, ich habe ja noch gar nichts von blinken hier gelesen ? Wir waren doch noch beim leuchten.
Also im Moment bin ich noch beim Leuchten.
Habe eine erste Schaltung von Gerold auf meinem Steckboard gebaut, das Programm mittels Bascom geschrieben,
mittels PonyProg eingelesen - und es funktioniert !
Ist zwar "nur" eine einfache Pinabfrage mit 2 Transistoren und LED als Ausgang, aber diese Grundlage habe ich schon mal drin.Das Blinken wollte ich eigentlich später über die Software mittels wait 1 realisieren, meine Aufgabe ist ja nicht zeitkritisch.
Zum üben ist es aber auch mittels internem und externem Oszillator interessant.
Also Silvio, LEUCHTEN erledigt.
Wie lasse ich es mit internem Oszillator blinken ?
Meine (zugegeben schlechte) Variante wäre:
Do
If Taster1 = 0 Then
Led1 = 0
Wait 1
Led1 = 1
Wait 1
Led1 = 0
Wait 1
LED1 = 1
Wait 1
Else
Led1 = 0
Loop -
Hallo Dirk,
das ist ja super! Wenn man eine Anfang hat, ist das alles nicht so schlimm.
Richtig, zeitkritisch ist Deine Anwendung nicht, aber Du brauchst ja einen Sekundentakt um die Rundenzeiten und die Endzeit zu erfassen. Mit wait kannst du das nicht lösen. Hier ist eben ein 16bit Timer gefragt.
Die Startsequenz ist noch am einfachsten und die kannst Du mit wait abarbeiten.ZitatWie lasse ich es mit internem Oszillator blinken ?
Wenn Du die Fuses noch nicht geändert hast, dann ist es der Interne Taktgeber. Sollte in Bascom so aussehen $crystal = 8000000 'für 8MHz Quarz
Hast Du die Fuses geändert dann muss du in Bascom $crystal = 16000000 'für 16MHz Quarz schreiben.Bis jetzt kannst Du Port und Pin unterscheiden. Ist halt doof in Bascom da alles PIN heißt, aber mit der Zeit kein Problem. Eine LED zum leuchten bringen und die Fuses für den Ext. Quarz ändern. Aber noch mal Vorsicht beim zurückändern. 3 mal lesen.
So nun kommen wir zum Timer. Der Atemga 16 müsste 3 Stück haben. 2- 8bit die zählen bis 255 und eine 16bit der zählt bis 0-65535. Die Grundlagen für die Timer kannst Du hier nachlesen und testen.
( hähä dann blinkt auch die LED!)viel Glück
lg Silvio
-
Der Atmega 16 müsste 3 Stück haben.
Ich nutze aber jetzt den Atmega8, reicht wenn ich den laufend verbiege.
Du gehst bei deiner Beschreibung vom Pollin-Board aus ?Ich stecke ab und zu noch auf mein Steckbrett um, um die Beispiele nach zu bauen.
Hin und Her, Hin und Her ... -
Dirk, das selbe gilt auch für den Atmega 8. 3 Timer, 2-8bit und einen 16 bit. Der extern. Quarz hat 16Mhz.
Und ja ich gehe von dem Pollinboard aus.lg Silvio
-
Verzeiht einem Unwissenden ...
Sind das eigentlich verschiedene Programmiersprachen oder nur verschieden Schreibweisen ?1.
'LED1 an PB5
Led1 Alias Portb.5
Config Led1 = Output2.
Ddrb = &B00010000 -
Hallo Dirk,
ist eigentlich das Gleiche,
1. ist die Portzuweisung PortB Pin5, mit Variablen um die Übersicht zu behalten.
2. ist die Binäre Schreibweise. Auch der PortB und Pin5 . Es geht beides in Bascom.Ist ja Sinnvoll wenn ich gleich im Code lese das die LED1 leuchten soll, Nachteil, mehr Codezeilen.
Musst immer denken bei &b00010000, aber es spart Codezeilen, ergo Speicher.Sinn macht es auch sich damit zu beschäftigen, wenn Du mal eine andere Programmiersprache lernen möchtest. Spart auch Zeit:)
für Portb
Pin0=&b00000001
Pin1=&b00000010
Pin0 und Pin1=&b00000011alle Pins auf low=&b0
und so weiter.
lg Silvio
-