Hallo ;-) Dies ist mein erster Beitrag in diesem Forum. Da ich mich für das Thema Elektronik sehr interessiere, habe ich mich in die Programmierung von Mikrocontrollern etwas eingelesen. ich habe folgendes vor: ich habe hier ein 4x16 Dot LCD rum liegen und möchte es mit einem ATmega32 ansteuern. Da ich VB.net gelernt habe, möchte ich den Mikrocontroller mit Bascom programmieren. ich habe mir diese Seite hier (http://www.mschrod.de/Elektronik/AVR/Atmega%20Allgemein/Display/Display.htm)durchgelesen und stehe jetzt vor ein paar Problemen. 1. Brauche ich für den ATmega einen externen Quarz? 2. Das Programmieren geschieht ja über den ISP Port. Kann ich mit solch einem Adapter (http://www.mikrocontroller.net/attachment/19111/AVR_ISP_Ser.jpg) den ATmega flashen?(Per USB-to-serial Adapter) 3. Ich habe gelesen, das für das programmieren über den Seriellen Port ein "Bootloader" benötigt wird. Braucht man den? 4. Könnte man den ATmega auch über den Parallelport programmieren? (dazu müsste ich meinen alten rechner wieder ausgraben...) USB-programmer sind mir leider zu teuer :-) Das waren für's erste alle fragen, da kommen mit Sicherheit aber noch mehr ;-) Danke im Voraus
Einmal die Woche die selbe leier... > 1. Brauche ich für den ATmega einen externen Quarz? wenn es kein atmega8U2 ist: nein. > 2. Das Programmieren geschieht ja über den ISP Port. Kann ich mit solch > einem Adapter > (http://www.mikrocontroller.net/attachment/19111/AV...) den > ATmega flashen?(Per USB-to-serial Adapter) ja. > 3. Ich habe gelesen, das für das programmieren über den Seriellen Port > ein "Bootloader" benötigt wird. Braucht man den? ja. > 4. Könnte man den ATmega auch über den Parallelport programmieren? (dazu > müsste ich meinen alten rechner wieder ausgraben...) > USB-programmer sind mir leider zu teuer :-) http://www.ehajo.de/Bausaetze/AVR-ISP-Stick 6,90€
>> 3. Ich habe gelesen, das für das programmieren über den Seriellen Port >> ein "Bootloader" benötigt wird. Braucht man den? > > ja. Und wie bekomme ich den auf den Atmega (sorry, aber ich bin blutiger Anfänger) > http://www.ehajo.de/Bausaetze/AVR-ISP-Stick > 6,90€ SMD-Bauteile kann ich leider nicht löten. Edit: Oh, es gibt den ISP Adapter ja auch schon fertig: http://www.ehajo.de/Bausaetze/AVR-ISP-Stick-Set?source=2&refertype=1&referid=5
Luca Engelmann schrieb: > Und wie bekomme ich den auf den Atmega (sorry, aber ich bin blutiger > Anfänger) Du brauchst erstmal auf jeden Fall einen ISP-Programmer. Ein Bootloader ist ein kleines Progrämmchen im µC, der es erlaubt, Teile des Flash-Inhaltes über eine Schnittstelle zu programmieren. Wenn Du einen komplett leeren µC hast, ist kein Bootloader drinn, also brauchst Du auf jeden Fall den ISP-Programmer, um den Bootloader reinzuflashen. Der Sinn des Bootloaders ist hauptsächlich, Geräte im Feld ohne spezielle Hardware (wie ISP-Programmer) updaten zu können. Für Dich als Anfänger ist ein Bootloader erstmal unwichtig, da Du eh einen ISP-Programmer brauchen wirst.
>> 3. Ich habe gelesen, das für das programmieren über den Seriellen Port >> ein "Bootloader" benötigt wird. Braucht man den? > ja. Vorsicht - ich glaube nicht, dass der TE den seriellen Port des uC meint. Der oben angegebene Programmer (serieller Port am PC, ISP Port am uC) funktioniert ohne Bootloader. Ob er mit einem USB-Serial Adapter zuverlässig funktioniert, kommt aber auf den Adapter an - da gibt es m.E. bei einigen Schwierigkeiten wg. dem Timing.
> gugst Du : "ISP USB Programmer" bei Ihbääh http://www.ebay.de/itm/ISP-USB-Programmer-fur-AVR-Atmel-Tiny-Mega-/230832398010?pt=Wissenschaftliche_Ger%C3%A4te&hash=item35beaedeba#ht_3338wt_1139 der z.B.? Dort steht "[...]er kann aber auch direkt und unkompliziert aus dem AVR-Studio oder auch mit BASCOM und anderen Entwicklungsumgebungen genutzt werden[...]" Heißt das ich kann aus BASCOM-AVR heraus den Atmega flashen? Edit: > Vorsicht - ich glaube nicht, dass der TE den seriellen Port des uC > meint. Der oben angegebene Programmer (serieller Port am PC, ISP Port am > uC) funktioniert ohne Bootloader. > > Ob er mit einem USB-Serial Adapter zuverlässig funktioniert, kommt aber > auf den Adapter an - da gibt es m.E. bei einigen Schwierigkeiten wg. dem > Timing. Ich meinte den Seriellen Port des PCs. Das heißt ich kann ohne Bootloader mit dem USB-ISP programmer von ihbähh den Atmega flashen?
Luca Engelmann schrieb: > Das heißt ich kann ohne > Bootloader mit dem USB-ISP programmer von ihbähh den Atmega flashen? Wozu hab ich wohl oben meine Antwort geschrieben?
> Wozu hab ich wohl oben meine Antwort geschrieben? Steffen schrieb: > Vorsicht - ich glaube nicht, dass der TE den seriellen Port des uC > meint. Der oben angegebene Programmer (serieller Port am PC, ISP Port am > uC) funktioniert ohne Bootloader. > > Ob er mit einem USB-Serial Adapter zuverlässig funktioniert, kommt aber > auf den Adapter an - da gibt es m.E. bei einigen Schwierigkeiten wg. dem > Timing.
> Ich meinte den Seriellen Port des PCs. Das heißt ich kann ohne > Bootloader mit dem USB-ISP programmer von ihbähh den Atmega flashen? Jawohl - so ist es richtig. Nur, wenn du über die serielle Schnittstelle des ATmega (USART, TX/TX Pins) den Controller flashen willst, dann brauchst du einen Bootloader, den man nur über den ISP Programmer in den uC bekommt.
Luca Engelmann schrieb: > 4. Könnte man den ATmega auch über den Parallelport programmieren? (dazu > müsste ich meinen alten rechner wieder ausgraben...) > USB-programmer sind mir leider zu teuer :-) http://www.mikrocontroller.net/articles/STK200
> http://www.mikrocontroller.net/articles/STK200 Damit würde es funktionieren? Funktioniert es auch mit dem USB-ISP Programmer von eBay oder dem hier von Reichelt (http://www.reichelt.de/Programmer-Entwicklungstools/DIAMEX-USB-ISP/3//index.html?ACTION=3&GROUPID=2969&ARTICLE=110344&SHOW=1&START=0&OFFSET=16&) PS: Wie kann ich ein Wort mit einem Link hinterlegen (man klickt auf das Wort und das Wort ist ein Link) Wisst ihr was ich meine?
Luca Engelmann schrieb: >> http://www.mikrocontroller.net/articles/STK200 > > Damit würde es funktionieren? Vergiss diese ganzen Seriell- /PArallel- Programmer, die an Schnittstellen angesteckt werden, die immer weniger PCs heutzutage haben und die keinen eigenen Programmierprozessor haben sondern statt dessen die Schnittstelle vergewaltigen. Es ist genau die Aufgabe eines Betriebssystems derartige Dinge zu unterbinden und es wird immer schwieriger am Betriebssystem vorbei Schnittstellen zu missbrauchen. USB-Programmer kosten mitlerweile einen Pappenstiel, so dass es sich nicht lohnt auf diese Uralt-Programmer zu setzen, selbst wenn die im Einzelfall 2 oder 3 Euro billiger sein könnten. Das ist den Ärger, den man mit ihnen hat, einfach nicht wert.
@Karl Heinz Ich gebe Dir ja schon Recht. Aber Frage Nummer 4 ging nicht um die Beurteilung dieser Technik (die bei mir seit Jahren bestens funktioniert), sondern um die Möglichkeit. Also: Frage gestellt - Antwort bekommen - Thema erledigt. SCNR Oder gehörst Du als Ü40 schon zu denen, denen man den Fachkräftestatus aberkannt hat, obwohl Du auch aktuellen Techniken umgehen kannst?
> Vergiss diese ganzen Seriell- /PArallel- Programmer, die an > Schnittstellen angesteckt werden, die immer weniger PCs heutzutage haben > und die keinen eigenen Programmierprozessor haben sondern statt dessen > die Schnittstelle vergewaltigen. Es ist genau die Aufgabe eines > Betriebssystems derartige Dinge zu unterbinden und es wird immer > schwieriger am Betriebssystem vorbei Schnittstellen zu missbrauchen. > > USB-Programmer kosten mitlerweile einen Pappenstiel, so dass es sich > nicht lohnt auf diese Uralt-Programmer zu setzen, selbst wenn die im > Einzelfall 2 oder 3 Euro billiger sein könnten. Das ist den Ärger, den > man mit ihnen hat, einfach nicht wert. Ok. dann werde ich mir den DIAMEX USB ISP von Reichelt kaufen. (Vorausgesetzt es funktioniert mit dem) Ich habe mal ein kleines Programm mit BASCOM geschrieben. Ihr könnt ja mal drüberschauen ob das funktionieren wird.
1 | $regfile = "m32def.dat" |
2 | |
3 | |
4 | Config Lcd = 16 * 4 . |
5 | Config Porta.0 = Output |
6 | Config Porta.1 = Output |
7 | Config Porta.2 = Input |
8 | Config Porta.3 = Input |
9 | |
10 | '---------------------------Programm Anfang------------------------------ |
11 | |
12 | Cls |
13 | |
14 | Do |
15 | |
16 | Locate 2 , 3 |
17 | Lcd "Bereit für" |
18 | |
19 | Locate 3 , 3 |
20 | Lcd "Eingabe" |
21 | |
22 | If Porta.2 = 1 Then Porta.0 = 1 |
23 | Cls |
24 | Locate 2 , 1 |
25 | Lcd "Button 1 gedrückt" |
26 | Wait 5 |
27 | Cls |
28 | |
29 | Elseif Porta.3 = 1 Then Porta.1 = 1 |
30 | Cls |
31 | Locate 2 , 1 |
32 | Lcd "Button 2 gedrückt" |
33 | Wait 5 |
34 | Cls |
35 | |
36 | End If |
37 | |
38 | Waitms 15 |
39 | Loop |
RTFM schrieb: > SCNR > Oder gehörst Du als Ü40 schon zu denen, denen man den Fachkräftestatus > aberkannt hat, obwohl Du auch aktuellen Techniken umgehen kannst? Der war gut. Den muss ich mir merken. (aber so unrecht hast du nicht. Wenn ich mir aktuelle Windows Programmierung ansehe, bin ich schon lange nicht mehr up to date)
Der TO möge bitte die Board-Suchfunktion mit dem Begriff DIAMEX benutzen, dazu wurde schon einiges geschrieben. Mögliche Probleme werden somit aufgezeigt. Karl Heinz Buchegger schrieb: > bin ich schon lange nicht mehr up to date Wahrscheinlich muss man ja alle 10 Jahre eine neue Programmiersprache lernen, weis Gott was da von MS noch kommt...
RTFM schrieb: > Wahrscheinlich muss man ja alle 10 Jahre eine neue Programmiersprache > lernen, weis Gott was da von MS noch kommt... Da haben wir's doch gut mit C. So alt und immer noch aktuell...
> Der TO möge bitte die Board-Suchfunktion mit dem Begriff DIAMEX > benutzen, dazu wurde schon einiges geschrieben. Mögliche Probleme werden > somit aufgezeigt. Ich glaube ich nehme doch lieber den MySmartUSB von Ihbähh. :) Ich bestelle mal den Atmega und den MySmartUSB und noch ein paar Widerstände, Kondensatoren, etc. was man(n) halt so braucht. Ich melde mich dann wieder. PS: schon das Testprogramm angesehen? Schon mal Danke für die Hilfe! :)
Bascom hat einen prima Simulator ;-) Und bestell besser zwei Megas, die Fusebits ...
> Und bestell besser zwei Megas, die Fusebits ...
Ok. :) Muss ich die Fusebits setzen?
Nein, Du wirst zuerst bitte nichts an den Fusebits einstellen. Fusebits sind ähnlich wie die Registry von Windows: eine verkehrte Einstellung kann alles lahmlegen! Im schlimmsten Falle ist der Controller für dich dann unbrauchbar. Also erstmal fleißig einlesen, was die Bits da eigentlich so bewirken. http://www.mikrocontroller.net/articles/AVR_Fuses#Taktquellen_Fuse_Einstellung Der Mega hat im Auslieferungszustand die interne Taktquelle mit 1MHz eingestellt. Der läuft also sogar ohne den externen Quarz.
Hi
>Ok. :) Muss ich die Fusebits setzen?
Wenn dein Controller nicht ewig mit 1MHz laufen soll schon.
Und bestelle dir keinen ATMega32. Der ist für museumsreif. Nimm
ATmega324p.
MfG Spess
> Nein, Du wirst zuerst bitte nichts an den Fusebits einstellen. > Fusebits sind ähnlich wie die Registry von Windows: eine verkehrte > Einstellung kann alles lahmlegen! Im schlimmsten Falle ist der > Controller für dich dann unbrauchbar. Also erstmal fleißig einlesen, was > die Bits da eigentlich so bewirken. > http://www.mikrocontroller.net/articles/AVR_Fuses#... > Der Mega hat im Auslieferungszustand die interne Taktquelle mit 1MHz > eingestellt. Der läuft also sogar ohne den externen Quarz. Okay :)
Hier noch ein paar weitere Frage: 1. Der ATmega wird ja über diese Pins geflasht:(PB5(MOSI);PB6(MISO);PB7(SCK);Pin9(RESET)) Kann ich diese Pins auch (nach dem flashen) als normale I/O Ports nutzen (außer Reset) oder sind diese nur für den ISP reserviert? 2. Wo befinden sich die PWM-Ports? Ich habe gelesen, das der ATmega32 4 stück hat. Sind das die Ports OC0, OC1A, OC1B und OC2? 3. Kann ich an den ADC Ports ein Poti anschließen (Schleifer an Port) und dann auf dem Display in form einer %-Zahl die Stellung des Potis anzeigen lassen? Also: Poti-linksstellung = 0%; Poti-Mittelstellung = 50%; usw. wenn ja, wie programmiere ich dies in Bascom? 4. Kann ich an den Digitalausgängen einen Transistor anschließen und damit bspw. einen Lüfter An/Aus schalten? 5. Wenn ich einen Transistor an den PWM-Port anschließen will, funzt das mit einem Normalen oder brauche ich einen speziellen PWM-Transistor? Fragen über Fragen... :D Mfg Technik_13
Luca Engelmann schrieb: > 1. Der ATmega wird ja über diese Pins > geflasht:(PB5(MOSI);PB6(MISO);PB7(SCK);Pin9(RESET)) > Kann ich diese Pins auch (nach dem flashen) als normale I/O Ports nutzen > (außer Reset) oder sind diese nur für den ISP reserviert? Können auch als I/O Ports benutzt werden. Das man auf mögliche Interaktion mit dem Brenner achtet sollte klar sein. > Fragen über Fragen... :D Lies ein BASCOM Tutorial. Und fann von vorne an. Es hat keinen Sinn, wenn du dir heute den Kopf über Probleme zerbrichst, auf die du bei normalem Lernfortschritt erst in 4 Wochen stossen wirst.
Ach und noch was: Der Einstieg in die µC-Programmierung beginnt mit ein paar LED an den Ports. Einschalten, Ausschalten, Muster, Lauflicht.
> Lies ein BASCOM Tutorial. Bin ich dabei. > Der Einstieg in die µC-Programmierung beginnt mit ein paar LED an den > Ports. Einschalten, Ausschalten, Muster, Lauflicht. Das kombiniere ich ja mit dem LCD. :D Letztendlich soll ein kleines Lichtmischpult für (erstmal) LED Streifen und (vielleicht) später mit DMX Ausgang werden. Bis dahin muss ich aber noch viel Lernen was Bascom und µC betrifft.
Mach nicht mehrere Schritt auf einmal. Immer Stück für Stück. Teilen und Herrschen. Das lässt sich auf viele Bereiche des Lebens übertragen. Wenn du dir z.b. überlegst: Ich will ein LCD ansteuern, dann ist das für einen Anfänger schon eine große Aufgabe. Also nimmst du dir Papier und Stift und unterteilst dir das Problem "LCD ansteuern" erstmal in kleinere happen. Z.B. so. LCD ansteuern: - wie schließe ich das LCD richtig an? - welche Ein und Ausgänge spielen welche Rolle? - wie initialisiere ich das LCD am Anfang meines Programms? - wie sende ich einzelne Zeichen an das LCD Diese Teilprobleme kannst du dann natürlich noch weiter unterteilen, so lange, bis du einfache Probleme vor dir hast. Die löst du dann Schritt für Schritt nacheinander und setzt sie zu der Gesamtlösung zusammen. Viel Erfolg :)
> Mach nicht mehrere Schritt auf einmal. Immer Stück für Stück. > Wenn du dir z.b. überlegst: Ich will ein LCD ansteuern, dann ist das für > einen Anfänger schon eine große Aufgabe. Also nimmst du dir Papier und > Stift und unterteilst dir das Problem "LCD ansteuern" erstmal in > kleinere happen. > Z.B. so. > LCD ansteuern: > - wie schließe ich das LCD richtig an? > - welche Ein und Ausgänge spielen welche Rolle? > - wie initialisiere ich das LCD am Anfang meines Programms? > - wie sende ich einzelne Zeichen an das LCD > Viel Erfolg :) Vielen Dank :)
Noch zum Programmieradapter: Ich habe ca. 1 Jahr mit so einem Billigding am USB zu Seriell Wandler "gearbeitet". Als meine hex-Datei (die für den µC) dann allerdings die 5kB überschritt und ein Schreibe+Lese Vorgang 800 Sekunden dauerte, wurde es mir dann zu bunt und ich habe mir einen USBASP gebaut. Fazit: Billig-Seriell/Paralel-Adapter machen nur Ärger und sparen tut man fast nichts.
Christian F. schrieb: > Ich habe ca. 1 Jahr mit so einem Billigding am USB zu Seriell Wandler > "gearbeitet". > Als meine hex-Datei (die für den µC) dann allerdings die 5kB überschritt > und ein Schreibe+Lese Vorgang 800 Sekunden dauerte, wurde es mir dann > zu bunt und ich habe mir einen USBASP gebaut. > > Fazit: Billig-Seriell/Paralel-Adapter machen nur Ärger und sparen tut > man fast nichts. Ich hab mir ja jetzt den MySmartUSB light bestellt
So... Heute kam die Reicheltbestellung an. Ebay lässt immer noch auf sich warten. Eigentlich hatte ich vor, das ganze erstmal auf meinem kleinem Steckbrett aufzubauen... aber ich finde es einfach nicht mehr :( naja, dann muss ich die Schaltung direkt auf Lochraster löten. Ich melde mich wieder wenn die Ebay-bestellung ankam Mfg Technik_13
Luca Engelmann schrieb: > Heute kam die Reicheltbestellung an. Ebay lässt immer noch auf sich > warten. Eigentlich hatte ich vor, das ganze erstmal auf meinem kleinem > Steckbrett aufzubauen... aber ich finde es einfach nicht mehr :( naja, > dann muss ich die Schaltung direkt auf Lochraster löten. Ein Einsteiger-Paket mit Steckboard und mit Programer hättest du hier relativ günstig bekommen: https://guloshop.de/shop/Mikrocontroller-Programmierung/gulostart-Mikrocontroller-Einsteigerset::45.html Das Tutorial von denen stützt sich allerdings auf Assembler. Mir wär Assembler viel lieber als Bascom, aber das muss du für dich selbst entscheiden - ist Geschmacksache, Ulli
> Ein Einsteiger-Paket mit Steckboard und mit Programer hättest du hier > relativ günstig bekommen: > https://guloshop.de/shop/Mikrocontroller-Programmi... Ich habe jetzt noch eine Bestellung bei Reichelt abgeschickt, weil ich noch vergessen hatte Steckverbinder mit zu Bestellen. Dann hab ich grad noch so ein 3€ Steckbrett mitbestellt :) > Das Tutorial von denen stützt sich allerdings auf Assembler. Mir wär > Assembler viel lieber als Bascom, aber das muss du für dich selbst > entscheiden - ist Geschmacksache Ich verwende Bascom weil ich VB.net gelernt habe und die Syntax auch fast gleich ist. Mfg
Luca Engelmann schrieb: > Ich verwende Bascom weil ich VB.net gelernt habe und die Syntax auch > fast gleich ist. Bascom ist übersichtlicher und mit Sicherheit für den Anfänger einfacher Verständlich als Assembler. Ich programmiere selbst auch mit Bascom. Übrigens kannst du mit Bascom das compilierte Programm direkt in den Controller flashen. Bascom sollte so ziemlich alle AVR-Programmer unterstützen. Und ein Steckbrett ist nie verkehrt, vorallem wenn es um Testschaltungen mit Mikrocontrollern geht. Gruß Daniel
Schau dir mal die Seite http://ups.bplaced.de/AtmegaProjekt/atmega_projekte.htm an. Eine Seite für Anfänger. Andere Themen auf der Seite sind auch in BASCOM geschrieben. W.
@Spess Hast du einen vernünftigen Grund keinen Atmega32 zu nehmen? Habe heute erst wieder ein Hobbyprojekt angefangen (Schaltplan gemalt) indem ich genau den einsetzen will. Soweit ich weiß ist der 324 pinkompatibel, richtig? Ingo
Hi >Hast du einen vernünftigen Grund keinen Atmega32 zu nehmen? Habe heute >erst wieder ein Hobbyprojekt angefangen (Schaltplan gemalt) indem ich >genau den einsetzen will. Der ATMega324p/pa ist einfach besser ausgestattet: - Mehr Compare-Register bei den 8-Bit-Timern - Pin-Change-Interrupt an jedem Pin - 2 USARTs die auch als SPI arbeiten können - 20MHz statt 16MHz als zugesicherte Taktfrequenz - geringerer Stromverbrauch - .... Außerdem gibt es gleich ausgestattete ATMega164/644/1284 mit 16/64/128k Flash. Der ATMEga1284 hat noch einen zusätzlichen Timer. >Soweit ich weiß ist der 324 pinkompatibel, >richtig? Ja. MfG Spess
> Schau dir mal die Seite > http://ups.bplaced.de/AtmegaProjekt/atmega_projekte.htm > an. Okay, werde ich. Daniel M. schrieb : > Bascom ist übersichtlicher und mit Sicherheit für den Anfänger einfacher > Verständlich als Assembler. Da bin ich ganz deiner Meinung. :D Diese Steckbrett sollte doch für den Preis ok sein oder? http://www.reichelt.de/Laborkarten/STECKBOARD-1K2V/3//index.html?ACTION=3&GROUPID=3374&ARTICLE=67678&SHOW=1&START=0&OFFSET=500&
Daniel M. schrieb: > Bascom ist übersichtlicher und mit Sicherheit für den Anfänger einfacher > Verständlich als Assembler. richtig, "einfach" trifft es auf den Punkt. Wenn man programmieren will, sollte man besser gleich eine richtige Programmiersprache wählen. Bascom besitzt nicht mal einen echten Compiler, es ist mehr ein aufgebohrter Makro-Assembler. Ich begreife auch nicht wie man von VB-Net auf Bascom kommt. Bascom hat nach meiner persönlichen Meinung ungefähr die Funktionalität einer Zigarettenschachtel.
Gunnar schrieb: > Ich begreife auch nicht wie man von VB-Net auf Bascom > kommt. Wegen der Syntax.
Hier einmal meine "Lötkreation" Die Ports müssen noch mit den Stiftleisten verlötet werden. Jetzt muss nur noch das Ebay Paket kommen und das Programmieren kann beginnen. :) PS: Das 3€ Steckbrett von Reichelt ist echt für'n A... Man kann dort leider keinen µC hinenstecken, weil die löcher dafür zu tief sind.
Luca Engelmann schrieb: > Hier einmal meine "Lötkreation" Da fehlt noch ein 100nF direkt am µC-Sockel; Ziehwiderstand (~10k) am Reset nach Vcc wäre auch nicht schlecht. > PS: Das 3€ Steckbrett von Reichelt ist echt für'n A... Man kann dort > leider keinen µC hinenstecken, weil die löcher dafür zu tief sind. Mit den Billigsockeln geht das nicht. Du brauchst entweder die gedrehten Präzisionssockel oder steckst den µC direkt rein. Gruß Dietrich
> Da fehlt noch ein 100nF direkt am µC-Sockel Wo genau? > Ziehwiderstand (~10k) am > Reset nach Vcc wäre auch nicht schlecht. Schau dir das Bild im Anhang an ;) > Mit den Billigsockeln geht das nicht.[...] man muss den Preis so niedrig halten wie es geht ;) > [...]oder steckst den µC direkt rein. Okay.
Luca Engelmann schrieb: > PS: Das 3€ Steckbrett von Reichelt ist echt für'n A... Man kann dort > leider keinen µC hinenstecken, weil die löcher dafür zu tief sind. Wie meinst du das? Ich Arbeite fast nur mit den Reichelt Steckbrettern und habe damit nahezu keine Probleme. Wenn denn habe ich kontaktProbleme.
Luca Engelmann schrieb: > PS: Das 3€ Steckbrett von Reichelt ist echt für'n A... Man kann dort > leider keinen µC hinenstecken, weil die löcher dafür zu tief sind. Logisch, das liegt aber nicht an Reichelt, das ist beinahe bei allen Breadboards der Fall. Die Pins von normalen IC-Fassungen sind einfach zu kurz! Manche Läden warnen sogar davor: "Hinweis: Für den Einsatz auf Steckplatinen (so genannten Breadboards) sind Präzisions-IC-Fassungen besser geeignet. Nicht alle Steckplatinen bieten guten Kontakt für Standard-IC-Fassungen." (geklaut von guloshop.de) Manchmal hilft: erst lesen, dann bestellen. ;-)
Nabend, warum sollte man auf Breadboards überhaupt noch Fassungen für ICs benutzen? Ich meine, das ganze Bradboard ist doch eine riesige IC-Fassung. Beste Grüße, Marek
Okay Okay.... :D Ich verwende das Steckbrett dann ohne IC-Fassung :D Danke für die Tipps.
Luca Engelmann schrieb: >> Da fehlt noch ein 100nF direkt am µC-Sockel > > Wo genau? So nah wie möglich :-) Direkt neben dem Sockel oder auf der Rückseite bei VCC und GND bzw. AVCC und GND. Gruß Dietrich
Und noch was: Bei der Inbetriebnahme eines LCD lernst du nicht wirklich viel. Ich würde mir echt mal eine LED Matrix oder so kaufen.
spess53 schrieb: > - Mehr Compare-Register bei den 8-Bit-Timern > - Pin-Change-Interrupt an jedem Pin > - 2 USARTs die auch als SPI arbeiten können > - 20MHz statt 16MHz als zugesicherte Taktfrequenz > - geringerer Stromverbrauch > - .... > > Außerdem gibt es gleich ausgestattete ATMega164/644/1284 mit 16/64/128k > Flash. Der ATMEga1284 hat noch einen zusätzlichen Timer. > >>Soweit ich weiß ist der 324 pinkompatibel, >>richtig? > > Ja. Ich glaube, der ATmega324A ist sogar billiger als der überholte ATmega32. Für mich gibt es jedenfalls keinen Grund, den alten ATmega32 einzusetzen, außer ich muss mal eine alte Schaltung reparieren, in der genau dieser µC drinsteckt.
So... Der Programmer kam heute an und die Platine ist (fast) fertig gelötet. Doch jetzt habe ich ein Problem mit Bascom-AVR. Mein Programm liegt Compiliert auf dem Desktop. Wenn ich jetzt (in Bascom) auf "Send to chip" gehe, öffnet er mir nur den Explorer, in dem ich auch nicht auswählen kann das er die "LCD_LED_TEST.hex" wählen soll. Was soll ich tun? PonyProg läuft bei mir nicht (Win7 64bit). > So nah wie möglich :-) > Direkt neben dem Sockel oder auf der Rückseite bei VCC und GND bzw. AVCC > und GND. Am Spannungsregler ist auch ein kerko 100n. Reicht der aus oder soll ich noch einen neben den Sockel löten? Hab zufällig noch einen da. :D Edit: Oh. Falsches Bild...
Luca Engelmann schrieb: > Am Spannungsregler ist auch ein kerko 100n. Reicht der aus oder soll ich > noch einen neben den Sockel löten? Hab zufällig noch einen da. :D Er wird wahrscheinlich nicht unbedingt nötig sein, aber es macht Dein "System" stabiler. Hier musst Du analog denken: je weniger Störungen Du hast (hier: Spikes auf der Versorgungsspannung) um so mehr sonstige Störungen (externe oder an anderer Stelle in der Schaltung erzeugte Störungen) kannst Du verkraften, bevor der µC abstürzt. Gruß Dietrich
> Er wird wahrscheinlich nicht unbedingt nötig sein, aber es macht Dein > "System" stabiler. > Hier musst Du analog denken: je weniger Störungen Du hast (hier: Spikes > auf der Versorgungsspannung) um so mehr sonstige Störungen (externe oder > an anderer Stelle in der Schaltung erzeugte Störungen) kannst Du > verkraften, bevor der µC abstürzt. Gut zu wissen :) Dann löte ich den 2. Kerko auch noch auf die Platine, ist ja noch Platz ;) ...Wenn ich denn den ATmega geflasht bekomme. Im Moment spackt Bascom-AVR noch ein bisschen rum. Edit: Schreibfehler entfernt.
Luca Engelmann schrieb: > PonyProg läuft bei mir nicht (Win7 64bit). Bei mir schon. Ich werde mal gucken, es war nicht die neuste Version die lief, sondern eine etwas ältere.
>Bei mir schon. Ich werde mal gucken, es war nicht die neuste Version >die lief, sondern eine etwas ältere. Okay. Gibt's den Download noch irgendwo? Edit: Ich bin grad auf der Seite von Ponyprog und alle Downloads scheinen Schädlich zu sein... Meint zumindest Chrome.
> Edit: Ich bin grad auf der Seite von Ponyprog und alle Downloads > scheinen Schädlich zu sein... Meint zumindest Chrome. Die Downloads von hier* habe ich immer genommen. Bei mir hat niemand gemeckert. *http://www.lancos.com/ppwin95.html Ich glaube die Version die läuft ist 2.0.6f. Edit: Dir ist schon klar, dass Ponyprog nur den "Billig Seriell / Paralel Adapter" unterstützt?
> Dir ist schon klar, dass Ponyprog nur den "Billig Seriell / > Paralel Adapter" unterstützt? Oh. Dann ist PonyProg ja für mich ungeeignet. Ich verwende den mySmartUSB light. Wie kriege ich jetzt das Programm in den ATmega?
Ok. ich habe jetzt das Programm MyAVR ProgTool ausprobiert aber es kommt immer die Fehlermeldung: "Timeout beim Starten des Programmiermodus" Der Atmega wir extern über 5volt (4,98 gemessen) versorgt und Reset ist mit 10k auf Vcc gelegt. Trotzdem will der Programmer nicht :( was kann ich noch tun?
Ich glaube ich habe den Fehler gefunden ;) guckt euch mal die Pinbelegung des MySmartUSB an ("http://i41.tinypic(dot)com/2ni5jia.png") (das "(dot)" gegen "." ersetzen) und jetzt die des ISP (http://www.incunabulum.de/projects/poelcontrol/notizen/con-isp.png) MOSI und MISO sind getauscht. Ich löte die 2 pins mal um und dann mal sehen ob's geht ;)
Also den Programmer hab ich auch, der ist wirklich gut. Wenn das mit dem beiliegenden ProgTool nicht funktioniert dann hast du einfach die ISP Schnittstelle falsch an deinen Controller geschaltet. Überprüfe nochmal genau die Pinbelegungen. Die Belegung des Programmers findet sich in der Anleitung. Aber die gibt natürlich nur die Belegung des Wannensteckers im Programmer selber wieder. Eventuell dreht dein Kabel hier nochmal was um. gruß cyblord
Na also ;) Jetzt hat er weningstens schonmal etwas mehr getan und die daten übertragen (sieht zumindest so aus) jetzt bleibt er aber bei "Timeout beim Ermitteln der Prüfsumme" hängen :(
So. Die Übertragung hat geklappt! :D Nur die Hintergrundbeleuchtung des LCDs geht noch nicht (warum auch immer). Aber ich glaube mein Code ist noch ganz schön verbuggt. :D
1 | $regfile = "m32def.dat" |
2 | $crystal = 1000000 |
3 | |
4 | '----LCD Deklarieren---- |
5 | Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , _ |
6 | Db7 = Portb.3 , Rs = Portb.4 , E = Portb.5 |
7 | Config Lcd = 16 * 4 |
8 | '----/LCD Deklaration---- |
9 | |
10 | '----Input/Output festlegen |
11 | Config Pina.0 = Input |
12 | Config Pina.1 = Input |
13 | Config Pina.2 = Input |
14 | Config Pina.3 = Input |
15 | Pina.0 = 1 |
16 | Pina.1 = 1 |
17 | Pina.2 = 1 |
18 | Pina.3 = 1 |
19 | Config Portd = Output |
20 | Config Portb = Output |
21 | |
22 | Tast1 Alias Pina.0 |
23 | Tast2 Alias Pina.1 |
24 | Tast3 Alias Pina.2 |
25 | Tast4 Alias Pina.3 |
26 | |
27 | Led1 Alias Portd.4 'PortD.4 = PWM 2 |
28 | Led2 Alias Portd.5 'PortD.5 = PWM 1 |
29 | Led3 Alias Portd.7 'PortD.7 = PWM 3 |
30 | |
31 | |
32 | Declare Sub Led_1 |
33 | Declare Sub Led_2 |
34 | Declare Sub Led_3 |
35 | |
36 | Dim Modus As Integer |
37 | Modus = 0 |
38 | |
39 | Config Timer0 = Pwm |
40 | Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1 |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | Cls 'Löscht das LCD |
49 | Lcd "Modus = Ein/Aus" |
50 | Locate 2 , 1 |
51 | Lcd "Bereit..." |
52 | |
53 | |
54 | Sub Led_1 |
55 | If Modus = 0 Then |
56 | Cls |
57 | Locate 2 , 1 |
58 | Lcd "Led 1" |
59 | Locate 3 , 1 |
60 | Lcd "Eingeschaltet" |
61 | Led1 = 1 |
62 | Wait 5 |
63 | Cls |
64 | Lcd "Bereit..." |
65 | Led1 = 0 |
66 | Else |
67 | Cls |
68 | Locate 2 , 1 |
69 | Lcd "PWM 1" |
70 | Locate 3 , 1 |
71 | Lcd "Eingeschaltet" |
72 | Pwm0 = 50 |
73 | Wait 5 |
74 | Cls |
75 | Lcd "Bereit..." |
76 | Pwm0 = 0 |
77 | End If |
78 | End Sub |
79 | |
80 | Sub Led_2 |
81 | If Modus = 0 Then |
82 | Cls |
83 | Locate 2 , 1 |
84 | Lcd "Led 2" |
85 | Locate 3 , 1 |
86 | Lcd "Eingeschaltet" |
87 | Led2 = 1 |
88 | Wait 5 |
89 | Cls |
90 | Lcd "Bereit..." |
91 | Led2 = 0 |
92 | Else |
93 | Cls |
94 | Locate 2 , 1 |
95 | Lcd "PWM 2" |
96 | Locate 3 , 1 |
97 | Lcd "Eingeschaltet" |
98 | Pwm1a = 200 |
99 | Wait 5 |
100 | Cls |
101 | Lcd "Bereit..." |
102 | Pwm1a = 0 |
103 | End If |
104 | End Sub |
105 | |
106 | Sub Led_3 |
107 | If Modus = 0 Then |
108 | Cls |
109 | Locate 2 , 1 |
110 | Lcd "Led 3" |
111 | Locate 3 , 1 |
112 | Lcd "Eingeschaltet" |
113 | Led3 = 1 |
114 | Wait 5 |
115 | Cls |
116 | Lcd "Bereit..." |
117 | Led3 = 0 |
118 | Else |
119 | Cls |
120 | Locate 2 , 1 |
121 | Lcd "PWM 3" |
122 | Locate 3 , 1 |
123 | Lcd "Eingeschaltet" |
124 | Pwm1b = 500 |
125 | Wait 5 |
126 | Cls |
127 | Lcd "Bereit..." |
128 | Pwm1b = 0 |
129 | End If |
130 | End Sub |
131 | |
132 | |
133 | Do 'Haupschleife begin |
134 | If Modus = 0 Then |
135 | |
136 | If Tast1 = 1 Then |
137 | Cls |
138 | Lcd "Modus = Ein/Aus" |
139 | Gosub Led_1 |
140 | |
141 | Elseif Tast2 = 1 Then |
142 | Cls |
143 | Lcd "Modus = Ein/Aus" |
144 | Gosub Led_2 |
145 | |
146 | Elseif Tast3 = 1 Then |
147 | Cls |
148 | Lcd "Modus = Ein/Aus" |
149 | Gosub Led_3 |
150 | |
151 | Elseif Tast4 = 1 Then |
152 | Modus = 1 |
153 | Cls |
154 | Lcd "Modus geändert!" |
155 | Wait 3 |
156 | Cls |
157 | Lcd "Modus = PWM" |
158 | |
159 | End If |
160 | |
161 | |
162 | Elseif Modus = 1 Then |
163 | If Tast1 = 1 Then |
164 | Cls |
165 | Lcd "Modus = PWM" |
166 | Gosub Led_1 |
167 | |
168 | Elseif Tast2 = 1 Then |
169 | Cls |
170 | Lcd "Modus = PWM" |
171 | Gosub Led_2 |
172 | |
173 | Elseif Tast3 = 1 Then |
174 | Cls |
175 | Lcd "Modus = PWM" |
176 | Gosub Led_3 |
177 | |
178 | Elseif Tast4 = 1 Then |
179 | Modus = 0 |
180 | Cls |
181 | Lcd "Modus geändert!" |
182 | Wait 3 |
183 | Cls |
184 | Lcd "Modus = An/Aus" |
185 | End If |
186 | |
187 | End If |
188 | |
189 | |
190 | |
191 | |
192 | Loop 'Hauptschleife Ende |
Hier mal mein SourceCode
Ok. Iergendwas mache ich falsch. :( Hier der SourceCode für "wenn taster gedrückt -> Led an, wenn nicht dann nicht"
1 | $regfile = "m32def.dat" |
2 | $crystal = 1000000 |
3 | |
4 | |
5 | |
6 | |
7 | Config Portd.4 = Output |
8 | Config Pinc.0 = Input |
9 | |
10 | Pinc.0 = 1 |
11 | |
12 | Tast1 Alias Pinc.0 |
13 | |
14 | |
15 | Led1 Alias Portd.4 |
16 | Led1 = 0 |
17 | |
18 | |
19 | |
20 | Do |
21 | |
22 | If Tast1 = 0 Then |
23 | Led1 = 1 |
24 | Else |
25 | Led1 = 0 |
26 | End If |
27 | |
28 | |
29 | Loop |
30 | Waitms 15 |
Die Led ist mit einem BC639 am AVR angeschlossen und der PINC.0 wird dann mit dem Taster auf masse gezogen. Wenn der Taster nicht gedrückt wird, flimmert die LED und wenn ich den Taster drücke, leuchtet die LED. Irgendwie komisch :(
Hi >Wenn der Taster nicht gedrückt >wird, flimmert die LED und wenn ich den Taster drücke, leuchtet die LED. >Irgendwie komisch :( Sieht nach fehlendem Pull-Up-Widerstand am Taster aus. MfG Spess
> Sieht nach fehlendem Pull-Up-Widerstand am Taster aus.
ich dachte den PullUp schaltet man im Atmega per "PINx = 1" ein. So hab
ich es verstanden.
Edit: Wenigstens ein kleiner Erfolg:
1 | $regfile = "m32def.dat" |
2 | $crystal = 1000000 |
3 | |
4 | Config Portd = Output |
5 | |
6 | Do |
7 | Portd.4 = 1 |
8 | Wait 2 |
9 | Portd.4 = 0 |
10 | Wait 2 |
11 | Loop |
Dieser Code funktioniert, ist aber "langweilig" :)
Hi >ich dachte den PullUp schaltet man im Atmega per "PINx = 1" ein. So hab >ich es verstanden. Nein. Mit Portx=1 wird ein Pull-Up eingeschaltet. Das wirkt aber nur bei einem Eingang. Bei einem Ausgang wird das Pin H. Und bei neueren AVRs bewirkt PINx = 1 bei einem Ausgang das Togglen des Pins. MfG Spess
> Nein. Mit Portx=1 wird ein Pull-Up eingeschaltet. Das wirkt aber nur bei > einem Eingang Der Taster hängt doch an einem Eingang? Jetzt bin ich verwirrt. Was müsste ich denn tun, damit mein "wenn taster gedrückt -> Led an, wenn nicht dann nicht" code funktioniert?
Hi >Der Taster hängt doch an einem Eingang? Jetzt bin ich verwirrt. Was >müsste ich denn tun, damit mein "wenn taster gedrückt -> Led an, wenn >nicht dann nicht" code funktioniert? Einfach statt Pinc.0 = 1 Port.0 = 1 Dein Befehl hat bei einem Eingang keine Wirkung. Dadurch ist der Eingang bei nicht gedrückter Taste offen und fängt sich alles mögliche ein. Deswegen flimmert die LED. MfG Spess
> Einfach statt Pinc.0 = 1 Port.0 = 1 Aber mit Portx.x = 1 schalte ich doch den Eingang auf H (=> Die LED ist an) ich verstehs nich. :(
Hi >Aber mit Portx.x = 1 schalte ich doch den Eingang auf H (=> Die LED ist >an) >ich verstehs nich. :( Du hast geschrieben: >Die Led ist mit einem BC639 am AVR angeschlossen und der PINC.0 wird >dann mit dem Taster auf masse gezogen. Wenn der Taster nicht gedrückt >wird, flimmert die LED und wenn ich den Taster drücke, leuchtet die LED. >Irgendwie komisch :( Also verbindet der Taster beim Drücken den Pin mit Masse. Oder verstehe ich das falsch? Der Befehl Portx.x = 1 wirkt auf einen Eingang anders als auf einen Ausgang. Bei einem Eingang wird der interne Pull-Up-Widerstand eingeschaltet. Eine Verbindung nach Masse erzeugt nur einen geringen Strom. Bei einem Ausgang wird der Pin dadurch fast direkt mit VCC verbunden und die Verbindung nach GND erzeugt einen Kurzschluss. MfG Spess
ich habe alles so angeschlossen wie auf dem Schaltplan zu sehen
Hi
>ich habe alles so angeschlossen wie auf dem Schaltplan zu sehen
Dann schalte den Pull-Up-Widerstand ein und gut ist es.
Übrigens entbindet die Verwendung von BASCOM nicht von der Pflicht die
Datenblätter zu lesen.
MfG Spess
> Dann schalte den Pull-Up-Widerstand ein und gut ist es. Dann funktioniert es ja nicht (s. Post um 19:45 Uhr). > Übrigens entbindet die Verwendung von BASCOM nicht von der Pflicht die > Datenblätter zu lesen. Das ist schon klar aber ich war mit den 346 Seiten noch nicht ganz fertig. ;)
Hi >Dann funktioniert es ja nicht (s. Post um 19:45 Uhr). Weil das Pinc.0 = 1 falsch ist. >Das ist schon klar aber ich war mit den 346 Seiten noch nicht ganz >fertig. ;) Dafür brauchst du nur das Kapitel "I/O-Ports". MfG Spess
> Weil das Pinc.0 = 1 falsch ist. Also wäre Portx.x = 1 Richtig? > Dafür brauchst du nur das Kapitel "I/O-Ports". Okay. Ich guck's mir an. Noch eine Frage zu Bascom: Kann es sein das Bascom die Subroutinen ausführt? Es müsste doch so sein, das die Subroutinen erst ausgeführt werden wenn sie mit "Call" aufgerufen werden, oder? In vb.net ist es zumindest so... Aber Bascom mit vb.net zu vergleichen ist wahrscheinlich so als würde man Äpfel mit Birnen vergleichen... ;) Mfg, der Technik_13
Hi >Also wäre Portx.x = 1 Richtig? Soll ich dir das jetzt noch nochmal vorsingen oder bevorzugst du ein getanztes Datenblatt. >Kann es sein das Bascom die Subroutinen ausführt? Es müsste doch so >sein, das die Subroutinen erst ausgeführt werden wenn sie mit "Call" >aufgerufen werden, oder? In vb.net ist es zumindest so... Ich benutze Assembler, aber BASCOM ist mit Sicherheit nicht VB >Aber Bascom >mit vb.net zu vergleichen ist wahrscheinlich so als würde man Äpfel mit >Birnen vergleichen... ;) Eher Kirschen mit Melonen. MfG Spess
> Soll ich dir das jetzt noch nochmal vorsingen oder bevorzugst du ein > getanztes Datenblatt. Ist ja gut.. Immer ruhig bleiben ;)
Hi
>Ist ja gut.. Immer ruhig bleiben ;)
Mach dir um meine Ruhe mal keine Sorgen. Ist ja nicht meine
Beratungsresistenz.
MfG Spess
> Mach dir um meine Ruhe mal keine Sorgen. Ist ja nicht meine > Beratungsresistenz. Ich bin nicht beratungsresistent, ich kenne mich einfach nicht so gut aus.
Hi >Ich bin nicht beratungsresistent, ich kenne mich einfach nicht so gut >aus. Warum muss man dir dann seit 3 Stunden erklären, das Pinc.0 = 1 falsch ist? MfG Spess
Luca Engelmann schrieb: > ich habe alles so angeschlossen wie auf dem Schaltplan zu sehen Wenn Du Dich schon für diese Schaltung entschieden hast (Kollektorschaltung oder Emitterfolger), dann kannst Du konsequenterweise auf den Basiswiderstand verzichten. Nur so als Hinweis.... Gruß Dietrich
spess53 schrieb: > ein getanztes Datenblatt. Ich werf mich weg, Spess schwingt die Hüften!!! Hoffentlich hast Du eine Webcam und läßt uns daran teilhaben ! :-P Luca, hast den schon einmal nachgemessen, was dein Controller ausgibt? Hast Du das ganze in BASCOM mal simuliert?
> Wenn Du Dich schon für diese Schaltung entschieden hast > (Kollektorschaltung oder Emitterfolger), dann kannst Du > konsequenterweise auf den Basiswiderstand verzichten. Ok. ;) RTFM schrieb > Ich werf mich weg, Spess schwingt die Hüften!!! > Hoffentlich hast Du eine Webcam und läßt uns daran teilhaben ! :-P :D RTFM schrieb: > Luca, hast den schon einmal nachgemessen, was dein Controller ausgibt? Nein, so blöd wie ich bin natürlich nicht.... hätte ich auch mal selbst drauf kommen können. Danke für den Hinweis, werde ich nachher mal machen. ;) > Hast Du das ganze in BASCOM mal simuliert? Ja, Ich habe auch das Display Simuliert, aber das hat auch nur wirres Zeug angezeigt. Ich habe das Gefühl das Bascom meine If-Abfragen Ignoriert und einfach den Befehl ausführt. ... Mfg ;)
Hallo :) Dieser Code:
1 | $regfile = "m32def.dat" |
2 | $crystal = 1000000 |
3 | |
4 | Config Pinc.0 = Input |
5 | Taster Alias Pinc.0 |
6 | |
7 | Portc.0 = 1 |
8 | |
9 | Config Portd = Output |
10 | Do |
11 | If Taster = 0 Then |
12 | Portd.4 = 1 |
13 | Else |
14 | Portd.4 = 0 |
15 | End If |
16 | Loop |
funktioniert :) Allerdings habe ich jetzt ein Problem mit dem LCD :( Egal welchen code ich nehme, das LCD zeigt in der ersten und dritten Zeile Balken (jedes Pixel eines Zeichens ist an) Trotzdem nochmal Danke für die Hilfe ;) PS. @Spess53: Ich freue mich schon auf das getanzte Datenblatt ;) Mfg der Technik_13
Wire schrieb :
> BASCOM und diese Art Fragen, ist immer dasselbe.
Tut mir leid das ich weder Assembler noh C kann. -.-
Hallo :) Ich habe es hinbekommen. ;) Mfg Technik_13
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.