Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte limbi doc  


BulgaraCeha slovacaCroataEnglezaEstonaFinlandezaFranceza
GermanaItalianaLetonaLituanianaMaghiaraOlandezaPoloneza
SarbaSlovenaSpaniolaSuedezaTurcaUcraineana

BildungBiologieBücherChemieComputerElektronischFilmGeographie
GeschichteGeschichtenGrammatikKunstLebensmittelLiteraturManagementMathematik
MedizinPhilosophiePhysikalischPolitikRezepteTechnikVerschiedeneWirtschaft
Ökologie

Die Programmierung der ATMEL AVR Controller mit BASCOM

verschiedene

+ Font mai mare | - Font mai mic



DOCUMENTE SIMILARE

Trimite pe Messenger


Die Programmierung der ATMEL AVR Controller mit BASCOM

A) HARDWARE




Beispiel für ein Minimalsystem mit AT90C23213:

Zum Programmieren wird der Controller mit dem PC über einen Programmieradapter verbunden. Es gibt unterschiedliche Schaltungen, z.B. die folgende zum Programmieren über den Parallelport:

B) SOFTWARE: BASCOM

1. BASCOM - Optionen einstellen / überprüfen

n      Options - Compiler - Chip: richtiger Baustein ausgewählt?

n      Options - Programmer
- STK200 / STK300
- Adresse des Parallelports (LPT1 = 378h, LPT2 = 278h)


2. Programm schreiben, compilieren und zum Controller schicken

File - New
Quelltext schreiben

Program - Compile

Program - Send to chip

Bei umfangreicheren Programmen kann es nützlich sein, das Programm im eingebauten Simulator auszutesten.

Programmstruktur (Beispiel):

‘Deklarationen + Initialisationen:

$CRYSTAL = 4000000

Config Portc = Output

Config Portb = Input
Config .

DIM VariableA as byte

DIM VariableB as integer

.

‘Hauptprogramm ist sehr oft eine Endlosschleife

DO

LOOP

END

Stolpersteine:

Chip nicht korrekt eingestellt

Vergessen, Port als Ein- oder Ausgang zu konfigurieren

Wenn das Programm keine Endlosschleife oder keinen END-Befehl enthält, wird erst das Programm ausgeführt, danach aber sinnloser Schrott, nämlich die Befehle die sich aus den zufälligen Speicherinhalten hinter dem letzten Befehl ergeben.

C) Erste Schritte.

Port schreiben und lesen

Konfiguration als Ein/Ausgang:
z.B.
Config PortB = Output / Input für den ganzen Port B
Config PinC.3 = Output für Bit 3 von PortC

Werte setzen:
Port
A = &H1A
PortC.4 = 1

Werte lesen
DIM x as byte
x = PinA

DIM y as bit
y = PinC.6

Details zu internem Pullup siehe „Taster“

Aufgabe 1

Damit fängt man immer an, wenn man Neuling ist, oder einen neuen Controller benutzt:

Schreibe ein Programm, welches eine oder mehrere LEDs zum Blinken bringt.

Überlege:

Wie sind die LEDs angeschlossen? Braucht man H oder L damit sie leuchten?

Welcher Wert muss am Port ausgegeben werden, damit z.B. die dritte LED von links leuchtet? (binär -> hex, evtl. dez.)

Benutze die Befehle

$CRYSTAL =

CONFIG PortX = Output

DO LOOP

Wait

PortX = Konstante

Alle Befehle sind in der BASCOM - Hilfe erklärt.


Aufgabe 2

Sollen die LEDs etwas schneller blinken?



Versuch’s mit dem Befehl Waitms.

Aufgabe 3

Wie wär’s jetzt mit einem Lauflicht?

Wir fangen mit einer leuchtenden LED an und schieben die Bits hin und her mit ROTATE, einmal links herum und einmal rechts herum. Das ganze in einer Schleife, damit es ewig so weitergeht.

LCD-Display

Aufgabe 4: Ansteuerung eines LCD-Displays

Das hätte eigentlich schon früher kommen sollen, denn jeder Programmierkurs, der etwas auf sich hält, beginnt damit.
Erraten, es handelt sich um das berühmt-berüchtigte „Hello world!“ - Programm.

Versuche den Text auf dem LCD - Display auszugeben. Beachte dabei die Anschlüsse des

LCDs. Auf dem Lauth’schen Board ist die Verbindung standardmässig:

(Es wird mit nur 4 Datenbits gearbeitet)

(Beim AT90C2313 gibt es keinen PortC, hier muss PortB oder PortD benutzt und entsprechen konfiguriert werden.)

Im Programm muss das LCD mit 2 Befehlen konfiguriert werden:

Config LCD legt die Grösse fest (20 * 2)

Config Lcdpin legt die Anschlussbelegung fest

Vor dem Schreiben soll das Display mit CLS gelöscht werden. Dies bewirkt auch einen LCD-Reset.

Das Schreiben selbst erfolgt mit dem Befehl LCD

Erweiterungen:

Mit LOCATE kann der Cursor positioniert werden, so dass man z.B. auch in die 2.Zeile schreiben kann.

Serielle Schnittstelle

Aufgabe 5: Kontakt mit einem PC
Senden eines Textes

Es soll eine serielle Übertragung vom Mikrokontroller zum PC prohrammiert werden.

Die RS232 - Signale des PCs haben 12V, während der Controller mit 5V-Pegel arbeitet. Ausserdem ist die Logik invertiert.

Es muss also eine Anpass-Schaltung zwischengeschaltet werden, z.B. die klassische MAX232- Schaltung, welche in der hier abgebildeten Form ihren „Saft“ eleganterweise aus der RS232-Schnittstelle des PCs beziehen kann , wenn J1 gesetzt ist (Voraussetzung ist natürlich ein 1:1-Kabel, welches auch die Signale der Pins 4 (DTR) und 7 (RTS) führt).

Die Speisung kann aber auch vom Controller-Board aus erfolgen, wenn J2 gesetzt ist.

D1, D2 = 1N4148

D3 = ZD4v7

R1 = 100W

C1C5 = 1mF

J1 = Stromversorgung vom PC

J2 = Stromversorgung von der

Kontrollerplatine

Die Verbindung nach rechts zum Mikrokontroller ist die folgende:

Pin 3

RxD

PortD.0 (RxD)

Pin 2

TxD

PortD.1 (TxD)

Die Anpass-Schaltung kann übrigens auch mit 2 Transistor-Invertern aufgebaut werden. An RxD des PCs (Pin 2) genügt meist schon ein 5V-Pegel, so dass die Schaltung nur 5V Betriebsspannung braucht. Am sichersten ist aber immer noch der MAX232.

Benutze für das Testprogramm die Befehle:

BAUD =

PRINT ..

(Am besten Text in einer Endlosschleife ausgeben mit Verzögerung, dies ist günstig wenn das Signal mit dem Oszilloskop beobachtet werden soll).

Als Terminal kann das in BASCOM eingebaute benutzt werden.

Achtung!
Die Baudraten und sonstigen Parameter der Schnittstellen von PC und Controller
müssen natürlich übereinstimmen!

Aufgabe 6: Senden eines Variableninhaltes

Statt eines langweiligen konstanten Textes soll der Controller den Inhalt einer jede 200ms inkrementierten Variablen übermitteln (dezimal und hexadezimal).

Befehle:

PRINT X; ‘X = Zählvariable (vorher dimensionieren)

PRINT HEX(X)

Welchen Unterschied macht es, ob hinter dem PRINT ein „;“ angefügt ist oder nicht?

Aufgabe 7: Empfang eines Textes vom PC

Der Mikrokontroller soll den Bediener am anderen Ende der Leitung auffordern, seinen Namen einzugeben. Anschliessend soll der Mikrokontroller antworten mit „Hallo Name

Befehl:

INPUT

Beachte, dass zuerst eine Variable zum Aufnehmen des empfangenen Textes dimensioniert werden muss, z.B. mit DIM S as STRING * 10 (max. 10 Zeichen lang)

Erweiterung:



Der Controller soll zusätzlich nach dem Alter fragen und dies ebenfalls ausgeben.
(Welcher Variablentyp eignet sich für das Alter? Informiere dich über die unterschiedlichen Variablentypen!)

Damit die Anzeige im Terminal übersichtlicher wird, soll am Ende jeweils eine Leerzeile ausgegeben werden.

Taster und Schalter an den Ports

Aufgabe 8: Eingabe über Taster

Ein Portpin soll abgefragt und das Ergebnis mit den LEDs eines anderen Ports angezeigt werden.

Achtung: ein Eingang wird mit PinX.Y, nicht mit PortX.Y gelesen!

Achtung: bei der Funktion als Eingang kann der Pin mit oder ohne internen Pullup-Widerstand betrieben werden!

Portfunktion in Abhängigkeit von Data Direction Register (Config PortX = Input/Output) und gesetztem Wert (PortX = 1/0):

Config =

(DDRx)

PortX =

Pullup

Input

Nein

Hochohmiger Eingang

Input

Ja

Eingang mit Pullup - Widerstand

Output

Nein

Ausgang mit log. 0

Output

Nein

Ausgang mit log. 1

Taster nach +5V:

In diesem Fall muss ein Pulldown-Widerstand von z.B. 10kW verwendet werden, da sonst der Eingang bei nicht gedrücktem Taster offen liegt. (Die 3 Taster ENTER des Lauth’schen Boardes sind schon so beschaltet).

Taster nach GND

Dies ist oft praktischer (und daher in der mC-Technik verbreitet), da man keine +5V auf die Taster führen muss, ein Masseanschluss ist sowieso immer irgendwo zu finden. Ausserdem kann ein AVR einen internen Pullup- Widerstand zur Verfügung stellen, so dass kein externer nötig ist.

Die gezeichnete Konfiguration des Tasters arbeitet mit einem programmierten internen Pullup-Widerstand.

Um diesen einzuschalten muss der Portpin als Input konfiguriert und auf log. 1 gesetzt werden:

CONFIG PinD.0 as INPUT

PortD.0 = 1

Gelesen wird der Pin als  PinD.0

Achtung:

Bei Eingängen mit Schalter gegen Masse:
Es dürfen keine LEDs parallel zu den Eingängen liegen (wie bei der älteren Version des Lauth’schen des Testboards), denn diese ziehen das Potential zu stark herunter (auf 2V), so dass es für H nicht mehr reicht!

Erweiterung:

Ein Portpin soll abgefragt und das Ergebnis mit LEDs, auf dem LCD-Display und an einen angeschlossenen PC über die RS232-Schnittstelle übermittelt werden.






Politica de confidentialitate



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 614
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2022 . All rights reserved

Distribuie URL

Adauga cod HTML in site