erster Mikrocontroller programmieren -> fragen

OP #2777305
Lesenswert?

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
Gast #2777319
Lesenswert?

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€
OP #2777331
Lesenswert?

>> 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
Gast #2777341
Lesenswert?

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.
Gast #2777349
Lesenswert?

>> 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.
OP #2777350
Lesenswert?

> 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?
OP #2777362
Lesenswert?

> 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.
Gast #2777371
Lesenswert?

> 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.
OP #2777387
Lesenswert?

> 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?
#2777399
Lesenswert?

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.
Gast #2777406
Lesenswert?

@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?
OP #2777408
Lesenswert?

> 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
Gast #2777420
Lesenswert?

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...
OP #2777434
Lesenswert?

> 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! :)
Gast #2777460
Lesenswert?

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.
OP #2777467
Lesenswert?

> 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 :)
OP #2778617
Lesenswert?

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
#2778624
Lesenswert?

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.
OP #2778646
Lesenswert?

> 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.
Gast #2778661
Lesenswert?

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 :)
OP #2778689
Lesenswert?

> 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 :)
Persönliche Seite #2778700
Lesenswert?

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.
OP #2778726
Lesenswert?

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
OP #2780011
Lesenswert?

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
Gast #2780040
Lesenswert?

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
OP #2780182
Lesenswert?

> 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
Gast #2780231
Lesenswert?

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
Gast #2780278
Lesenswert?

@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
Gast #2780315
Lesenswert?

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
OP #2780450
Lesenswert?

> 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&;
Gast #2780493
Lesenswert?

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.
OP #2784576
Lesenswert?

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.
Angehängte Dateien:
#2784682
Lesenswert?

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
Gast #2785036
Lesenswert?

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. ;-)
Gast #2785940
Lesenswert?

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.
OP #2786140
Lesenswert?

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...
#2786160
Lesenswert?

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
OP #2786167
Lesenswert?

> 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.
Persönliche Seite #2786206
Lesenswert?

> 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?
OP #2786259
Lesenswert?

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?
#2786277
Lesenswert?

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
OP #2786329
Lesenswert?

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
OP #2786393
Lesenswert?

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 :(
OP #2786416
Lesenswert?

> 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" :)
Gast #2786425
Lesenswert?

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
Gast #2786449
Lesenswert?

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
Gast #2786487
Lesenswert?

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
Gast #2786563
Lesenswert?

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
Gast #2786598
Lesenswert?

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
OP #2786704
Lesenswert?

> 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
Gast #2786720
Lesenswert?

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
OP #2787245
Lesenswert?

> 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 ;)
Gast #2789237
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren