Lieber Besucher, herzlich willkommen bei: Das Wettringer Modellbauforum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
Hast Du Dir mal die Polung der LEDs auf Eval-Board und unserem Schaltplan für das Steckbrett angeschaut?Ich glaube, ich hab da selbst etwas falsch eingebracht:
Auf meinem EVAL-Board zur probe aufgesteckte Controller arbeiten mit "realer" Logik, nehme ich sie jedoch herunter und setze sie mit dem (auf dem Board korrekt funktionierenden) Programm auf das Endboard, dann sind die Funktionen dort invertiert.
Im Klartext: Schreibe ich in BASCOM den Code so, dass bei "1" auch der Port logisch "1" ist, dann ist er in der finalen Schaltung leider logisch "0".
Ärgert mich ein wenig, besonders dann, wenn ich die Ausgänge mit einer PWM "takten" möchte. Statt einem ausgeschalteten Ausgang einfach logisch "0" zuzuweisen, muss ich stets von 1023 abwärts zählen - und das ist dann doch ein wenig irritierend...![]()
Den Port fest in das Programm einzubrennen, ist mir ein Rätsel. In Bascom stellst Du ein, wie und von welchem Port oder Gerät die ISP stattfinden soll. Da steht nix im Code!Bei mir gab es Anfangs ein paar Probleme, eine Verbindung über USB mit dem Board herzustellen. Es dauerte doch eine kleine Weile, bis ich dahinter kam, dass ich mit der Installation des USB-Treibers auch den dazu gehörigen Port fest in das Programm eingebrannt hatte. Bedeutet: Ich kann mein Board lediglich über den USB-Port ansprechen, über welchen die Urinstallation ablief. Zur Umdefinierung wäre eine Neuinstallation von Nöten (nur des Treibers).
Das brauchst Du nicht. Fuses et al. werden im nächsten "offiziellen" Post behandelt. Da bohren wir den Tiny auf 8 MHZ auf. Mit der Bascom-Demo.Da mir BASCOM selbst keine große Hilfe beim Herstellen einer Verbindung zum Board war, habe ich "AVR-STUDIO 4" zusätzlich installiert. Mit dem Programm ist es einfacher, auf das Board zuzugreifen, es bietet aber auch einige andere Features.
Die wichtigsten beiden sollten sein:
- Brennen der Fuses und Lock-Bits, womit hardwareseitig auch die richtige Grundfrequenz in den Controller eingebrannt werden kann (1MHz + 64µs mit internem Oszillator, wenn ich mich nicht irre)
- Direktes Brennen der Programme und HEX-Files, Löschen des Flash und EEProm
Zitat
In Gegensatz zum Steckbrett von Mathias sind die Kontaktspalten bei mir NICHT durchgängig verbunden, sondern in 3 Bereiche
unterteilt.
Zitat
Vielleicht hat hierzu jemand einen Hinweis, wie man die Zeilenummern hineinbekommt.
Ich habe nichts gefunden.
bisher habe ich nur die Praktischen Test im Hintergrund bearbeitet.![]()
![]() |
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
'***************************** ' ' ' Blinker (8-Kanal) ' ' '***************************** ' Hier nur 4 Kanäle für Tests auf dem Steckbrett aktiviert, da der ATtiny mehr als 80 mA nicht mag ' PortB.x -- 1k -- Anode LED -- Kathode LED -- GND. Pins 12 - 19 ' ' ***** Genutzter Microcontroller, Takt in Hz, Stacks & Framesize $regfile = "attiny4313.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 '***** Variable Dim I As Byte ' Standard-Zählvariable Dim Led_sequenz(4) As Word ' 4 LED-Sequenzen à 16 Schaltzustände Dim Impuls As Byte ' legt die Impulsdauer fest Dim Sequenz As Byte ' Länge der Sequenz Werte 0 - 15 entsprechen 1 - 16 Sequenzbits '******************************* '* '* Spielwiese '* '******************************* Impuls = 150 ' Impulsdauer in Millisekunden Sequenz = 15 ' s. o. Led_sequenz(1) = &B0000010100000101 ' Sequenz wird von hinten nach vorne abgearbeitet 1 = an, 0 = aus Led_sequenz(2) = &B0001010000101000 Led_sequenz(3) = &B0000111100001111 Led_sequenz(4) = &B1111000011110000 'Led_sequenz(5) = &B0101000001010000 'Led_sequenz(6) = &B0001010100010101 'Led_sequenz(7) = &B1100110011001100 'Led_sequenz(8) = &B0011001100110011 '******************************* '* '* Ende Spielwiese '* '******************************* ' '***** Configs & Interrupts ' Portpin-Configs & Alias Config Portb = Output Led1 Alias Portb.0 Led2 Alias Portb.1 Led3 Alias Portb.2 Led4 Alias Portb.3 'Led5 Alias PortB.4 'Led6 Alias PortB.5 'Led7 Alias PortB.6 'Led8 Alias PortB.7 For I = 1 To 4 Led1 = 1 ' 4 x 1-Sekunden-Test (wichtig, um korrekten Takt zu sehen) Wait 1 Led1 = 0 Wait 1 Next I Do For I = 0 To Sequenz Led1 = Led_sequenz(1).i Led2 = Led_sequenz(2).i Led3 = Led_sequenz(3).i Led4 = Led_sequenz(4).i ' Led5 = Led_sequenz(5).i ' Led6 = Led_sequenz(6).i ' Led7 = Led_sequenz(7).i ' Led8 = Led_sequenz(8).i Waitms Impuls Next I Loop End |
![]() |
Quellcode |
1 2 |
Pwm1a = 0 Pwmport Alias Pwm1a |
Ich finde die Syntax-Erläuterungen für einen Benutzer zwischen Anfänger und Fortgeschrittenem als "Bindeglied" recht gut, für den Anfänger fehlen meiner Meinung jedoch ein paar Sachen.
Beispielsweise hätte ich erst einmal bei NULL angefangen. Welche Grundbefehle gibt es, was bedeuten die Semikolon, Do-Loop-Schleife, Header-Konfiguration, Ports, etc.pp.
Da gibt es noch massig Grundwissen zu vermitteln... Sonst geht das zu schnell, denke ich. Das Basiswissen muss erst vermittelt werden, damit sich der Anwender nicht nur die Code-Beispiele schnappt, sondern auch bei anderen Controllern anwenden kann. Nur eine Empfehlung...![]()
Zitat
Eine Verständnisfrage noch: der Mikrocontroller wird aber im Modell nicht verbaut sondern nur mit dem passenden Programm versehen und angeschlossen?
![]() |
Quellcode |
1 2 3 4 5 6 7 8 9 |
Do Portb.0 = 1 Waitms 150 Portb.0 = 0 : Portb.1 = 1 Waitms 150 Portb.1 = 0 Loop |
Jepp, das kenne ich...(Verdammt - so viel Geschreibsel für einen Befehl...)
Der Button "Write FS" wird erst auswählbar NACH der Änderung auf „disabled“ UND dem Anklicken eines beliebigen anderen Feldes der Maske.
Zitat
Wählt bei Fuse Bit C statt "Divider by 8 enabled""Divider by 8 disabled" aus.
Der vorher ausgegraute Button "Write FS" wird auswählbar.Draufklicken.
![]() |
Quellcode |
1 |
On TimerX Lauflicht |
1 Besucher
Blinker, Blitzer, led, Mikrocontroller, Schrittmotor, Sensor, Servo, Sound, Soundmodul
Forensoftware: Burning Board®, entwickelt von WoltLab® GmbH