PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Grundschaltung mit Atmega8



Franky55555
08.12.2008, 10:03
Hi!

Ich mochte mir diese Grundschaltung aufbauen, aber mit dem Atmega8-16PU:
https://www.roboternetz.de/wissen/images/2/2a/Avrtutorial_grundschaltung_spannung.gif

DEr Atmega8 hat aber andere Anschlüsse. Was muss ich am anders verdrahten? Ein Schaltplan wäre gut. Und was muss ich in Bascom anders machen? Und kann ich an den ISP-Anschluss einfach den MySmartUSB anschließen?

Ich hoffe ihr könnt mir helfen.

MfG

JonnyP
08.12.2008, 10:31
Eigentlich ist doch alles identisch, lediglich die Pinnummern sind anders. Schau nach VCC, GND, AVCC,MOSI, MISO und belege die entsprechenden Ports. Du kannst deine Schaltung ja zur Kontrolle wieder hier reinstellen.
Und noch was: Pin AREF wird NICHT angeschlossen!! Das ist ein Fehler.

Das sollte im RN mal korrigiert werden. Wenn sich keiner findet dann gebt mir Bescheid und ich ändere es ab.

Andree-HB
08.12.2008, 10:34
-> http://www.pixelklecks.de/images/snugboardv2s.gif

Hubert.G
08.12.2008, 10:40
Hier ein Plan, AREF jedoch nicht nach +5V sondern über einen 100n nach GND legen. www.myavr.info/download/schaltplan_205.png
Schau dir auch das hier an www.loetstelle.net/forum/viewtopic.php?p=6851#6851 da gibt es auch noch Links für BASCOM

Ceos
08.12.2008, 14:47
WENN man den ADC extern eine referenz zukommen lassen will kann man das nachträglich immernoch tun, dann kann man mit einem widerstand einen tiefpass bauen um aref zu sabilisieren .... nur wenn man halt eine interne referenz (2.56V z.B.) benutzt, dann fliessen da undfinierbare querströme ... nur um das "AREF nicht an VCC" mal zu erklären

Besserwessi
08.12.2008, 17:03
Wenn man schon mal dabeigeht den Plan zu ändern wegen AREF, sollte man auch gleich einen 2 ten Endkoppelkondensator vorsehen.

Franky55555
08.12.2008, 17:14
wo kommt der dann hin?
und welchen quarz soll ich am besten nehmen?

Besserwessi
08.12.2008, 17:27
Für den Anfang braucht man nicht unbedingt einen Quarz, denn der Controller läuft erstmal mit den internen RC oszillator. Welchen Quarz man nimmt hängt von der Anwendung ab. Wenn der Aufbau (layout) eher schlecht ist oder gar auf einen Steckbrett, sollte die Frequenz nicht zu hoch sein, z.B. 4 MHz reichen oft.

Die Entkoppelkondensatoren kommen jeweils dicht an die Pins Vcc/GND und AVCC/AGND. Also auf beide Seiten des ICs je einer, auch wenn da eine Verbindung ist und die Kondensatoren somit parallel geschaltet sind.

Franky55555
11.12.2008, 14:27
Ich hab noch ein paar Fragen:

Da sind so kleine Schalter am MySmartUSB in welche Position muss man die stellen?

Kann man die beiden Anschlüsse für den Quarz auch als normale Ansteuerbare pins verwenden?

Ich werde, wie in der Anleitung beschrieben, den Asuro in C programmieren. Verwirrt das irgendwie beim späteren Bascom proggen? Oder soll ich besser gleich den Atmega in C proggen?

Besserwessi
11.12.2008, 17:44
Wenn man den internen Oszillator nutzt, kann man bei vielen der AVR controller (geht bei Mega8, Mega 48,Tiny2313, aber nicht Mega32, 90S2313) die Quarz Pins für andere Funktionen nutzen. Einfach im Datenblatt nachsehen unter Pinbelegung.

Der Wechsel der Programmiersprache ist immer etwas verwirrend, aber man lernt dadurch oft auch was und sieht die Sache so von verschiedenen Seiten. Eigentlich ist nur die erste Programmiersprache schwer zu erlernen, die 2. Sprache wird dann deutlich einfacher.
BASCOM ist in mancher insicht gewöhnungsbedürftig. Je nach dem wie gut man mit C zurecht kommt, kann man auch dabei bleiben.

Franky55555
11.12.2008, 18:57
Naja ich hab früher schon Basic programmiert (keine Mikrocontroller), also bin ich das schon ein bisschen gewöhnt. Welche Sprache ist denn bei Mikrocontrollern am besten?

Hubert.G
11.12.2008, 19:15
Mit so einer Frage kannst du eine Grundsatzdiskussion in Gang setzen.
Mit Basic hat BASCOM nur bedingt etwas zu tun. Für einfachere Sachen und wofür es Bibliotheken gibt, sicher gut zu brauchen. Bei individuellen und komplexeren Programmen ist man schnell an den Grenzen angelangt.
Für Mikrokontroller würde ich Assembler empfehlen, um zu wissen was sich grundsätzlich abspielt. Weitermachen dann mit C.
Der weitere Schritt nach oben Richtung ARM, FPGA usw. ist über C sicher leichter.

Franky55555
12.12.2008, 16:04
Hi!

So ich hab die Grundschaltung mal nachgebaut (mit einer Led an PB0).
Der Mikrocontroller und der ISP-Stecker sind noch nicht eingebaut.
Hier die Bilder:
http://danielfrank.bplaced.net/bilder/projekte/IMG_8308.JPG
http://danielfrank.bplaced.net/bilder/projekte/IMG_8309.JPG
Die Position des Controllers und der Buchse wird durch die vier orangenen Drähte markiert.
Es wäre sehr sehr nett wenn ihr euch die Bilder mal anschauen und mir dann sagen würdet, ob alles stimmt.
Danke schon im Voraus!

MfG

PS: Wie heißt die ISP-Buchse in der Fachbezeichnung? Ich finde sie Beim Conrad nämlich nicht.

Hubert.G
12.12.2008, 16:53
Sieht soweit gut aus. Die Buchse ist am Programmer dran, auf das Board gehört ein Wannenstecker 2x5.
Ich verwende immer 2x3, braucht weniger Platz.

Franky55555
12.12.2008, 17:31
Danke für das ansehen!
Könnte mir wer die Conradnummer oder den Link posten?
Wäre sehr nett.

Hubert.G
12.12.2008, 18:03
Habe ich bei Conrad auch nicht gefunden. Entweder du nimmst 744026-55 und du markierst Pin1 damit du richtig ansteckst oder du kaufst bei Reichelt WSL10G.

lol564
02.01.2009, 13:09
hallo :cheesy: :cheesy: :Haue :Haue :cheesy: :cheesy:

Franky55555
17.01.2009, 14:49
Ich hab noch eine Frage:
Müssen die Einstellungen in Bascom unter Options/Compiler/Chip die gleichen sein wie die, die man am Anfang des Programms angibt?
Wenn ja, welche soll ich nehmen?
Am Anfang waren folgende eingestellt:
HW Stack 32
Soft Stack 8
Framesize 24

Und wie kann man alle Einstellungen zurücksetzen?

albert32
18.01.2009, 14:11
Hallo!

Zu Frage 1.)

> Müssen die Einstellungen in Bascom unter Options/Compiler/Chip die gleichen sein >wie die, die man am Anfang des Programms angibt?

NEIN!

$regfile - Weist den Compiler an, eine bestimmte Registerdatei anstatt der eventuell vorher ausgewählten zu benutzen! (Überschreibt die Compiler Einstellungen).

oder

CONFIG 1 WIRE – Konfiguriert den Pin zur Nutzung für 1WIRE Anweisungen und überschreibt die Compiler Einstellungen

oder

CONFIG LCD – Konfiguriert das LCD Display und überschreibt die Compiler Einstellungen.

Zu Frage 2.)

>Am Anfang waren folgende eingestellt:
>HW Stack 32
>Soft Stack 8
>Framesize 24

>Und wie kann man alle Einstellungen zurücksetzen?

Die Parameter Hardware und Software-Stack sowie Framsize belässt man vorerst auf ihren Defaultwerten. Daher auch > Einstellungen zurücksetzen mit „Button“ Default!

CALL und GOSUB benötigen je zwei Bytes im Hardwarestack. Außerdem steigt der Bedarf an Hardwarestack bei geschachtelten GOSUBs schnell an. Weiters benötigt ein Interrupt 32 Byte, und viele Instruktionen nutzen den Hardwarestack als Zwischenspeicher.

Variable und Lokale Variable die man ein Unterprogramm übergibt, benötigen je 2 Byte im Softwarestack.

In sogenannten Frames, werden lokale Variable abgespeichert:

Eine Integervariable benötigt 2 Byte.
Ein String (seiner Zeichenzahl nach) plus 1 Byte.
Auch interne Konvertierungsroutinen (STR(), VAL(), INPUT num, usw.) verwenden Frames als Zwischenspeicher und belegen dabei maximal 16 Bytes.

Das bedeutet nun auf die letzte Frage bezogen:

Diese Einstellungen erst setzen (oder verändern) wenn man sein Programm kennt.

mfg

albert

Franky55555
18.01.2009, 19:06
ok, alles klar.
danke für die erklärung!

ich hab jetzt mal ein programm geschrieben dass über zwei tasten einen "leuchtbalken" aus 6 leds ansteuert.
hier der code:


'################################################# ##
'Über zwei Taster kann immer eine andere der 6 Leds zum leuchten gebracht werden.
'################################################# ##


$regfile = "M8def.dat"
$crystal = 1000000
$hwstack = 32
$swstack = 10
$framesize = 40

Config Portc.0 = Output
Config Portc.1 = Output
Config Portc.2 = Output
Config Portc.3 = Output
Config Portc.4 = Output
Config Portc.5 = Output
Config Pind.0 = Input
Config Pind.1 = Input
Led1 Alias Portc.0
Led2 Alias Portc.1
Led3 Alias Portc.2
Led4 Alias Portc.3
Led5 Alias Portc.4
Led6 Alias Portc.5
T1 Alias Pind.0
T2 Alias Pind.1

Dim X As Integer

X = 0

Do
If T1 = 1 Then
X = X + 1
End If

If T2 = 1 Then
X = X - 1
End If

If X < 0 Then
X = X + 1
Elseif X > 5 Then
X = X - 1
End If

If X = 0 Then
Led1 = 1
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Elseif X = 1 Then
Led1 = 0
Led2 = 1
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Elseif X = 2 Then
Led1 = 0
Led2 = 0
Led3 = 1
Led4 = 0
Led5 = 0
Led6 = 0
Elseif X = 3 Then
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 1
Led5 = 0
Led6 = 0
Elseif X = 4 Then
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 1
Led6 = 0
Elseif X = 5 Then
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 1
End If


Loop

End

geht das so?

Franky55555
20.01.2009, 16:16
So, der MySmartUSB is endlich da und ich hab auch schon den treiber installiert und das erste blinkprogramm auf den µC übertragen. das funktioniert auch aber bei dem firmware-update-programm geht was nicht.
der schreibt immer, das er den programmer nicht findet.

warum???

das programm gibts hier: http://myavr.de/download.php

Franky55555
21.01.2009, 20:07
also das leuchtbalken-programm geht nicht, wisst ihr warum?

und ich hab ein servoansteuerungsprogramm geschrieben:


'################################################# ############################
'Der Servo an PB2 wird durch die zwei Taster an PB0 und PB1 gesteuert..
'################################################# ############################

$regfile = "M8def.dat"
$crystal = 1000000
$hwstack = 32
$swstack = 10
$framesize = 40

Config Portb.2 = Output
Config Portb.0 = Input
Config Portb.1 = Input
Portb.0 = 1
Portb.1 = 1

Config Servos = 1 , Servo1 = Portb.2 , Reload = 10
Enable Interrupts

Servo(1) = 100

Dim Stellung As Byte
Stellung = 100

Do

If Portb.0 = 0 Then
Stellung = Stellung - 1
Elseif Portb.1 = 0 Then
Stellung = Stellung + 1
End If

For Stellung = 50 To 150

Servo(1) = Stellung

Waitms 200

Loop
End

Aber leider funktioniert es nicht. Der Servo zittert immer und bleibt in der Grundposition. Die Taster haben keinen Einfluss. Warum?
Ich bin mir nicht sicher was der befehl "For Stellung = 50 To 150" macht. ich glaube der bewirkt, dass die variable nicht kleiner als 50 und nicht größer als 150 sein kann. stimmt das?

Dirk
21.01.2009, 20:29
Ich bin mir nicht sicher was der befehl "For Stellung = 50 To 150" macht. ich glaube der bewirkt, dass die variable nicht kleiner als 50 und nicht größer als 150 sein kann. stimmt das?
Nein, die For-Next-Schleife (Next fehlt bei dir) führt alle Anweisungen dazwischen mit den Werten 50 bis 150 für die Variable Stellung durch:
For Stellung = 50 To 150
__Tu irgendwas
Next Stellung
In deinem Programm hat das aber keinen Sinn, da du ja die Servostellung per Tastern beeinflussen willst. Also: Einfach weglassen.

Gruß Dirk

Franky55555
23.01.2009, 12:37
es geht aber ohne dem auch nicht.