AVR und PIC??? Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
AVR und PIC??? Suche nach: pic (2056) |
|
|
|
|
BID = 367671
bastelheini Schriftsteller
Beiträge: 618 Wohnort: Sachsen
|
|
hi
tschuldige s klingt vellei doof aber ich verstehs grad net. kannst du/ihr das mal an einen beispiel machen. am besten: so sieht das ich der sprache aus mit der ihr nen ATmega programmiert. dann bei jedem hinschreiben was der befehl bzw die aktion von außen(taster etc....) in diesem abschnitt bewirkt und eventuell den Vgl. in VB.
wär schön dann würd ichs och ma begreifen....
mfg bastelheini |
|
BID = 367675
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
|
Nagut .
1. Einfacher if-Befehl (allerdings nicht mit Variablen, die müsste man vorher in ein Register laden):
Code : |
;VErgleiche Register r16 mit fixem Wert:
cpi r16, 0xFD ;Wenn Register16 = 0xFD
brne PC+2 ;Wenn ungleich (if not) überspringe nächsten Befehl oder springe zu Label hinter brne angegeben
;oder
breq Label ;wenn Bedingung wahr, dann springe zu label:
'Das ganze in VB
'(natürich ist hier der IF-Befehl sehr umständlich
If (a = b) Then
'Code
End If
'Du siehst, Assembler ist da kompliziert, da man diese Befehle dort nicht hat. Du kannst wie gesagt über die Branch-Anweisungen Entscheidungen treffen (auch ==, >, <, >=, <=, !=)
;-----
;Taster im Programm benutzen
;Erstmal mit Polling
sbis pinx, pinxn ;skip if bit in IO-Port is set
rjmp PC-1 ;wenn der Taster 0 ausgibt, dann zu sbis ... springen
;ansonsten:
rcall taste1_unterprogramm
;.... Programm geht weiter.
;irgendwo im Programm:
taste1_unterprogramm:
;Taste entprellen und gewünschte Aktion ausführen
ret ;zurückhopsen
'Vergleichbar mit Button in VB:
'Wenn Button gedrückt, dann wird .Value = True
Do While Command1.Value = 0 'Schleife, solange ungedrückt
Loop
'und weiter
'natürlich macht man das so nicht, und hat daher die Ereignisse:
Sub Command1_Click() 'wird ausgeführt, wenn jmd. auf Button drückt
'...
End Sub
;Vergleichbar dazu in ASM:
;Am Anfang des Programmes:
.org INT0
rjmp taste_druck ;Interruptvektor setzen
.org 0
rjmp RESET ;zum Anfang
...
RESET:
;Interrupt für INT0 (wo die Taste dran hängt) genau initialisieren
sei
;Set I-Flag: schaltet IRQs global an
main:
;...
;Programm
rjmp main
;"Event" taste_druck:
taste_druck:
;hier Taste auswerten, SREG sichern und so weiter, auch entprellen, sonst wird die Routine oft angesprungen, was blödsinn wäre.
;...
reti ;und wieder zurück, wo Programm unterbrochen wurde.
|
|
Ich hoffe, das hat dir geholfen. In VB "arbeitet" man halt mit vielen Datentypen (Byte, Integer, Long, Single, Double, Boolean, String...), die in Variablen liegen. Willst du in ASM Variablen benutzen, dann musst du das selbst programmieren.
Sry, ich bin übermüdet, sieht ein bisschen komisch aus, was ich verzapft habe ...
_________________
|
|
BID = 367983
Calidus Stammposter
Beiträge: 291 Wohnort: Nördlich vom A*** der Welt
|
Oder ist das Problem vielleicht grundsätzlicher?
Ein "IF" macht folgendes:
Du kannst in deinem Programm eine Entscheidung treffen. "If" kannste im Interrupt und im normalen Programm verwenden wie du lustig bist. Zum Beispiel:
Ist ein Signal an Pin 1? Dann schalte Lampe an, sonst nicht.
So fragt er nur ein einziges Mal. wenn Du das Signal an Pin 1 ständig wissen willst, dann musst Du in einer Schleife immer und immer wieder abfragen. Also:
Wiederhole die ganze Zeit die Frage:
(
Ist ein Signal an Pin 1? Dann schalte die Lampe an. Sonst nicht.
)
Das nennt man polling.
Folgen: 1) Dein µC verbraucht die ganze Zeit Strom 2) Dein Programm macht in der Zeit nichts anderes.
Ein "Interrupt" macht etwas anderes: Du hast ein ganz normales Programm laufen. Wenn die Interruptbedingung eintritt (zum Beispiel: Jemand drückt einen Taster), dann wird dein normales Programm komplett unterbrochen und stattdessen dein Interrupt-Programm ausgeführt. Zum Beispiel: schalte die Lampe um. Wenn der µC mit dem Interruptprogramm fertig ist, macht er mit dem normalen Programm weiter als wäre nichts geschehen.
Folgen: 1) Wenn dein normales Programm nur aus "Sleep" besteht, dann verbraucht dein µC fast nichts. 2) Dein Interruptprogramm wird ohne "polling" ausgeführt, das heißt, du musst in dein normales Programm nicht die ständigen kontrollen für den Taster einbauen und hast den µC frei für andere Dinge.
3) Auf den Interrupt wird in den meisten µC so schnell reagiert wie es irgendwie geht. Zeitkritische Dinge lassen sich deshalb in Interruptroutinen besser erledigen.
--> Das sind drei dicke Vorteile, die für den Interrupt sprechen.
Leider gibt es auch Nachteile, besonders für Anfänger. Wenn Du einen Fehler ins Interruptprogramm einbaust, hast Du fast keine Chance den zu finden. Deswegen musst Du da viel sorgfältiger sein, am besten nur Programme dort einbauen die du schon anders getestet hast.
Zudem musst Du ziemlich sparsam mit Interrupts umgehen. Wenn Du zu viele oder zu lange Interrupts gleichzeitig benutzt, dann fangen die manchmal an sich gegenseitig zu unterbrechen. Das geht, außer du verhinderst es!!! Und dann wird es meistens schon ZIEMLICH kompliziert, den Überblick zu behalten oder bei einem Fehler zu wissen, welcher Interrupt es denn jetzt genau war.
Vor- und Nachteile, es liegt bei Dir Wenn Du erstmal damit umgehen kannst, dann willst Du nicht mehr ohne, so viel verrate ich schon mal.
|
BID = 368015
bastelheini Schriftsteller
Beiträge: 618 Wohnort: Sachsen
|
uuuuuuuuuuuiiiiiiiiiiiiii das hat mir beides GANZ SEHR geholfen!!!!!!!!!!!!!!!11
DANKE!!!!!!!!jetzt hab ich das mit dem interrupts endlich verstanden:
es wird also ein normales programm ausgeführt. nebenbei läuft ein anderes programm (imaginär-->nur von mir gedacht) das dann anspringt wenn zb taster 1 gedrückt wird. dann hört das hauptprogramm auf und meine anweisung auf die in meinem imaginären programm verwiesen wird wird gestartet. wenn dieses fertig ist wird das ursprüngliche reale programm weiter ausgeführt.
juhu ich habs!!!!
inzwischen hab ich mich ein bisschen durchs web gelesen und festgestellt das die kostenlose version von BASCOM für den anfang völlig ausreicht. demzufolge muss ich nicht auf BASIC verzichten!!!!
das wäre auch besonders blöd gewesen da wir jetzt in der 11. klasse in informatik mit VB anfangen.....das macht sich nicht gut eine andere prog-sprache nebenbei zu lernen....außerdem konnt ichs ja schon.
nun werfe ich gleich neue fragen auf:
soweit ich das richtig gelesen hab ist der unterschied zwischen dem ATmega8 und dem ATmega16 die taktfrequenz oder? wie siehts mit dem speicher aus? reich dann der 8er (ich geh mal davon aus das er weniger hat als der 16ner) für den anfang mit tastern led eventuell display etc. aus?
danke mfg bastelheini
|
BID = 368041
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Zitat :
| ...außerdem konnt ichs ja schon. |
Und dann sind dir Interrupts unbekannt?
Na, macht nix .
Zitat :
|
soweit ich das richtig gelesen hab ist der unterschied zwischen dem ATmega8 und dem ATmega16 die taktfrequenz oder? wie siehts mit dem speicher aus? reich dann der 8er (ich geh mal davon aus das er weniger hat als der 16ner) für den anfang mit tastern led eventuell display etc. aus?
|
Sie können, ja nach Version des Chips, mit versch. Taktfrequenzen laufen, die sind als Suffix mit angehangen, z.b. ATmega8- 16PU für max. 16MHz oder eben - 8 für max. 8MHz.
Primär unterscheiden sie sich in
- SRAM (wenn vorhanden, dann die Kapazität)
- FLASH-ROM (primär für das Programm, kann aber auch Konstanten fassen (logisch )
- Diverse Hardware wie ADC, UART, versch. Anzahl an Timern und ext. IRQs, ...
- Anzahl an IO-Ports
- etc.
Der ATmega8 reicht dafür auf jeden Fall aus! Der ist ab Werk mit einem internen Taktgenerator von 1MHz (etwas ungenau, aber ausreichend) konfiguriert, also kannst du damit schon sehr schnelle ASM-Programme schreiben, und natürlich auch Taster, LEDn und Display(s) betreiben.
Allerdings, da du anscheinend mit Basic programmieren willst (, was ich leider nicht empfehle!), solltest du davon ausgehen, dass die Programme etwas lahmer und größer sind, als mit vergleichbaren ASM-Code.
Aber das wird kaum auffallen, da am Anfang zumindest nur die Funktion eine Rolle spielt.
Ein zweiter Nachteil wird der nicht stark vorhandene Hardwarebezug sein, wenn du Pech hast, wird einiges anders laufen, als du dir das vorstellst. Aber fang erstmal an, der Standard-Basic-Stil ist auf jeden Fall drin und auch recht einfach, anzuwenden. Habe selber mal mit Basic programmiert, aber bin jetzt schon länger bei ASM.
Viel Erfolg jedenfalls und meld dich, wenn du Schwierigkeiten hast !
_________________
|
BID = 368150
bastelheini Schriftsteller
Beiträge: 618 Wohnort: Sachsen
|
mir wart ja eher der begriff unbekannt. was er macht is ja dank eurer erklärung net so schwer zu verstehn!!!
hab halt vorher noch nie was davon gehört....deshalb konnt ichs net einordnen...
was haltet ihr den von dem "ATMEL Evaluations-Board Version 2.0 - Bausatz" von pollin? ist das zu gebrauchen???
|
BID = 368154
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Hmm.
Ich habe Version 1 und die funktioniert eigentlich sehr gut.
Allerdings benötige ich bloß den ISP-Programmieradapter da drauf, der Rest wird dann in-system-programmiert.
Zum Testen und anfangen aber sehr gut, da auch ext. Harteware da ist, wie z.b. LEDn, Taster, Piezopieper und eine serielle Schnittstelle.
_________________
|
BID = 368161
bastelheini Schriftsteller
Beiträge: 618 Wohnort: Sachsen
|
ich würde dann die 2. version nehmen...da gibts ne größere "artenvielfalt"...
kann man das board noch irgendwie erweitern? wie zb ein displa oder ne tastenmatrix anschließen??? oder sollte man sich da was komplett selber bauen?
|
BID = 368163
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
AFAIK gibt es einen sog. "Extensionport", wo die IO-Ports der Controller rausgeführt sind. Da ließe sich sowas natürlich anschließen.
Das muss man dann aber selbermachen, also passendes Kabel besorgen und an die Enden jeweils die gewünschte Hardware bimseln. Die Lösung ist das aber nicht; aber es geht; klar. Habe ich auch so gemacht .
_________________
|
BID = 368168
bastelheini Schriftsteller
Beiträge: 618 Wohnort: Sachsen
|
naja das werd ich ja dann merken....muss aber noch bissl warten...dauert noch bissl bis ich wieder bestelle....
ich will ja erst meine ätz küvette fertig bauen....
|
BID = 368205
bastelheini Schriftsteller
Beiträge: 618 Wohnort: Sachsen
|
hi ich noch mal.....
braucht man außer das experimentier board ein kabel zum pc und nat ein zwei atmega noch irgendwas für den anfang?????
so fix gespeichert in ein paar min fängt das backup an....
|
BID = 368210
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Ja.
Bestelle dir noch das passende Netzteil dazu. Außerdem solltest du beachten, dass es sich um ein Bausatz handelt, d.h. du musst alles selber auf die Platine löten.
PS: Nichts gegen dich, aber schreibe doch bitte nach geltenden Grammatikregeln, dann versteht man die Fragen besser .
Viel Erfolg
_________________
|
BID = 368221
bastelheini Schriftsteller
Beiträge: 618 Wohnort: Sachsen
|
[Grammatik an]Ja, ich wuuste leider nicht wieviel Zeit mir bis zu dem Backup noch verbleibt. Deshalb habe ich schnell die Schlagwörter eingetippt.[Grammatik aus]
so genug grammatik und othographie für dieses wochendende...
morgen is widder schule da darf ich anschalten net vergessen
ja und platinen löten ist gar kein problem...das kann ich
mfg bastelheini
[ Diese Nachricht wurde geändert von: bastelheini am 10 Sep 2006 18:17 ]
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 22 Beiträge im Durchschnitt pro Tag heute wurden bisher 2 Beiträge verfasst © x sparkkelsputz Besucher : 182671250 Heute : 1043 Gestern : 8112 Online : 356 5.1.2025 5:17 4 Besucher in den letzten 60 Sekunden alle 15.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0700359344482
|