PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : µC-Einstieg



Wsk8
28.08.2008, 18:36
Hallo,

möchte mir demnächst mal meinen ersten kleinen roboter bauen(so auf asuro-basis).
Hab bei reichelt einen mega 32 gefunden.

Kosten:2.90
bezeichnung: ATMEGA 32-16 DIP :: ATMega AVR-RISC-Controller, DIL-40
daten:
ATMega AVR 32-16 PDIP
Gehäuse: DIL-40
MHz: 16
Flash: 32
EEProm: 1K
RAM: 2K
I/O: 32

wenn ich mich nicht täusche müsste der richtig sein?

Zum programmieren möchte ich ein isp dongle benutzen. Daher die Frage, ist der Druckerport eine lange Buchse mit der Farbe lila/rosa?
:-s
freue mich über tipps!!!!

hosti
28.08.2008, 18:44
Richtig wofür?

Grundsätzlich ist der Mega32 ein guter Allzweckcontroller mit meist genügenden Reserven.
Das ist einfach die Standartversion mit den 40 Beinchen..... also nix SMD

AlKI
28.08.2008, 19:18
Hi Wsk8,

der MC-Einstieg ist mit jedem AVR-Controller der ATMega-Familie im DIP-XX-Gehäuse Machbar.
Dieses Gehäuse ist für Bastler sehr gut verarbeitbar.
Ich selbst habe bisher ATMega8, 16 und 8515 benutzt, die ersten Zahlen stehen für den Programmspeicher, beim ATMega32 hast du mit 32KB Programmspeicher mehr als genug (ich hab noch nichtmal die 8K von ATMega8 und ATMega8515 vollbekommen, aber ich hab auch noch nichts "richtig" anspruchsvolles geproggt)


Allererste Versuche gehen recht gut auf Steckbrettern, die müssen auch nicht groß sein, Verändern ist auch supergut möglich, Löten wäre da nur nervig.


es gibt ISP-Dongles über den Paralellport(Druckerport), über den seriellen Port oder kaufbare für USB. Die Paralell und seriellprogrammer kann man sich selbstbauen (hab ich beide selbergebaut, Schaltpläne gibts im Netz, kannst mich aber auch fragen, hab sie glaub noch)

der Paralell-/Druckerport ist oft ne lange rosa Buchse. (weiblich, also der Stecker dazu muss Stifte haben)

serielle Anschlüsse haben dieselbe Größe wie ne VGA-Buchse ('alter' Monitoranschluss) nur sind sie Männlich, sprich die Kontakte sind Stifte, und die sind in 2 Reihen angeordnet.


Wenn du den Microcontroller bestellst (bei dem Preis tipp ich mal auf Reichelt oder so...) bestell gleich noch ein Steckbrett und Lochrasterplatinen mit (Streifenraster oder Punktraster, ich persönlich bevorzuge Punktraster und dann freie Verdrahtung, mit nem 3mm Metallbohrer kann man aber bei Streifenrasterplatinen sehr gut die Leiterbahnen unterbrechen)
dann noch nen Schalter + Stromversorgung (ich nutze z.B ne 4-fach Batteriehalterung mit 1,2V-Akkus und als 5V-Spannungsregler nen LM7805, alles total einfach zu verbauen)
nützlich sind auch passende Stecksockel für den Microcontroller, damit mman die nicht durch lötarbeiten beschädigen kann (sind zwar verdammt stabil, aber sicher ist sicher)
und die Bauteile für n Programmierdongle

und wennschon dennschon: ein paar weitere Microcontroller sind immer drin (1,50 bis 2,90), dann musst du nicht nachbestellen und weitere Versandkosten Zahlen. (am besten Verschiedene, wenn du dann ein kleines Projekt hast, benutzt du nen ATMega8 oder nen ATTiny23 /etc. , bei großen Projekten (großes Programm oder viele benötigte Anschlüsse) nimmst du dann nen ATMega16 oder 32 /etc.)


optional und recht brauchbar sind auch noch
- ein MAX232, eine SUB-D-9-Buchse und 2 1µF-Elektrolytkondensatoren um mit dem µC über die Serielle Schnittstelle zu kommunizieren (RS232)
- Taster
- Potentiometer
- LEDs + 250Ohm Vorwiderstände
- LCDs mit sonem kompatiblen Chip drauf, welcher das war, weiß ich grad nicht...
- was dir noch einfällt

Wsk8
29.08.2008, 17:24
Hallo ALKi.
erstmal danke für die vielen tipps!
Elektronische Bauteile wie LEDs, Vorwiderstände, Potis usw. besitze ich bereits, da ich schon länger kleine elektronische schaltungen baue. Jetzt möchte ich auch mit robotik anfangen(habe bereits einen asuro). Steckbrett und µC möchte ich mir bei reichelt noch besorgen, zusätzlich noch ein programmierkabel. Beim Aufbau von ersten kleinen schaltungen am Controler habe ich mich auch schon informiert. Ich weiß das der Controler verschiedene Anschlüsse hat (PC5,PC7,ICP usw.). Aber woher weiß ich was nun ein I/0 port oder ein PWM ist????
Und was ist ein MAX232???

AlKI
29.08.2008, 17:44
ein MAX232 ist ein Chip, der die 5V bzw 0V-Signale von dem µC in +15V bzw -15V Signale für die Serielle Schnittstelle vom PC konvertiert. und anderstherum macht ers natürlich auch.


Hast du mal einen Blick in das Datenblatt von irgendeinem AVR-Controller geworfen?

hier mal die am meisten genutzten Arten der Anschlüsse (einige sind verschieden/mehrfach nutzbar):

- P[Buchstabe][Zahl von 0 bis 7): ein einfacher digitaler I/O-Pin, gehört zu Port[Buchstabe]
Bsp: PA0 ist der erste Pin von Port A

- ADC[Zahl]: am Pin anliegende Spannung kann mit dem Analog-Digitalwandler in einen digitalen Wert 'gewandelt' werden (nur positiv mögl.)

- Aref (oft Vref genannt): Referenzspannung für den ADC, max. Betriebsspannung (+5V), Spannung an den ADC-Pins sollte nie höher werden. Es kann auch intern die Betriebsspannung als Referenzspannung (und glaub nochn bisschen mehr) eingestellt werden, dann kann der Pin eine andere Funktion übernehmen

- MISO, MOSI, SCK und RESET werden beim in system programming (ISP)gnutzt, ohne RESET, dafür mit SS(Slave Select) kann man mit ihnen einen seriellen Bus (übertragungsweg) realisieren.

- XTAL1 und XTAL2: will man einen externen Quartz nutzen, so muss man ihn hier anschließen (+2 Kondensatoren, geh ich jetzt nicht drauf ein)

- RXD und TXD (auch TX und RX oder TD und RD genannt): das sind die Anschlüsse, mit denen man über die serielle Schnittstelle mit dem PC kommunizieren kann. ich hab die auch bei LAN-fähigen ARMs gefunden, damit kann man wohl auch via LAN kommunizieren, bin mir nur nicht ganz sicher)

- OC[irgendwas]: das sind glaub die "PWM-Ausgänge", Output compare Match von Timern

markusj
29.08.2008, 18:51
Hi,

wenn du bestellst, nimm gleich noch ne Ladung 100nF Kerkos mit (zum entstören), davon nimmt man in der Regel je Schaltung alleine für den Atmel drei Stück (VCC-GND, AVCC-GND und AREF-GND).
Dann der grundlegende Tipp: Kauf dir ein gutes Buch und/oder lies dir das Datenblatt eines Atmels deiner Wahl (ein "dicker" hat mehr Funktionen, ergo "erschlägst" du gleich mehr Umfang) und lies es VOLLSTÄNDIG durch.
Die Datenblätter sind vollgepackt mit teilweise _sehr_ wichtigen Informationen.

mfG
Markus

Edit: Und bestell ein paar 16Mhz/20Mhz (für die neueren AVRs) Quarze mitsamt 22pf Kerkos, um die Atmels schneller als "nur" 8 Mhz betreiben zu können.

AlKI
29.08.2008, 20:11
ouuuuh, die 100nF-Kondensatoren hatte ich voher ganz vergessen, die sind wichtig!
(ob man gleich 3 nehmen will... bei anspruchsvollen Sachen wohl ganz gut, wenn man aber eh alle GNDs und VCCs direkt miteinander verbindet tuts auch einer)


Aja, wenn du dich dazu entscheidest, gleich auch ein Buch zu kaufen, kann ich dir "Microcomputertechnik mit controllern der Atmel AVR-RISC-Familie" von Günter Schmitt vom Oldenbourg-Verlag empfehlen...
(behandelte Programmiersprachen: C und Assembler, ist auch für Anfänger verständlich. Behandelt von kleinen ATTinys bis zum ATMega169 sehr viel, incl. Anwendungsbeispielen)

So, jetzt hast du die Qual der Wahl, was du alles kaufen willst.

Wsk8
30.08.2008, 14:15
Hallo,
kondensatoren will ich mir ein kleines sortiment kaufen da ich sonst immer wenn ich welche brauche die versandkosten zahlen muss. Müssen das kerKos. sein??? Gehen da elkos auch??? Wo bekommt man ein datenblatt zu einem µC? Beim asuro ist zwar eins für den mega8 dabei, aber das sind 300 seiten auf englisch wovon ich wahrscheinlich 90% nicht verstehen werde da es alles fachbegriffe sind.
Kann man einen mega32 auch mit 20 mhz betreiben? Ich dachte die sind immer auf eine speziele frequenz abgestimmt!

markusj
30.08.2008, 15:01
Der Mega32 wird offiziell nur bis 16Mhz unterstützt, es gibt aber deutlich "übertaktete" Varianten, du musst halt damit rechnen, dass mit steigender Frequenz nach und nach Elemente die Arbeit verweigern, als erster Kandidat wäre da der EEPROM zu nennen.

Elkos gehen NICHT, die sind als Abblockkondensatoren zu langsam.

Datenblätter bekommt man beim Hersteller, atmel.com
Und durch das Englisch wirst du dich durchkämpfen MÜSSEN, es gibt zwar gute Bücher für den Einstieg, aber die richtig Guten verweisen dich immer wieder ans Datenblatt!
Ohne das Datenblatt gelesen zu haben, kann ich dir garantieren, macht das ganze nur halb so viel Spaß, weil du in Stolperfallen rennst oder nützliche Funktionen nicht kennst.
Die Folge sind dann zwangsläufig nervige Fehler, wenn du dann ständig im Forum nachfragen musst, machst du dir und anderen keine Freude.

mfG
Markus

PS: dict.leo.org ist ein SEHR gutes Wörterbuch.

PPS:
Es gibt im Wiki diverse Buchtipps, ich selbst habe mir das "AVR-Microkontroller-Lehrbuch" von Roland Walter sowie "Programmieren mit BASCOM-AVR" von Klaus Kühnel geholt, OBWOHL ich in C-Programmiere.
Insbesondere das erste Buch verwendet anstelle der BASCOM-Helfer oftmals die Konfiguration durch die AVR-Register, man lernt eine Menge über die AVRs und was man mit ihnen machen kann.
Das letztere Buch ist mehr BASCOM-spezifisch, zeigt dafür aber eine ganze Menge interessanter Details über die AVR-Hardware, deren Funktionsweise und Möglichkeiten.

AlKI
31.08.2008, 10:29
es müssen nicht unbedingt kerkos sein, es können auch andere Schichtkondensatoren sein (Folienkondensatoren, zumindest bin ich mit denen bisher ganz zufrieden), aber keine Elkos, wie markusj schon dsagte.


die Datenblätter bekommst du afaik bei www.atmel.com , ich glaub im Wiki sind sie bei den einzelnen µC-Themen auch verlinkt.

ich hab anfangs auch nur 10% verstanden, das war vor nem Jahr. mitlerweile verstehe ich etwa 60%, und damit kommt man recht gut durch.
ansonsten ist mein Englisch/Deutsch-Übersetzungsprogramm (wortweise) immer zur Hand. damit hab ich bisher noch alles verstanden.


Was du vor allem aus dem/den Datenblatt/blättttern wissen musst, ist die Anschlussbelegung (Meist S.2)
Die meisten Funktionen sind eh standarisiert und du kannst sie auf jedem AVR mit der Funktion genau gleich anwenden.


PS: ATMegas haben intern einstellbare Taktraten von 1, 2, 4 und 8MHz, man kann aber (offiziell) jeden Quarz bis 16MHz dranhängen, die Frequenz muss halt im Programmcode berücksichtigt werden.

Bauteiltöter
31.08.2008, 13:16
hi,
einen guten bascom-Kurs gibt es heri: www.halvar.at
Mit diesem Kurs habe ich auch angefangen.

MfG

Wsk8
31.08.2008, 14:25
Hallo,
habe mir den bascom kurs angesehen und dabei festgestellt das bei der analogen stromversorgung des atmega8 eine induktivität (10µH) eingebaut ist. Diese soll den µC schützen. Was bewirkt dies genau und wie funktioniert es??

Christopher1
31.08.2008, 15:45
Die Spule bewirkt, dass die Messungen genauer werden und Störungen minimiert werden.
http://www.kreatives-chaos.com/artikel/avr-grundschaltungen

Wsk8
02.09.2008, 17:20
Hallo,
habe nun noch ein paar fragen zu der Software!

1.Bascom kann man sich als demo kostenlos downloaden (oder??).

Wo??

zerush
02.09.2008, 18:20
Die Frage hättest du schneller beantwortet, wenn du google benutzt hättest oder ins RN-Wissen geschaut hättest.

Beides führt nach hier (http://www.mcselec.com/index.php?option=com_docman&task=cat_view&gid=99&Itemid=54).

mfg
Thomas

AlKI
02.09.2008, 22:13
@ Wsk8:

bitte lies dir mal das hier durch:

https://www.roboternetz.de/wissen/index.php/AVR-Einstieg_leicht_gemacht

das wird dir sehr helfen!!!


und guck ruhig öfter im RN-Wiki nach, da findest du ne menge Antworten. Auch wenn du nicht recht weisst, wie du fragen musst, um die richtige antwort zu bekommen.


Viel Spass und gutes Gelingen!

Wsk8
06.09.2008, 18:46
Habe mir die Anschlussbelung für einen µC angesehen.
Und bei den I/O ports steht das es z.B. 8 bit bi directional sind.
Was bedeuten die bits???
Hat das was mit der Auflösung bei zu tun???

AlKI
06.09.2008, 19:01
bidirektional bedeutet, dass sie sowohl als Ein- als auch als Ausgang benutzt werden können.

die kleinste Dateneinheit eines digitalen Bausteins (auch bei allem im PC) ist ein Bit. es kann nur zwei Zustände einnehmen: 1 und 0.
8 Bits bilden ein Byte, damit kann man binär die Zahlen von 0 bis 255 anzeigen (0 bis (2^8)-1, also 2^8 verschiedene Zustände)


jeder deiner Ports hat im MC ein Byte Speicherplatz, dessen Inhalt er 'anzeigt', wenn er als AUSGANG benutzt wird.

jeder dieser Ports hat auch ein Byte Speicherplatz, welches den Zustand des Ports einnimmt, wenn er als EINGANG benutzt wird.
(dabei kann man bei den AVR-MCs noch das "Ausgangsregister" benutzen, um Pullup-widerstände einzuschalten)

Wenn du z.B. Port A als eingang deklarierst, an die Pins PA0 bis PA3 +5V anlegst, und an die Pins PA4 bis PA7 GND, dann sieht dein "Eingangsregister" so aus:
00001111 (Binär) = 0*128 + 0*64 + 0*32 + 0*16 + 1*8 + 1*4 + 1*2 +1*1 =8+4+2+1 =15 (dezimal)

PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0
------- GND ------- | ------- +5V--------
0 --- 0 --- 0 --- 0 --- 1 --- 1 --- 1 --- 1


würdest du den Wert in das "Ausgangsregister" schreiben, würde der Port die Werte so annehmen (wenn er als Ausgang eingestellt ist)


Du siehst: jeder Pin hat ein Bit, dessen Zustand er einnimmt wenn er Ausgan ist, und ein Bit, auf das er seinen Zustand schreibt, wenn er Eingang ist.

du kannst die Pins mit C und BASCOM auch einzeln zu nem Ausgang oder Eingang machen, unabhängig von den anderen Pins des Ports.



EDIT: ich hab noch was verbessert und dazugeschrieben!
EDIT2: noch die Rechnung

Wsk8
12.09.2008, 14:47
wenn man ein programm in den mikrocontroller übertragen möchte, ist das dann wie beim asuro das man ein paar sekunden nach dem einschalten hat oder ist das immer möglich?

AlKI
12.09.2008, 14:54
da du hier einen anderen Übertragungsweg hast, ist das immer möglich.

Du programmierst über die ISP-Schnittstelle, dabei wird der RESET-Anschluss benützt.
Durch den kann die Programmiersoftware die normale Arbeitsweise vom µC ab-/unterbrechen und ihn programmieren.
Solange der µC angeschlossen ist, kannst du ihn programmieren.

Wsk8
12.09.2008, 15:00
habe mir (damit ich später ein wenig experimentieren kann) einen attiny45 noch gekauft. habe leider erst später festgestellt das er 20 mhz benötigt. Man kann ihn auch mit weniger betreiben oder?? (das ist bei jedem der µC der Fall oder?????)

AlKI
12.09.2008, 15:11
Ja,man kann ihn auch mit weniger betreiben, wie alle anderen AVRs auch.

UND: er hat, wie glaub auch alle anderen AVR-Microcontroller einen EINGEBAUTEN Oszillator, der mit 1, 2, 4 oder 8MHz schwingen kann (das wird über die Fusebits eingestellt)


Mit externen Oszillatoren kannst du fast jede beliebige Taktrate kleinergleich 20MHz nehmen, zu niedrige Taktraten (irgendwo im Kilohertz-Bereich) lassen den MC eventuell seine flüchtigen Daten "vergessen", zu hohe Taktraten lassen ihn instabil laufen.

Wsk8
18.09.2008, 17:41
habe jetzt das erste mal versucht dieses programm zu übertragen:

$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000

Config Portc.0 = Output 'Ein Pin wird als Ausgang konfiguriert PC0 (also Pin0 von Port C)

Do
Portc.0 = 1 'Pin wird auf High, also 5V geschaltet
Waitms 100
Portc.0 = 0 'Pin wird auf Low, also 0V geschaltet
Waitms 100
Loop

End


beim übertragen kamen diese fehlermeldungen:

Could not identify chip with ID:FFFFFF

Selected chip and target chip do not match AT90S1200 <> ATMEGA 32

dann kommt das fenster zum programm übertragen, wenn man auf programm übertragen klickt passiert nichts.

kann mir jemand helfen?????????

Wsk8
18.09.2008, 18:37
habe die schaltung nochmal neu aufgebaut; jetzt geht alles!
Wollte jetzt das quarz einstellen damit dies verwendet wird, aber ich habe eine neuere version von bascom und da ist einiges anders. Dort gibt es mindestens 20 einstellungen für das quarz, teilweise sind mhz angegeben aber max. 12, 16 finde ich nicht.(für mega32) kann mir da jemand helfen???

Wsk8
22.09.2008, 14:36
Kann mir bitte jemand sagen wie ich das quarz einstelle(welche auswahl bei lock and fuse bits??) und wenn man ein servo über ein pwm signal steuert, wie schalte ich das signal ab wenn das servo die entsprechende Position erreicht hat???

Danke.

hosti
22.09.2008, 14:39
Hast du dir die Fusebits schonmal angesehen? Ist relativ selbst erklärend.

servo die entsprechende Position erreicht hat....
Gar nicht, der Servo braucht das Signal ständig um die Position zu halten.

Wsk8
23.09.2008, 13:44
die fusebits sind teils selbsterklärend (bis 12 mhz) dann wirds für mich unübersichtlich! Ist diese einstellung bei 16 mhz richtig??:
111111:Ext:Crystal/Resonator High Freg;Start-up time:16 K CK + 64ms;[CKSEL = 1111 SUT = 11]

Kann mir auch jemand sagen wie man die ADCs ansteuert. Im RN-wissen verstehe ich das nicht ganz. Wie würde in bascom ein programm aussehen wo man eine variable (z.B. a) hat wo der aktuelle wert gespeichert wird! (bei 10 bit also 0-1024) (teilungsfaktor 16)
Und wenn man als Betriebsmodi Free running möchte, muss man in bascom dann Free angeben????
Wenn man mehrere größen zu berechnen hat gibt es ja den multiplexer, muss der extra im programm angesteuert werden oder geht das automatisch??

mfg wsk8

Wsk8
25.09.2008, 14:09
Kann mir bitte jemand helfen?????
Bin leider noch anfänger!! :-(

AlKI
25.09.2008, 19:03
zu dem ADC:

zuerst musst du ihn initialisieren, z.B. so:

Config Adc = Single , Prescaler = 64 . Reference = Avcc

Start Adc

das "= single" bedeutet, dass er nur bei 'Abruf' den Wert eines bestimmten ADC-Eingangs umwandelt. (der andere modus lässt ihn das dauernd machen)

prescaler ist der vorteiler vom Clock-Takt, der ADC braucht eine Wandlerfrequenz die in einem bestimmten Bereich liegt.
Laut dem Datenblatt liegt die beim ATMega32 bei 50-200kHz für maximale Auflösung (10 Bit).
schau also, mit welchem (ganzzahligen) Teiler deines Clock-Taktes du möglichst nah unter 200kHz kommst.

die Reference (Referenzspannung, also Vergleichsspannung) ist hier "Avcc", also die Betriebsspannung (meist 5V)
Referenz kann aber auch Vref und anderes sein, ich kenn mich da nicht mehr so gut aus (auf C umgestiegen)
wenn am ADC-Pin eine der Referenzspannung gleiche Spannung anliegt, wird der höchste Wert ausgegeben ( 2^8 bzw hier 2^10). bei einer der Masse (GND) gleichen spannung wird 0 ausgegeben. bei negativen Spannungen (gegenüber GND) wird glaub entweder 0 ausgegeben oder der ADC geht kaputt.

mit "start ADC" wird der ADC zur Benutzung freigegeben


abfragen kannst du einen ADC-Pin "x" mit

Variable = getadc(x)

also z.B. den ADC3 mit

Variable = getadc(3)

========================================

Zu den Fusebits:

a: selbst wenn die den Takt betreffenden Fusebits falsch eingestellt sind, kannst du sie per ISP immer ändern!!! also keine angst mit diesen Fusebits!

b: solte so passen, probier es einfach aus!

Wsk8
26.09.2008, 12:55
@ ALKI

war schon sehr hilfreich!!!!!!
Wenn ich jetzt statt single den anderen modus möchte (laut rn wissen free running) was muss ich da schreiben (free o. ähnliches funkt. nicht)

Das Quarz schließe ich nach rn wissen an ( 2 x 22pf kondensatoren) habe jetzt schon (da ich jetzt weiß das man es immer umstellen kann) ganz viele einstellungen probiert mit high freg. Leider kommt nach dem ich ein programm geflasht habe eine fehlermeldung und am µC tut sich nichts???

mfg Wsk8

AlKI
26.09.2008, 16:18
was kommt denn für ne Meldung?

was du für free running eingeben musst, kA...


du hast die 2 22pf-Kondensatoren gegen GND geschaltet? (ein Anschluss an Quartz und XTAL-Anschluss, der andere an GND?)

Besserwessi
26.09.2008, 17:34
Bevor man das programm übertragen kann sollte der Controller auch erkannt werden. Wenn der Controller nicht reichtig erkannt wird, kann auch kein Programm übertragen werden. Solange das Programmieren nicht zuverlässig geht sollte man an den Fuses nichts ändern.
Eine Chips ID von 000000 oder FFFFFF deutet auf eine Problem mit dem Programmierer oder der Schaltung hin. was ist das für ein Programmer und was für ein Board / Schaltung ?.

Wsk8
28.09.2008, 10:42
hallo.
der controller wird erkannt!! Ich habe auch schon viele programme übertragen, funktionieren einwandfrei! nur laufen diese programme mit dem int. taktgenerator(1mhz). Wenn ich dann das quarz ändere (bei den fusebits) kommt nach dem flashen diese fehlermeldung: Differnce at 00080 (bei anderen einstellungen auch 00078)

P.S. das mit der chip id ffffff und so habe ich schon behoben, hatte einen schaltungsfehler, bei neuaufbau klappte alles!
Ich verwende einen isp dongle
und als board ein steckbrett wo ich alles selbst aufbaue!

AlKI
28.09.2008, 11:52
dann gibt es evtl Übertragungsfehler...


zeig mal deinen Programmcode, evtl gibts da n Problem.

Wsk8
28.09.2008, 14:22
wenn ich den internen taktgenerator (1 mhz) benutze funkt. alles.
wenn ich den taktgenerator auf ext. 16 mhz umstelle dann funkt. nichts mehr!! (controller ist wie tot)!!!

Wsk8
29.09.2008, 20:35
Hab gerade versucht meinen mega 32 mit 8 mhz zu betreiben

ERGEBNIS: Meinen 1. mega 32 geschrottet!!!!!!!!!!! ](*,)

markusj
29.09.2008, 21:16
Bei den Fuses bitte immer zweimal hinsehen ... und dran denken, je nach Programm kann gesetzt = nicht gesetzt bedeuten ... neben der Tatsache dass Fuses mit "0" gesetzt sind ... um das ganze noch mehr zu verwirren ;)

mfG
Markus

Besserwessi
29.09.2008, 21:17
Bei 8 mHz tut eine Kontroller auch wirklich nicht viel. Das sind rund 2 Minuten pro Befehl !

Spass beiseite, es sind wohl 8 MHz gemeint. Wenn man auf externen Takt einstellt, sollte man auch einen externen Takt anlegen, und nicht nur einen externen Resonator (oder quarz). Wenn man einen externen Takt anlegt wird man den Mega32 wohl auch Wiederbeleben können.

Wsk8
30.09.2008, 14:07
Hallo Besserwessi,
was genau verstehst du unter externen takt????
ich hatte ein 8 MHz quarz mit 2x22pf kerkos angeschlossen.
Wenn ich jetzt eine verbindung herstellen möchte wird der controller nicht mehr erkannt( mit anderm controller geht alles). auch das letzte programm das ich draufgeflasht habe funkt nicht mehr. Der controller gibt keine lebenszeichen!!!!!!!!!!

Besserwessi
30.09.2008, 18:17
Ein externer Takt ist ein extern gesteuertes Rechtecksingal wie es z.B. von einem Ne555 (sehr langsam) oder einem Quarz oszillator (Blechkasten mit meit 4 Pins) geleifert wird.
Der quarz mit den Kondensatoren ist halt nur ein externer Resonator, da wird nichts gehen. Ohne Takt geht beim Controller so gut wie nichts, außer vielleicht HVPP Programmierung.

Einen externen Takt kann man einfach an den XTAL1 pin anlegen. Ab quellen käme ein Quarz Oszillator Baustein, an µC mit passendem Programm/Ausgang oder ganz langsam ein NE555 mit passender Schaltung in Frage. Am einfachsten wäre wohl eine relativ langsamer Oszillatorbaustein (z.B. 1-2 MHz). Dann sollte der Controller auch wider reagieren.

Noch eine Frage, wo sollte man noch die Warnung hinschreiben, das eine externer oszillator auch wirklich eine externer oszillator sien muß.

Wsk8
30.09.2008, 19:58
Wenn ich an den Controller einen takt anlege funktioniert er wieder soweit ich verstanden habe.
Aber wie schaffe ich es einen controller mit einem externen quarz zu betreiben. Bei Bascom habe ich als einstellmöglichkeiten ext. RC Osc. xxx Mhz und ext. Crystal/Resonator xxx Freq.

xxx Crystal/Resonator habe ich schon einige versucht; ohne erfolg, controller stellt sich tot, man kann aber wieder auf ihn zugreifen und den int. RC Osc. wieder einstellen worauf er wieder geht.
ext. RC Osc. habe ich jetzt ausprobiert => ergebnis war eben mega 32 ("geschrottet").

Wsk8
09.10.2008, 14:29
Also, das quarz funktioniert jetzt.
Jetzt möchte ich die rs 232 schnittstelle benutzen um Daten zu übertragen.
Dazu benötigt man ja einen MAX232 CPE. Ich habe nur einen MAX232 EPE! Funkt. der auch?
Wie genau muss ich das 3polige kabel an die/den Sub 9 buchse/stecker anschließen??

markusj
09.10.2008, 15:02
Zu Frage eins: Datenblätter vergleichen. Vermutlich gibt es Unterschiede bezüglich der Kondensatorgrößen.
Zu Frage zwei: Die Pinbelegung RS232 bei Sub-D9 findest du auf Wikipedia. Wie du die Pins an deinem dreipoligen Kabel nutzt, weiß ich nicht, du kannst aber anhand der Belegung am Max232 erkennen, was eingehende Signale (Sprich Signalausgang PC, also TXD), und was ausgehnde (Also Signaleingang PC, RXD) sind.
Als dritte Leitung hast du Masse, das wird wohl nicht schwer zu identifizieren sein.

mfG
Markus

AlKI
09.10.2008, 16:56
Der unterschider ist nur folgendes: deiner (der EPE) kann von -40°C bis +85°C arbeiten, ein CPE nur von 0°C bis 70°C.

deiner ist stabiler.


siehe Hier: http://www.datasheetcatalog.org/datasheets2/45/453523_1.pdf
(erste seite)

Wsk8
13.10.2008, 16:13
Die RS 232 schnittstelle funkt. jetzt auch.
Kann mir vielleicht jemand tipps oder anregungen geben wie man die batteriespannung in bascom bei einem avr ausgibt.
Und wie genau funkt. der Befehl Read über rs232? Im rn-wissen verstehe ich das nicht ganz.

mfg Wsk8

Wsk8
03.11.2008, 18:20
Hallo,
hab jetzt rumprobiert und einige probleme lösen können.
Jetzt will ich Daten wie beim asuro über IR übertragen. Habe dazu ein IR Empfangsmodul (36khz) und IR sendediode.
Leider konnte ich bisher noch nicht herausfinden wie ich daten zum controller übertrage und zurück. Muss ich da den UART benutzen?

Beim Empfangsmodul bin ich mir auch bei den Anschlüssen noch nicht sicher. Es gibt GND(das ist klar), Vs und Vo.
Ist Vs + und Vo out?

wer weiß rat???

mfg

oberallgeier
03.11.2008, 19:11
Vielleicht nimmst Du Dir dazu den Schaltplan vom asuro zu Hilfe, dort ist das so gezeigt, dass Du es sicher verstehst - und vielleicht dazu noch die Suchfunktion nehmen - dann wirds klappen. Der asuro-Schaltplan steht in der Bau- und Bedienungsanleitung und ist hier verfügbar. (http://www.arexx.com/downloads/asuro/asuro_manual_de.pdf)

AlKI
03.11.2008, 19:25
du hast EINE Sendediode und EIN Empfangsmodul?

dann wirst du die Daten auch nur in EINE Richtugn senden können.


ist bei der Sendediode schon eine Modulation(/-sschaltung) dabei (für die 36kHz)?


Vs wird wohl die Supplyvoltage sein, also die Versorgungsspannung (ob positiv -> kA => Datenblatt), und Vo der Ausgang. Gibts für das ding n Datenblatt? ( Suche evtl. da: www.datasheetcatalog.com )

HannoHupmann
03.11.2008, 22:55
Ich vermute ein ganz anderes Problem. Eine IR Led lässt sich sehr leicht zum blinken bringen (auch wenn es nicht sichtbar ist) aber die Empfangsdiode (allein) wird kein Digitalsignal liefer sondern eine Spannung zwischen 0 und X je nach dem wie stark das IR Signal ist. Daraus lässt sich aber mit einer kleinen Schaltung ein Digitalsignal basteln und damit dann ein µC ansteuern in der Theorie.

Wsk8
04.11.2008, 14:04
Also,...
ich habe jeweils 2 empfänger und sender
am controller schließe ich sie wie beim asuro an.
Mir gehts vor allem um die SOFTWARE in Bascom.

Empfänger: TSOP 1736

1. link: http://www.conrad.de/goto.php?artikel=171069
2. link: IR-EMPFÄNGER-MODUL TSOP1736 = 4736 (Conrad Electronic) (http://www.conrad.de/goto.php?artikel=171069)

Mein ziel ist es den Controller Fernzusteuern so wie beim asuro eben und dieser empfänger müsste ja sehr genau sein.

mfg

Wsk8
04.11.2008, 19:07
Nochmal zum Verständnis:

Ich möchte an einen µC eine IR-Sendediode anschließen und an einen anderen ein IR-Empfangsmodul. Bei Tastendruck oder so soll ein Zeichen/Wort usw. über die IRdiode gesendet werden,über das IR-Empfangsmodul zum controller weitergeleitet werden, in einer variablen gespeichert werden damit es ausgewertet werden kann. Z.B. if A = 1 then (Anweißung 1 ) usw.
Wie funkt. das in Bascom?

mfg

AlKI
04.11.2008, 21:33
du könntest das Zeichen über RS232 senden (Pin TX bzw TXD) und vom PC/nem anderen µC empfangen (Pin/Leitung RX bzw RXD).

mit BASCOM kann ich dir leider nur bedingt weiterhelfen, ich programmiere mittlerweile nur noch in C. Ja, verlernen geht wirklich. leider.

aber mit
dim var as int ' Variable var initialisiert (muss ja sein)

var = 5 ' mal nen Wert zugewiesen, ist int, weil nur Bytes übertragen werden können (bin aber nicht sooo sicher grad)
Print var ' sendet den Wert der Variablen "var" über RS232 (!wird vom Terminalprogramm evtl als ASCII-character aufgefasst!)

Print "a" ' sendet den ASCII-Wert von dem Zeichen "a" über RS232

Print 123 ' sendet die Zahl 123 (!wird vom Terminalprogramm evtl als ASCII-character aufgefasst!) die Zahl sollte ein Byte groß sein (kA, dachte so...)

Print "Hallo du da!" ' sendet nacheinander die ASCII-werte der einzelnen Zeichen => Terminal zeigt den Text (string) an

wie man empfängt weiß ich leider nicht...
man kann auch mehrere Sachen direkt hintereinander mit "Print" senden. weiß nur nicht wie.
Wie man sachen empfängt weiß ich nicht.

Wsk8
05.11.2008, 11:27
Senden über RS232 kann ich schon.
Habe hier den code der beim Asuro für die IR-Komunikation genutzt wird. Leider reichen meine C kenntnisse nicht aus um das zu entziffern.
Könntet ihr das vlt. übersetzen, dann kann ich evtl. selbst einen code in bascom schreiben.

volatile unsigned char count72kHz;

/* uses timer2 (36kHz for IR communication */
/* counts falling and rising edge => 36kHz*2 = 72kHz */
SIGNAL (SIG_OUTPUT_COMPARE2)
{
count72kHz ++;
}

/* Init function Processor will be initalized to work correctly */
void Init (void)
{
//-------- seriell interface programmed in boot routine and already running -------
// prepare 36kHz for IR - Communication
TCCR2 = (1 << WGM21) | (1 << COM20) | (1 << CS20);
OCR2 = 0x6E; // 36kHz @8MHz
TIMSK |= (1 << OCIE2); // 36kHz counter for sleep

// prepare RS232
UCSRA = 0x00;
UCSRB = 0x00;
UCSRC = 0x86; // No Parity | 1 Stop Bit | 8 Data Bit
UBRRL = 0xCF; // 2400bps @ 8.00MHz

mfg

AlKI
05.11.2008, 14:25
Das ist das, was das "$baud =..." macht.

das stellt die Hardware für die Schnittstelle ein.

ich könnt jetzt nachlesen, was das alles für Bits sind, die da gesetzt werden / Bytes die was steuern.

oberallgeier
05.11.2008, 15:13
... code der beim Asuro für die IR-Komunikation ... übersetzen ...Nimm Dir einfach die Dokumentation für den asuro-Controller, sprich für den ATMega8 (http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf). Dort sind praktisch alle diese Dinge wie WGM21 beschrieben. Damit verstehst Du dann nicht nur, was das tut, sondern was es noch für Möglichkeiten gibt. Die Darstellungen in den Dokumentationen sind sehr gut und ausführlich. Sind ja auch blos 308 Seiten (durch die viele hier durch sind), aber Du musst für die Schnittstelle nicht alle lesen *ggggg*.

Wsk8
20.11.2008, 14:54
Hallo,
habe wieder weiterexperimentiert und konnte 2 Probleme bis jetzt nicht lösen.

1. Wenn ich den Befehl INPUT verwende um Zahlen zu empfangen und dann eine Zahl im Hyperterminal eingebe, bleibt dieses für 5 sec hängen(es rührt sich nichts mehr. Man kann auch keine Zahlen oder so eingeben) und danach läuft es weiter als wäre nichts gewesen und der µC macht keinerlei anzeichen, dass er dieses Zeichen empfangen hat. ( Ich arbeite über die rs232 schnittstelle mit einem max232)

2. Ich habe ein 1x16 lcd.
Wenn ich aber mehr als 8 Zeichen eingebe z.B. 123456789 dann werden nur die ersten 8 angezeigt (12345678).
??????

Ist es möglich mit einem avr den Bildschirm eines nintendo ds anzusteuern(grafisch) oder reicht die leistung nicht aus??

mfg

Wsk8
02.12.2008, 15:45
Hallo,
arbeite gerade an einem Projekt. Dabei wird ein µC mit einer 6V Batterie versorgt( Diode für Spannungsabfall dazwischen). Der Akku wird dabei von Solarzellen geladen. Das Problem ist, dass die Solarzellen bei guter Sonneneinstrahlung schon mal 10V bringen. Aber das würde ja den µC zerstören der auch direkt an der Batterie angeschlossen ist!!

Wie kann man das am besten machen das der µC weiterhin seine 6V bekommt (oder ein bisschen weniger). Weiß jemand gute tipps für die Ladeelektronik?????

danke

mfg

AlKI
02.12.2008, 16:24
nimm einen L7805 (wird auch L78S05 oder 7805 o.ä. genannt, ist aber der selbe)
das ist ein 5V-Spannungsregler (darum das "05", gibts auch als 6; 8; 9; 12; 15; 18; 20 und 24-V-Version)
Hält bis zu 1A Strom aus, und du brauchst keine Diode mehr. regelt die Spannung aus einer Speisespannug von 6 bis 35V
Hat drei Anschlüsse:

- GND (- der Batterie und der Ladeschaltung, und GND der µC-Schaltung)
- Input (+ der Batterie und der Ladeschaltung)
- Output (+5V Versorgungsspannung für die µC-Schaltung)

das Ding kostet auch nicht so viel, bei mir liegen auch immer welche rum.


zu deinem etwas älteren posting:

wegen den 8 zeichen statt 16: weiß dein compiler, dass du ein 2*16-LCD hast?

Wsk8
02.12.2008, 16:41
Den L7805 kenn ich schon (benutze ich auf meinem steckbrett)
Aber das Probelm ist, dass der erst korrekt bei einem Spannungsüberschuss von ung. 2V arbeitet ( bei meinen 6V werden anstatt 4.95V bloß 4.88V angezeigt und wenn der Akku leer wird, wird der unterschied noch größer wodurch ich keine korrekte Spannungsmessung durchführen kann

mfg

oberallgeier
02.12.2008, 19:20
Hi Wsk8,

ich habe für sparsame Schaltungen einen LDO (Low Drop), den LP2950; es gibt auch andere Typen. Der arbeitet mit einem geringen Spannungsabfall von 0,5 V oder weniger und arbeitet bei mir mit < 150 mA (laut Datenblatt <100 mA). Spannungsabfälle am Eingang bis deutlich unter 5 V waren für den noch nie ein Problem (aber ich kenne nicht die untere Grenze), und nach oben steht im Datenblatt (müsste mal nachsehen) soweit ich weiß 30 V.

Wsk8
12.12.2008, 14:49
Hi,
will nun anfangen in C zu programmieren.
Habe den GNU GCC Compiler hier gefunden: http://sourceforge.net/projects/winavr/
Kann man den kostenlos downloaden und nutzen?

mfg

oberallgeier
12.12.2008, 15:31
... Kann man den kostenlos downloaden und nutzen? ... Kann man, darf man.

Wsk8
19.12.2008, 13:53
Hallo,
wenn ich make all ausführe kommt bei mir immer diese Fehlermeldung:
-------- begin --------
avr-gcc (WinAVR 20081205) 4.3.2
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

make.exe: *** No rule to make target `main.elf', needed by `elf'. Stop.

> Process Exit Code: 2
> Time Taken: 00:01

Die Datei habe ich da gespeichert wo auch das makefile drin ist.

Zudem habe ich ein Problem mit dem L293D.
Wenn ich einen kleinen Solarmotor anschließe funkt. er perfekt.
Aber bei einem motor wie z.B. vom Asuro kommen nur Pieplaute zum Vorschein und nach ein paar Sekunden ist der µC auch Tot. Muss ihn dann kurz ausschalten und das Spiel geht von vorn los.
Zudem wird der 7805 (1A) Spannungsregler ziemlich heiss.Der L293 der bloß 0,6A aushält bleibt hingegen kalt.

mfg

AlKI
19.12.2008, 15:06
ist im makefile auch der name von der datei richtig? ohne".c"?
hatte das problem auch mal.
wie sieht denn dein makefile aus?

oberallgeier
19.12.2008, 15:32
Über fast ein Jahr, seit ich mit AVR´s, Assembler und C anfing, hatte ich alle meine Programme im AVRStudio compiliert, ohne mich um ein makefile zu kümmern - ich hatte einfach die Standardeinstellung genommen. Das ging IMMER wunderbar.

Wsk8
23.01.2009, 14:28
Hi,
an meinem neuen pc gibts keinen Druckerport mehr. Will jetzt auf usb umsteigen. Eignet sich hierfür der mySmartUSB MK3?

http://www.conrad.de/goto.php?artikel=191268

Welche Einstellungen muss ich hierfür in Bascom vornehmen? ( stk500??)

mfg