PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ersatz des atmega8 mit einem atmega32



inka
04.12.2007, 14:46
hi allerseits,
ich möchte jetzt mit dem ersetzen des atmega8 durch den atmega32 anfangen, es sollen erstmal nur die funktionen des atmega8 durch den 32 übernommen werden:
- eine extra platine, größe ca. 30% einer europakarte (70x60), hinter den motoren angebracht (die akkus sind ja bei mir unterhalb der asuro-platine)
- auf der dem asuro-prozessor zugewandten seite 2x14polige fassungen für flachbandkabelstecker
- "dahinter" kämen nacheinander einer reihe buchsenleisten, der gesockelte atmega32 und anschliessend wieder eine reihe buchsenleisten. (Die buchsen sind auf der Lötseite mit den atmeg32 pins verbunden, mit steckbrücken soll die verdrahtung von freien und evtl. auch bereits belegten prozessorpinns stattfinden)
- seitlich des processrs 5x2 steckpfosten als ISP anschluss

die kontakte der 2 flachbandkabelstecker möchte ich auf der lötseite mit den prozessorpinns fest verdrahten.

Bei der festlegung der zuordnung der pinns bei den beiden prozessoren habe ich mich hauptsächlich durch die signalbezeichnung leiten lassen, ich weiss nicht ob das immer so richtig war...

Bevor ich nun zum lötkolben greife, wäre viellcht einer von Euch so nett und würde mal drüberschauen? Vielen dank...


atmega8 atmega32
01 PC6 RESET 09 RESET
02 PD0 RXD 14 PD0 RXD
03 PD1 TXD 15 PD1 TXD
04 PD2 INT 0 16 PD2 INT 0
05 PD3 INT 1 17 PD3 INT 1
06 PD4 XCK / T 0 01 PB0 XCK / T0
07 VCC 10 VCC
08 GND 11 GND
09 PB6 XTAL1 / TOS1 28 PC6 TOSC1
10 PB7 XTAL2 / TOS2 29 PC7 TOSC2
11 PD5 T1 02 PB1 T1
12 PD6 AIN0 03 PB2 INT2 / AIN0
13 PD7 AIN1 04 PB3 OC0 / AIN1
14 PB0 ICP1
15 PB1 OC1A 19 PD5 OC1A
16 PB2 SS / OC1B 05 PB4 SS
17 PB3 MOS / OC2 06 PB5 MOSI
18 PB4 MISO 07 PB6 MISO
19 PB5 SCK 08 PB7 SCK
20 AVCC 30 AVCC
21 AREF 32 AREF
22 GND 31 GND
23 PC0 ADC0 40 PA0 ADC0
24 PC1 ADC1 39 PA1 ADC1
25 PC2 ADC2 38 PA2 ADC2
26 PC3 ADC3 37 PA3 ADC3
27 PC4 ADC4 / SDA 36 PA4 ADC4
28 PC5 ADC5 / SCL 35 PA5 ADC5

damaltor
04.12.2007, 15:53
das sieht spontan sehr gut aus, sofern die pinnummern stimmen (hab grade keine pläne zur hand, aber die grundlegenden pins im kopf - die stimmen schonmal :D)

das einzige was vermutlich probleme bereiten wird, ist jedoch der quarz: durch das (relativ) lange flachkabel wird der takt versaut. du solltest auf jeden fall einen neuen quarz verwenden, der so dicht wie möglich an dem neuen prozessor sitzt. 3 möglichkeiten: den vom asuro auslöten und "recyclen", einen entsprechenden nachkaufen, oder einen normalen quarz zwischen xtal1/2 schalten. dann müssne aber noch 2 kondensatoren dazu: je ein bein des quarzes an je einen port des prozessors, und je ein 22pF (!) kondensator gegen masse ebenfalls an je einen pin des quarzes. dann kannst du auch gleich einen schnelleren quarz nehmen (16 mhz sind maximum, bei mir läuft der prozessor auch mit 20 mhz stabil. aber: je schneller, desto höher der stromverbrauch).

bei der gelegenheit: nimm einen atmega32L, der braucht weniger strom. ist aber meist auch etwas teurer. tip: ebay, da hab ich die meisten meiner avrs her.

wenn du etwas weiter bist, kann ich dir die berechnung der fuses machen, denn in der standardkonfiguration wird der mega32 nicht so einfach funktionieren.

übrigens: wenn auf der platine noch etwas platz ist, dann lege noch die pins MISO, MOSI, SCK und RESET sowie VCC und GND auf einen stecker, der am besten folgendermaßen aussieht:

https://www.roboternetz.de/wissen/index.php/RN-Definitionen#ISP_-_Programmierstecker

dann kannst du den mega32 einfach und schnell programmieren über die ISP schnittstelle, und dir das wackelige infrarot ding sparen. das würde ausserdem die geschwindigkeit DRASTISCH erhöhen (8k in 3-4 sekunden sind erreichbar). um die fuses einzustellen und einen eventuellen bootloader einzuflashen benötigst du diese pins ohnehin, und einen programmieradapter dazu.

inka
04.12.2007, 18:50
hi damaltor,

ein paar fragen ergeben sich aus deinen antworten:
- quarz & frequenz: irgendwo habe ich gelesen, dass der atmega8 einen internen takt hat. Hat der 32 das auch? könnte ich das nutzen? Vielleicht wahlweise extern/intern?
- wenn nicht, würde ich etwas ähnliches wie den original quarz von asuro verwenden wollen, nur halt mit 16MHz, dort sind schon die c´s integriert, denke ich. Wo könnte ich die typenbezeichnung finden? wie heissen überhaupt diese kombibierten bauteile?
- eine verbindung (atmega8 pin 14 PB0 ICP1) fehlt noch, dazu passte keiner der anschlüsse des 32 so recht. Was könnte das sein?

damaltor
04.12.2007, 21:52
-quarz und frequenz: der mega32 hat auch internen takt. wahlweise 1,2,4 oder 8 mhz. leider sind diese jedoch so ungenau, dass +- 10 % (!!) drin sind. hab mal versucht auf nem meg32 ne uhr laufen zu lassen, nach 10 stunden laufzeit hat sie 9:11 stunden angezeigt. das ist an sich nicht schlimm, könnte jedoch uart und vor allen dingen infrarot killen. da kommt es auf sehr exakte frequenzen an (+-2% etwa). dafür wird strom gespart.

-wenn nicht... diese dinger heissen glaub ich schwinger. wenn du die platine auf lochraster aufbauen willst, sind sie eher ungeeignet weil sie 3 reihen brauchen. ansonsten ist es wirklich so, es ist nur ein quarz mit den Cs schon eingebaut. hab mal was von ungenau gehört, gllaub aber nicht richtig dran. spart platz, ist aber etwas teurer ale ein quarz+2Cs. hab auch noch genug quarze hier btw... kleiner tipp: wenn du
- wieder einen 8 mhz quarz nimmst, sparst du strom, und kannst die funktionen ohne anpassung übernehmen
- einen 16 mhz quarz nimmst, wirst du sämtliche funktionen bearbeiten müssen da sich diese auf eine frequenz von 8 mhz beziehen.
- einen schnelleren quarz willst, aber nicht unbedingt die 16 mhz ausreizen musst, dann empfiehlt es sich einen "krummen" quarz zu nehmen. es gibt viele wie zB 14,31818 mhz. diese werte lassen sich genau so teilen dass eine perfekte baudrate rauskommt. so wäre die uart-übertragung auch noch sehr viel exakter. muss aber nicht unbedingt sein.
quarze sind einfacher zu beschaffen, und 22pF quarze ebenfalls. sie gehen gut mit lochraster, da wenn man den quarz etwas schräg setzt man nur 2 reihen braucht (und da die pins am prozessor nebeneinander sind...). ansonsten wird es das einfachste sein, den schwinger vom asuro aus-und weider einzulöten. aber schau mal bei reichelt.

der PB0 am mega32 ist pin 1.

hoffe deine fragen beantwortet zu haben :D

inka
05.12.2007, 06:41
ja damaltor, danke...

zu der pinzuordnung noch: richtet sich das nach der pinbezeichnung, oder signalbezeichnug - oder keinem von beiden?
atmega8/14-PB0-ICP1 --- atmega32/1-PB0-XCK / T0

oder

atmega8/14-PB0-ICP1 --- atmega32/18-PD4-OC1B

den atmega32/1-PB0-XCK / T0 würde ich von der signalbezeichnung eher zu
atmega8/6-PD4-XCK / T zuordnen, oder?

edit: die 8mhz frequenz und die aus einer änderung hier resultierende bearbeitung aller funktionen spricht gegen eine änderung hier...

damaltor
05.12.2007, 14:21
hmm ich würde es beim pin 1 lassen, XCK verbinde ich grade mit gar nichts, also hab ichs noch nich grbraucht :D was hängt denn am den pin im mega8 des asuro?

inka
05.12.2007, 16:17
am atmega8/pin 14 hängt beim asuro die status led dran, ich denke die werde ich auch an den 32 anschliessen müssen :-(

wie ist die bemerkung "habs noch nicht gebraucht" zu verstehen? Muss ich nicht alle anschlüsse des AM8 an den AM32 anschliessen? Wonach selektiere ich das? beim asuro sind ja alle irgendwo dran???

damaltor
05.12.2007, 19:48
anschlüsse schon, aber die signalbezeichnung hab ich nie gebraucht :D schliess das an den pin1 vom atmega32 an, dann funktioniert die led.

inka
06.12.2007, 08:39
hi damaltor,
unsicherheit wächst:
nach was richtet sich nun die zuordnung? habe schwierigkeiten schon bei dem pin1 des AM8:
1 PC6 RESET

beim AM32 ist aber:
28 PC6 TOSC1
09 RESET

soll ich den pin 1 des AM8 mit beiden am AM32 verbinden? Also 9 und 28???

damaltor
06.12.2007, 12:25
hier ist RESET wichtiger: verbine diesen anschluss mit pin9 des meg32. :D

inka
09.12.2007, 13:00
so, die nächste zwischenstation ist erreicht:

der asuro prozessor ist auf einer extra platine zusammen mit einem atmega32 aufgebaut, bei bedarf kann ich den atmega8 rausziehen und seine buchsen mit steckbrücken mit den buchsen des atmega32 verbinden...

btw: der atmega8 läuft auch da oben mit dem original schwinger, der unten sitzt...


http://www.a-g-k.com/_asuro/fotos/atmega_32/2007_12_09_03-1.jpg

jetzt muss ich mich verstärkt um einen isp adapter, möglichst auf seriell, kümmern. Welches programm zum flashen war das? pony-prog?

damaltor
09.12.2007, 14:20
ponyprog ist fein zum seriellen flashen. an sich reichen ein paar dioden und widerstände vollkommen aus, es gibt jedoch auch treiberbausteine. schaltplan zB hier:

http://s-huehn.de/elektronik/avr-prog/avr-prog.htm

noch ist die platine leer, es wird wohl vorerst noch gehen mit dem schwinger (ausserdem ist denke ich das CKOPT fuse im mega8 eingestellt, welches dafür sorgt dass bei fast doppeltem stromverbruacht der quarz mit der höchstmöglichen amplitude schwingt um störsignale zu übertönen). aber wie du siehst gehen die ungeschirmten kabel direkt an dem motoren vorbei, das macht den takt nicht besser. ich würde dir auf jeden fall raten einen eigenen schwinger/quarz für den meg32 zu nehmen.

etwas eher grundsätzliches: zwei einfach durchkontaktierte ccontroller in einer schaltung sind ohne hochexakte kontrolle recht ungesund. wenn der eine controller aufgrund eines programms zB einen pin auf low zieht (oder er noch kein eigenes programm hat, sondern nur irgendwelche fragmente ausführt), während der andere prozessor zufällig diesen pin auf high zieht, dann ist das ein klassischer kurzschluss, und beide prozessoren sind gebraten. deshalb sollte immer nur ein prozessor in der schaltung stecken.

damaltor
09.12.2007, 14:52
Thread geteilt, 9.12.07 um 15:50h.

wenn du den titel verändern willst, musst du bei dem ersten beitrag auf edit klicken, dann kannst du einen neuen titel eingeben.

mit dem bootloader hat das nich mehr viel zu tun :)

inka
09.12.2007, 19:17
hi damaltor,

das mit dem doppeltem prozessor ist mir klar: der atmega_8 steckt in einer fassung, wenn man den rauszieht - und nur dann - kann mann, die buchsen der fassung nutzend, den atmega_32 (in die um denn prozessor eingelöteten und mit den prozessorpinns verbundenen) buchsen verdrahten...
zum flashen: kann man mit dem AVR studio nicht auch flashen?

damaltor
09.12.2007, 20:32
ja das kann man. mit dem stk500 protokoll über den parallelen port glaub ich aber nur. ich hab kein avrstudio (linuxer), kann dir das nicht genau sagen...

inka
10.12.2007, 16:57
ok, danke erstmal...

aus unerfindlichen gründen läuft der selbsttest nicht...

LED - ok
LINE - ok
SWITCH - linker motor läufr an, bleibt stehen beim drücken von K1 oder K6
ODO - LINE-LED brennt
MOTOR - ok
IR - ok

könntet Ihr mir bitte helfen den fehler einzugrenzen? An welchen verbindungen zum prozessor könnten sich der motor, K1, K6, LINE-LED, ODO LED in die quere kommen?

Es änderte nichts den schwinger näher an den prozessor zu bringen, kontrolle der lötstellen (soweit man/ich es sagen kann) - alles ok...(edit: durchgepiepst von der origigalstelle bis zur fassung auf der zusatzplatine, alle 28 verbindungen ok)
sind evtl. die leitungen zu lang?

Auch läuft der test normal, wenn der prozessor an der originalstelle sitzt...

damaltor
11.12.2007, 01:06
wenn du den original-mega8 in die obere fassung tust, dann läuft der selbsttest nicht? oder wenn du den selbsttest in den meg32 schiebst?

ansonsten tippe ich auf einen kurzschluss zwischen irgend welchen lötstellen, entweder unter der neuen fassung des meg8, oder bei den verbindungen zum meg32 (den du hoffentlich vorher rausgenommen hast), oder (am wahrscheinlichsten) an dem stecker der jetzt in der originalen fassung des meg8 sitzt.

inka
11.12.2007, 06:27
hi damaltor,
- der mega_32 ist noch gar nicht verdrahtet, jetzt sogar wieder aus der fassung draussen, ich will erstmal oben den mega_8 zum laufen bringen

- wenn der original mega_8 oben ist, läuft der selbsttset nicht

- ich habe mit einem ohmmeter alle anschlüsse (vom originalplatz über alle kabel und steckverbindungen bis hin zum neuen platz des atmega_8) auf durchgang und evtl. kurzschluss mit den benachbarten kontakten überprüft, eine verbindung hatte keinen kontakt, wurde geändert...

noch ne idee?

Andun
11.12.2007, 09:19
Naja, halt ausprobieren, was denn alles geht, indem du dir nen anderen Atmega8 besorgst, den du so bespielst und Port-Zustände ändern und abfragen und so schauen, ob der Controller angesprochen werden kann und ob die Sachen wirklich alle richtig verdrahtet sind.

mfg
Andun

inka
11.12.2007, 09:27
ich konnte jetzt noch feststellen, dass z.b. beim draufflashen des myasuro-test-hex teiles auf den oben sitzenden atmega_8 keiner der taster geht. Die werte für odo-led´s oder line-led´s werden registriert und angezeigt. Welche spannungswerte sollte ich an den widerständen, die zu den tastern gehören messen?

damaltor
11.12.2007, 17:52
boah.. das ist ja suspekt. da ein teil funktioniert, scheint wenigstens im groben alles zu passen. du kannst mal checken ob das flachbandkabel am original-sockel-stecker evtl am gegenüberliegenden pin kontakt bekommt: es ist doch immer eine leitung nach vorn und eine wtwas kürzere an dem stecker, oder? evtl ist eines dr längeren kabel heiss geworden und hat kontakt mit einem danebenliegenden kürzeren.

------------------ langes kabel
--------- kurzes kabel
------------------
---------
------------------
------x-
------x----------

x=kurzschluss?

inka
11.12.2007, 18:54
auch dort ist kein kurzschluss, ich habe die leitungen alle mit der fingernagelschere meiner lebensgefährtin aufs mass geschnitten :-)...
wovon sollten die leitungen zu heiss geworden sein? Und ich habe ja alles durchgemessen:

x---x <-------> x---x
x---x <-------> x---x

immer einen auf durchgang zum entsprechendem kontakt auf dem anderen sockel, die anderen drei auf isolation...

damaltor
11.12.2007, 20:40
das ist doch grütze. ich glaube ich würde mich jetzt hinsetzen und nach und nach sämtliche 378 verbindungen testen... irgendwo muss ein kurzschluss sein. soviel steht fest, wennd er prozessor im originalsockel funktioniert und mit der "verlängerungsschnur" nicht mehr dann ist entweder irgendwo was falsch verkabelt und die pinnummern pssen nicht zueinander, oder irgendwo hängt was zusammen.

inka
12.12.2007, 06:34
hast ja recht, nur hab ich das schon zigmal gemacht. Also nochmal... :-(

damaltor
12.12.2007, 10:33
ich kann mir einfach nichts anderes vorstellen... evtl bekommt der prozessor keinen kontakt in seinem neuen sockel? oder der stecker keinen kontakt im alten sockel? zu heiss geworden? die "klammern" im sockel verbogen?

hast du es ein zweites mal getestet?

inka
12.12.2007, 10:56
im moment warte ich auf bei conrad bestellte teile, möchte noch eine andere art der verbindung zum neuen prozessor probieren...

damaltor
12.12.2007, 10:57
dann teste es doch nochmal in der zeit, evtl war es wirklich nur ein wackelkontakt.

inka
16.12.2007, 19:11
also, ich habs jetzt noch einmal versucht:

http://www.a-g-k.com/_asuro/fotos/atmega_32/2007_12_16_01-1.jpg
http://www.a-g-k.com/_asuro/fotos/atmega_32/2007_12_16_08-1.jpg

der asuro funktioniert jetzt da oben, allerdings gibts durch die steckverbindungen jede menge wackler. leider :-(
muss mir also für die verbindungen doch was festeres einfallen lassen...

damaltor
16.12.2007, 20:12
krasse konstruktion. was ist wenn du zwei sockel nimmst und diese mit kabeln verlötest? bei einem kannst du die kabel von oben reinlöten (und dann das ding reinstecken wo der alte prozessor saß) und ebim anderen musst du dir was ausdenken, das ist dann der zwischenstecker zwischen dem neuen sockel und dem prozessor auf der oberen platine..

elayne
16.12.2007, 21:17
Hey,
Mein Vorschlag für die Verbindung:
Reichelt Bestellnummer: KK28025C
Da Crimpst du ein Flachband dran und auf die andere Seite eine Pfostenstecker. Auf die Mega32-Platine kannst du ne einfache Stiftleiste oder ein Verbinder wie es die RN Definitionen für den ISP Verbinder vorschlagen.
Sollte sogar industrietauglich sein und problemlos funktionieren.

Gruß
elayne

damaltor
17.12.2007, 00:18
immerhin: 28poliges flachkabel wäre nötig. aber an sich ne idee.

wobei: 26 pole reichen auch aus, wenn du den quarz hochlegst. habe übrigens gerade nochmal die atmel application note zum schaltungsentwurf gelesen, da steht drin dass der quarz so dicht wie nur irgend möglich am prozwssor sein soll, deshalb würden smd bauteile empfohlen werden weil die dichter nebeneinander können... das halte ich für übertrieben, aber hoch sollte der schon denke ich.

elayne
17.12.2007, 15:36
SMD Bauteile haben den Vorteil dass sie direkt auf die Platine gelötet werden, dardurch entfällt die Störanfälligkeit an den Beinchen. Wenn mann aber Quarz und Kondensatoren so nah wie möglich auf der Platine anlötet dürfte es auch keine Probleme geben.

Wegen Flachbandkaben, beim Pollin bekommt man extrem günstigen in belibiger Polzahl.

Gruß
elayne

inka
18.12.2007, 14:52
danke für die tipps, habe stecker und kabel bestellt. hätte ich schon längst so machen sollen :-(

frage zum quarz am am_8, bzw am_32: nach den skizzen in der docu sieht es unterschiedlich aus:
am_8: 3 pins, li-xtal1, re-xtal2, mitte masse

am_32: 2 pins, li- masse über einen c, re-masse über einen c, in der mitte sitzt wohl der quarz, aber ohne anschluss?

damaltor
18.12.2007, 19:08
am meg8 ist kein quarz, sondern ein sog. schwinger. das ist eigentlich bloss ein quarz, bei dem schon die Cs mit im gehäuse sind. du kannst auch so einen kaufen (vorteil: keine Cs nötig, recht einfach; nachteil: durch die 3pin-bauweise keine möglichkeit ihn direkt neben den prozessor zu setzen da die xtal-pins nebeneinander liegen). die alternative ist ein normaler quarz (vorteil: etwas günstiger, wenn man ihn schräg aufsetzt kann er mit einem pin direkt am prozessor liegen, mit dem zweiten etwas weiter weg; das ist gute nähe zum prozessor. nachteil: du brauchst zwei 22pF (picofarad) kondensatoren gegen masse.

inka
18.12.2007, 20:51
also bei deiden prozessoren die äußeren anschlüsse des schwingers an xtal1 und 2, die mitte an GND, ok?

damaltor
18.12.2007, 21:12
ja genau so. oder eben den quarz zwischen die pins, und an jeden noch 22pF gegen GND.

inka
25.12.2007, 14:13
hi allerseits,
nun funktioniert der Atmega_8 auf die zusatzplatine hochgesetzt, konnte jetzt keine fehler mehr festellen:

http://www.a-g-k.com/_asuro/fotos/atmega_32/2007_12_25_01-1.jpg
http://www.a-g-k.com/_asuro/fotos/atmega_32/2007_12_25_02-2.jpg

jetzt wollte ich den ISP stecker dranbauen um das myavr usb board zum programmieren nutzen zu können. Hier wird der stecker beschrieben https://www.roboternetz.de/wissen/index.php/RN-Definitionen#ISP_-_Programmierstecker

ich vermisse ein paar details: ich nehme an, die ansicht auf das eagle symbol ist eine ansicht auf die leiterplatte von der bauteilseite her, so, wie sich der stecker dort im eingebautem zustand darstellt. Auf dem flachbandkabel ich seitlich so eine nase. Wo sitzt diese auf den stecker bezogen? Da wo die geraden, oder ungeraden kontakte sind?

danke für Euere hilfe...

elayne
25.12.2007, 14:34
An Pfostensteckern ist immer an Pin 1 ein Pfeil der diesen markiert. Zusätzlich ist aus gründen der Unverwechselbarkeit in der mitte der ungeraden Seite (also Pin 1,3,5,7,9 usw.) eine Nase bzw eine Nut. Beim Isp Stecker müsste das an Pin 5 sein.

Gruß
elayne

inka
25.12.2007, 14:49
hi elayne,

meinst du diesen pfeil?
http://www.a-g-k.com/_asuro/fotos/atmega_32/2007_12_25_05.jpg

elayne
25.12.2007, 15:16
genau, der gibt an wo sich Pin 1 befindet. Die Nase auf dem Foto liegt direkt bei Pin 5.

inka
27.12.2007, 07:26
auf dem isp stecker
https://www.roboternetz.de/wissen/index.php/RN-Definitionen#ISP_-_Programmierstecker

ist auch der pin 2: VCC

welches VCC ist es eigentlich, die des programmers (mysmart-usb-avr von conrad) oder die des asuro? Wenn die des programmers, wird dadurch der prozessor über das programmierkabel mit spannung versorgt?

damaltor
27.12.2007, 22:47
denk daran, dass bei selbstgecrimpten kabeln der pfeil auch an pin 10 liegen kann sofern du beim crimpen nicht darauf geachtet hast... bei einem korrekt gecrimpten flachkabel müsstest du die pins beim durchmessen gut prüfen können.

inka
28.12.2007, 07:51
hi damaltor,
das kabel ist ein originalkabel, es ging mir darum, ob ich auf der platine, wo der atmega_32 und der ISP pfostenstecker sind zu dem pin 2 des ISP steckers die Vcc des asuro mit-hinlegen soll, oder ob es die VCC ist, die durch das flachbandkabel, also vom ISP programmer kommt??? Wird dadurch (durch das kabel) der prozessor im zielsystem mit spannung versorgt?

elayne
28.12.2007, 11:22
Im normalfall werden bei der ISP Programmierung die 5V des Programmers mit den 5V des Asuros verbunden. So habe ich es bei mir zumindest gemacht und funktioniert einwandfrei.

Gruß
elayne

inka
28.12.2007, 11:34
hi elayne,
das klingt ja so, als würden sich auch andere mit der ISP programmierung des asuro beschäftigen, wie genau hast du es denn realisiert? Könnte man ein paar details erfahren?

elayne
28.12.2007, 12:07
Da habe ich mich wohl unklar ausgedrückt. Ich hab von der allgemeinen ISP Programmierung von Microcontrollern gesprochen. Also ATmega aufm Steckbrett aufgebaut. Mein Asuro habe ich erst seit Weihnachten, aber du hast recht, das langsame Infarot nerft mich. Das will ich auf jedenfall durch eine ISP Schnittstelle ersetzen. Aber erstmal muss ich schaun dass ich mit der Programmierung klarkomme.

Gruß
elayne

inka
28.12.2007, 12:42
Im normalfall werden bei der ISP Programmierung die 5V des Programmers mit den 5V des Asuros verbunden.
Gruß
elayne
genau, oder doch ungenau: die 5V des programmers (Pin2) mit dem 5V-pin des Atmega_8, ohne die asuro-stromversorgung. So hast du es doch auf deinem steckbrett, oder? Ist der asuro samt prozessor an, darf die spannung von der seite des programmers NICHT zusätzlich am prozessor anliegen, richtig?

elayne
28.12.2007, 13:17
Ich hab auf dem Steckbrett die Grundschaltung eines ATmega 8 aufgebaut. Die Spannung am Steckbrett wird durch eine Batterie hergestellt. Mein ISP Programmer (Atmel evalutions Board von Pollin) wird von einem Netzteil mit 5V versorgt. Über den ISP Stecker sind GND und 5V der beiden Spannungsquellen verbunden. Nun kann ich den Controller programmieren solange eine Spannungsquelle aktiviert ist. Welche ist egal, es funktioniert aber auch wenn beide an sind.

Wenn du den Jumper des Asuros nicht gesteckt hast, wird die Spannung ja über eine Diode geführt. Deswegen dürfte es keine Probleme von wegen Ausgleichsströmen ode ähnlichem geben. Du kannst die 5V des Programmers bedenkenlos mit den 5V des Asuros verbinden. Da der Programmer ja dann 5V in den Asuro einspeisst kannst du ihn aber auch ohne Batterien Programmieren, auch wenn der Einschalter auf OFF steht.

gruß
elayne

damaltor
28.12.2007, 14:02
sofern du VCC und GND mit über das kabel legst, wird die zielschaltung mit strom versorgt. achte darauf, dass die akkus nicht parallel dazu leigen; sonst könntest du schnell die doppelte spannung erreichen oder bei einfachen programmerkabeln die rs232 schnittstelle grillen.

elayne
30.12.2007, 15:15
Hey,
ich hab grad zufällig dieses Video (http://www.youtube.com/watch?v=Bp8b3xg5Okw) entdeckt. Interessant ist wie auf dem Asuro die ISP Schnittstelle angebracht ist. Könnte es funktionieren wenn ich MISO, MOSI und SCK parallel zur normalen Inrarorschnitstelle abgreif und dadrüber programmiere?

Gruß
elayne

damaltor
30.12.2007, 15:50
es könnte. aber mit sicherheit sagen kann ich es niciht.
die infrarotschnittstelle ist übrigens am UART angeschlossen so weit ich weiss, und nicht an den ISP pins.

reset brauchst du auch noch btw!

elayne
30.12.2007, 16:42
Achso, ich glaub das versuch ich mal, einfach 5V, GND, MOSI, MISO SCK und RESET rausziehen und Programmieren. Ich berichte obs funktioniert.

Gruß
elayne

robo.fr
31.12.2007, 15:00
Könnte es funktionieren wenn ich MISO, MOSI und SCK parallel zur normalen Inrarorschnitstelle abgreif und dadrüber programmiere?

Das hängt davon ab, welchen Programmierer Du benutzt. Bei einem Programmiergerät wie z.B. der AVR-Dragon mit eingebauten Treibern geht es. Bei Programmieradaptern, die nur mit Dioden oder Widerständen aufgebaut sind, nicht.

http://www.roboterclub-freiburg.de/asuro/hardware/chAtmegaAdapter/SumoAdapter.html

Gruß,
robo

damaltor
31.12.2007, 15:35
hmm hat bei mir in einem ähnlichen schaltkreis mit einem dieser minimal-programmer gut geklappt... probieren würd ich sagen. mit einem treiberbaustein schonst du allerdings deine schnittstelle.

elayne
01.01.2008, 12:05
Hey,
Ich habe meinem Asuro jetzt eine ISP Schnittstelle verpasst indem ich die ISP Pins einfach parallel auf eine Stiftleiste gezogen habe. Das ganze habe ich mit dem ISP programmer des Atmel Evalutionsboard und einem jungfräulichen ATmega 8 getestet => keine Funktion. Was ich nicht bedacht habe ist, dass an den Pins die Motoren hängen die mir das Signal wegziehen. Sobald ich auf "Programmieren" drücke drehen sich die Motoren und Ponyprog liefert eine Fehlermeldung. Man müsste die ISP Pins für die Dauer des Programmierens von dem Asuro trennen.

Gruß
elayne

radbruch
01.01.2008, 12:50
Hallo

Vielleicht kannst du die Leitungen zu den Motoren auf der Zwischenplatine mit Jumpern/Dip-Schaltern (http://de.wikipedia.org/wiki/DIP-Schalter) unterbrechen. Noch praktischer wären Taster/Schalter (z.B. solche "Microschalter (http://www.conrad.de/goto.php?artikel=704713)" die man häufig in alten Mäusen findet) die automatisch beim Einstecken des ISP-Steckers die Verbindung unterbrechen. Oder ein Kleinrelais das anstelle der Spule mechanisch vom ISP-Stecker betätigt wird...

Gruß

mic

inka
01.01.2008, 13:01
hi elayne,
drei fragen:
- wie machst du es mit bildern hinzufügen als download?
- was ist das grüne unter deinem asuro?
- die platine mit dem prozessor hat auf der unterseite pins zum reinstecken in die proz. fassung?

elayne
01.01.2008, 13:43
Hey,
das mit den Jumpern habe ich mir auch schon überlegt, am besten wäre aber eine art Schalter wo auf einmal alle Leitungen trennt, wenn sowas mit dem Stecker gehen würde wäre das cool.

@inka
Die Bilder werden als Attachment hinzugefügt. Diese Option kann man benuzen wenn man über den Button "Antwort erstellen" eine Antwort schreibt. Aber man hat insgesamt nur 3mb frei.
Das grüne is einfach nur ein Lippenfettstift den ich für das Foto unter den Asuro gelegt habe weil mein Tischtennisball nochnicht hebt.
Die Platine habe ich mittels Stiftleisten aufgebaut, ich lad nochmal ein Foto davon hoch.

Gruß
elayne

m.a.r.v.i.n
01.01.2008, 13:58
Hallo elayne,

du mußt auf jeden Fall die RESET Leitung des Asuro über einen 10kOhm Pull Up Widerstand anschließen. Beim Asuro liegt RESET direkt an der Versorgungsspannung. Sonst kann die RESET Leitung vom ISP Programmer beim Programmieren auf LOW gezogen werden.

inka
01.01.2008, 14:19
hi marvin,
muss man dann die RESET-leitung beim asuro von der spannungsversorgungsleitung trennen indem man die leiterbahn/verbindung auftrennt und dort dann einen 10kohm widerstand dazwischenlötet?

Warringer
01.01.2008, 14:21
Ich habe einen Adapter in der Aktuellen Elektor Sonderausgabe 'Microcontroller 2' gefunden.

http://img518.imageshack.us/img518/6350/adapter1hl4.th.png (http://img518.imageshack.us/my.php?image=adapter1hl4.png)

Und eine kleine Erweiterung für diesen SumoAdapter.

http://img185.imageshack.us/img185/4678/adapter2aj2.th.png (http://img185.imageshack.us/my.php?image=adapter2aj2.png)

Beides mehr oder weniger selbstgestrickt. O:)

Aprorps Attachment. Ich habe etwas bessere Erfahrungen mit der Verwendung vom Imageshack gemacht. :P

elayne
01.01.2008, 18:30
Hey,
Intressant, das mit dem Reset habe ich nicht bedacht, danke. Dann versuch ich dass nochmal vorerst ohne die Jumper.

Gruß
elayne

robo.fr
01.01.2008, 21:28
Hallo Warringer,

den Adapter vom Microcontrollersonderheft kenne ich. Mich würde interessieren, wo Du den 2ten Schaltplan gefunden hast ?

Gruß,
robo

Warringer
01.01.2008, 22:20
Den habe ich nicht wirklich gefunden. Das ist so ziemlich mein Versuch die Schaltung dieses SumoAdapters zu erahnen, den du etwas weiter oben gepostet hast, robo.

Ich bin mir nicht ganz sicher, ob das ganz korrekt ist, dürfte aber in etwa so hinkommen. :p

Die IR-LED und der Empfänger sind so beschaltet wie im Asuro Schaltplan und der andere connector is einfach nur für CON1 und CON2 am vordere Rand des Asuro.

damaltor
02.01.2008, 02:51
imageshack ist eine gute idee, denn die 3mb sind eine absolutgrenze, welche leider nicht - auch nicht nach bestimmter zeit - zurückgesetzt wird. bilder zu verlinken kann sihc manchmal lohnen.
wenn die auflösung der biler nicht zu groß ist (ich meine mich an 800x600 zu erinnern) dann werden sie nicht in einer dieser atachment-boxen angezeigt sondern direkt eingefügt. wenn ihr imageshack verwendet, könnt ihr wie ihr bei Warringer gt sehen könnt, eine vorschau einfügen, die auf das große bild verlinkt. das kostet keinen speicherplatz.

m.a.r.v.i.n
02.01.2008, 11:44
Hallo inka,


hi marvin,
muss man dann die RESET-leitung beim asuro von der spannungsversorgungsleitung trennen indem man die leiterbahn/verbindung auftrennt und dort dann einen 10kohm widerstand dazwischenlötet?

Das kommt darauf an. Wenn der Prozessor auf einer Adapterplatine sitzt (so wie bei den obigen Beispielen), kann man den Widerstand auf der Adapterplatine einlöten, ohne Leiterbahnen zu durchtrennen. Sitzt der Prozessor auf der Asuro Platine, muß man die Leiterbahnen durchtrennen. So habe ich es z.B. auch bei meiner ISP Erweiterung (http://www.asurowiki.de/pmwiki/pmwiki.php/Main/AsuroErweiterung) gemacht.

inka
02.01.2008, 12:02
hi marvin,
stimmt das wirklich? Die verbindungen von dem prozessorsockel gehen doch 1:1 nach oben auf die zusatzplatine und damit ist es dem pin 1 und 7 des prozessors ja egal, wo sie verbunden werden, ob unten oder oben. Oder hab ich wieder ein brett vorm...

m.a.r.v.i.n
02.01.2008, 13:08
Hi inka,

da hab ich mich vielleicht falsch ausgedrückt. Die RESET Leitung wird dann natürlich auf dem Adapterboard unterbrochen. Das kann man auf den Bildern von Warringer auch sehr gut sehen. Nur Pin1 zum Asuro Board ist unterbrochen alle anderen gehen 1:1 vom Adapter zum Asuro Board. Die Jumper für die MISO, MOSI SCK Leitung habe ich mir gespart. Funktioniert ohne Probleme (ISP Adpater mit Treiber vorausgesetzt, wie robo.fr schon anmerkte).

inka
02.01.2008, 15:24
hi marvin
ich habe jetzt den 10k widerstand (warum eigentlich 10k, gehen auch 12k?) in die leitung von pin1 unten zum pin1 oben gelegt, wenn ich also oben auf dem adapter zwischen pinns 1 (RESET)und 7 (VCC) messe habe ich 10kohm widerstand...
das ist ok so, denke ich?

damaltor
02.01.2008, 17:40
eigentlich geht alles zwischen etwa 1k und 100k... ich nehme meistens 100k weil ich die über hab =)

ansonsten: ja, ist gut.

Bääääär
02.01.2008, 22:22
Schau mal bei Wikipedia nach "PullUp/PullDown" da steht auch, warum der so beliebig sein darf und was er eigentlich macht. (insofern du das nicht schon längst weißt)

Grüße,
Bääääär

inka
03.01.2008, 07:35
hi Bääär,
habe nachgeschaut, leider etwas genaueres nicht gefunden. Habe als feinwerktechnik-ing immer noch probleme mit der alchimie in der elektronik. In der mechanik ist H7=H7, da wird nicht gefragt "darfs ein bischen mehr sein?"... :-)
p.s. aber vielleicht ist gerade deshalb die mechanik so viel stärker einem verschleiss unterworfen, da nicht so wabbelig wie die elektronik...

damaltor
03.01.2008, 13:06
ok... in den reset pin muss kaum strom fließen. eigentlich geht es da noch unter den nanoampere bereich. das einzige was sein muss, damit der prozessor arbeitet, ist dass der pin von aussen high ist.

mit dem sehr großen widerstandwird dafür gesorgt, dass der pin high ist (er wird auf high gezogen, PULL-up). die größe ist unerheblich, da ohnehin kaum strom fließt.

wenn jetzt der chip programmiert werden soll, dann kann das programmiergerät an den reset pin (also DIREKT am pin) masse anlegen. da der widerstand so groß ist, kommt kaum strom nach, und am pin liegen null volt an:
VCC----PULL-UP---PIN----GND
sowie das programmiergerät "loslässt" zieht der widerstand den pin wieder auf high.

inka
05.01.2008, 13:33
hallo,
kleines erfolgserlebnis:
das flashen eines jungfräulichen atmege_8 auf dem zusatzboard ist gelungen, selbsttest, wie auch verschiedene andere progrämmchen laufen. Das flashen ging mit dem "mySmartusb" board, mit dem mitgelieferten programm, wie auch über AVR-studio...
Bei dem usb board musste ich die spannungsversorgung des zielsystems deaktivieren, 112 seiten selbsttest waren innerhalb von 4-5 sec. drinn...:-)

damaltor
05.01.2008, 14:50
sehr gut! wird ja immer besser :D

inka
06.01.2008, 14:50
hallo allerseits,
jetzt hatte ich auch schon den atmega_32 mal reingesteckt (auf dem foto ist wieder der atmega_8 drinn), der atmega_8 war draussen, nicht erschrecken der verdrahtung wegen, die ist für beide...

http://www.a-g-k.com/_asuro/fotos/atmega_32/2008_01_06_01-1.jpg

ich habe es auch schon mal eingeschaltet, das neu kompilierte selftest programm (mit den einstellungen für atmega32) geflasht, die systemLED wird nach dem einschalten grün, sonst passiert aber nichts...

wir haben hier schon mal hier darüber gesprochen in welchen punkten ein programm (hex) für den 32 anders sein muss:
neu kompilieren mit allen voreinstellungen im AVR-studio die dazu notwendig sind- atmega32, 8mhz, Os, eventuelle registerbezeichnungen im programm müssen an die 32er hardware angepasst werden...

was noch?

damaltor
06.01.2008, 18:28
steht im makefile der passende prozessor?

sonst fang doch langsam an, und schreibe das selftest programm per hand ab. also beginne, ein paar leds zu schalten....

ich weiss auch nicht genau wie viel im bootloader passiert; schliesslich ist zB der 36khz counter hier schon verfügbar (da ja die infrarotfunktionen bereits benutzt werden). evtl musst du da noch selbst hand anlegen? wenn die timer nicht laufen, dann ist die funktion sleep() eine endlosschleife.

inka
06.01.2008, 18:44
hi damaltor,



ich weiss auch nicht genau wie viel im bootloader passiert

boatloader? beim atmega_8 habe ich einfach den prozessor (ohne arexx-bootloader) reingesteckt, mit dem tool von myavr die standard-fusebitts gesetzt und das testprogramm geflasht. Das wars...
ist das bei 32er anders?

Ceos
06.01.2008, 20:35
ich weis das das jetzt vielleicht ein wenig geschnorrt klingt, aber hättest du eventuell einige schaltpläne , die man benutzen kann ? ich würde mir das sehr gerne nachbauen aber dazu eine asuro experimentierplatine verwenden, damit ich mir alle pins und strom und so auf buchsenleisten hochziehen kann ?
ich bin fasziniert von dem topic ... hab aber von elektronik nur mindere kenntnisse ...
zum programmieren per ISP, was für "treiber" brauch cih oder was brauch ich da allgemein für zusatzgerät/programme ?
(mal ganz ehrlich ich bin ein tüftler denker und spieler, aber wenn ihr hier anfangt mit "treiber" und so .... bedank ich mich immer das mein USB-Flashen meistens gut geht) ....
ich find viele einzellösungen wenn cih danach suche aber kann sie nie mit dem asuro vereinen ... deine iss die erste die sowas versucht

damaltor
07.01.2008, 01:48
oh oh... vielleicht solltest du dich noch ein wenig mit den themen befassen und erstmal versuchen den mega8 auszureizen.

schaltpläne gibts da nicht wirklich; es werdne einfach nur die pins per kabel auf die obere platine gezogen und wieder mit dem prozessor verbunden.

zum programmieren per ISP brauchst du ein ISP-kabel (in diesem kann ein treiberbaustein zum schutz der schnittstelle vorhanden sein) und ISP-software wie zB ponyprog. ausserdem brauchst du einen jungfräulichen neuen prozessor und solltes ein grundwissen über fusebits haben, da man hier einen prozessor durchaus unbrauchbar machen kann.

die experimentierplatine ist dafür nutzlos, sie ist erstens VIEL zu klein (der prozessor würde gar nicht drauf passen) und zweitens werden nur wenige pins hochkontaktiert.

evtl sollten wir das probieren wenn du wirklich, wirklich an die grenzen des meg8 gestoßen bist? ;)

inka
07.01.2008, 07:12
hi Ceos,

ich glaube damaltor hat recht...

Das diese idee hier einigermassen in sich vollständig erscheint liegt vielleicht daran, dass ich nicht nur einmal beschreibe dass ich etwas gemacht habe, sondern auch sackgassen beschreibe (z.b. 2 gescheiterte möglichkeiten der hochkontaktierung), ich schildere auch fragen und probleme mit denen jeder anfänger (also auch ich) bei so etwas konfrontiert wird...
Aber auch ich gehöre zu denen, die über "vieles nur wenig wissen" (also keine spezialisten), bin eher von der mechanischen seite, kein microprozessorprofi aber habe hierdurch unheimlich viel gelernt.
Angefangen hat das ganze damit:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=26276&highlight=tiefergelegt

das war vielleicht noch sinnvoll, wenn auch nicht zwingend erforderlich, hat nur oben auf dem asuro etwas platz geschaffen, hatte aber nichts damit zu tun, den asuro bis an seine grenzen auszureizen...
Durch die akkus kam die idee mit dem automatischen auffinden seiner ladestation:

https://www.roboternetz.de/phpBB2/viewtopic.php?t=30676&postdays=0&postorder=asc&start=0

Da glaubte ich schon an die hardwaregrenzen des asuro gekommen zu sein, weil ich für die realisierung einige funktionen gleichzeitig zu brauchen glaubte, die die hardware eben nicht gleichzeitig hergab (liniefolgedioden und ultraschall z.b.). Heute glaube ich, dass es mit guter software genauso geht...
Je weiter ich mit dem aufbau komme, sehe ich es so, dass der sinn des asuro nicht im hardwaremässigem ausbau steckt, sondern im ausreizen seiner gegebenen möglichkeiten durch raffinierte software durch evtl. minimale umbauten unterstützt.
Je umfangreicher ein umbau, um so weiter entfernt man sich von der basis hier und das ist nicht nur schade, sondern im grunde kontraproduktiv. Ich glaube heute das ziel mit dem auffinden der ladestation auch ohne den atmega_32 erreichen zu können...
Trotzdem werde ich den umbau zu ende machen, alleine wegen des übergreifenden lerneffekts, wenn auch mein schwerpunkt in zukunft schon mehr auf software liegen wird...

hier sind noch ein paar bilder vom umbau:

die erweiterungsplatine von der bauteilseite:
die zweite kurze buchsenleiste (von rechts gezählt) hat keine funktion, zwischen die erste und dritte leiste ist von der lötseite her die 28 polige IC-fassung (umgebogene kontakte) dazwischengelötet.

http://www.a-g-k.com/_asuro/fotos/atmega_32/2008_01_07_01.jpg

die erweiterungsplatine von der lötseite:

http://www.a-g-k.com/_asuro/fotos/atmega_32/2008_01_07_02.jpg

hier habe ich einige verbindungen fest vedrahtet um sie nicht immer wieder stecken zu müssen:



signal atmega_8 atmega_32 ISP

MOSI 17 6 1
MISO 18 7 9
SCK 19 8 7
RESET 1 9 5
VCC 7 10 2
GND 8,22 11,31 4,6,8,10


flachbandkabelverbindung:
leider gibt es keine 28polige schneidklemmverbindungstecker für die schmale IC-form, deshalb war der adapter im nächsten bild notwendig

http://www.a-g-k.com/_asuro/fotos/atmega_32/2008_01_07_03.jpg

adapter zwischen prozessorfassung und flachbandkabel:
von der flachbandkabelseite her gesehen

http://www.a-g-k.com/_asuro/fotos/atmega_32/2008_01_07_05.jpg

adapter von der prozessorfassung aus gesehen:
die pinns zur fassung hin waren ursprünglich 0,6x0,6 im quadrat, wurdec auf 0,3x06 abgefeilt...

http://www.a-g-k.com/_asuro/fotos/atmega_32/2008_01_07_04.jpg

inka
08.01.2008, 13:46
hi allerseits,
habe jetzt nach der grundschaltung

https://www.roboternetz.de/wissen/index.php/Bild:Avrtutorial_grundschaltung_mitisp.gif

den atmega_32 auf der oberen platine aufgebaut - programme lassen sich mit avr-studio flashen und verifizieren, prozessor wird aber von dem myavr board nicht gefunden (im gegensatz von dem atmega_8 mit vergleichbarem aufbau).
Das gleiche noch einmal auf einem steckbrett, das gleiche ergebnis. Beim atmega_8 war keine besondere vorbereitung des prozessors (fusebits o.ä.) notwendig, ist es beim 32 anders?

Ist der atmega kaputt? kann ich es irgedwie prüfen?

danke...

damaltor
08.01.2008, 16:17
das könnte evtl am standardmäßig eingeschaltetet JTAG interface liegen, welches einen vollen port belegt. aber wenn du die fuses verändern kannst, dann probiere mal folgende einstellungen für den MEG32:

Low Fuse: 0x1E
High Fuse: 0xC7

das wäre:
externer quarz, lange startup-zeit (damit der quarz in ruhe einschwingen kann)
Brown-Out-Detector eingeschaltet, level 0 (fällt die betriebsspannung unter 4V geht der prozessor in reset)
Kein Bootloader
EEPROM bleibt bei reprogrammierung erhalten
CKOPT Rail-to-Rail (Quarz schwingt mit großer amplitude. kostet 1-2 mA mehr strom, aber ist sehr störunempfindlich)
ISP enabled (sonst lässt er sich ja nicht programmieren... )
JTAG aus (sonst ist ein kompletter port belegt, und kann nicht für anwenderprogramme genutzt werden (ACHTUNG: dies ist standardmäßig aktiviert, evtl wird deshalb nichts funktionieren) )
On-Chip-Debug aus (ohnehin nicht ohne jtag nutzbar)

sowie jtag ausgeschaltet ist, sollte es denke ich funktionieren.

inka
08.01.2008, 17:34
hi damaltor,
danke erstmal....
ich glaube nicht dass ich mit den mir zur vefügung stehenden mittel die fusebits sehen, bzw. ändern kann. aber schauen wir mal...

da der prozessor von dem myavr tool nicht erkannt wird, habe ich nur eine möglichkeit irgendwelche fusebits daten zu sehen, wobei ich nicht weiss, ob es die daten des prozessors sind.
das tool vopn avr-studio bietet im advancemode folgende einstellmöglichkeiten, von denen ich nur den JTAG erkannt habe:
SPI Enable
BOOTRST
EESAVE
OCD enable
und den JTAG enable...

weiter steht dort Bodlevel 2,7V (einstellbar)
boot block 256 words (einstellbar)
ext LFXtal - habe ich jetzt auf 67ms + 32K CK eingestellt, was auch das hinter dem + zu bedeuten mag...

diese daten sind nur bei abgezogenem ISP stecker manipulierbar, wenn ich das myavr board mit dem prozessor verbinde (ISP) sind sie fest(grau) ich kann zwar irgendwelche daten auslesen, die angezeigten ändern sich nicht...
Einstellen kann ich
Mode1 - no programm lock features
BLBO mode1 - no lock aplication section
BLB! mode1 - no lock boot loader section

selbst wenn ich diese einstellungen reinschreibe( write, die grüne LED am myavr board flackert) ist beim nächste herauslesen wieder alles beim alten:
mode3 - Verify and programming disabled
BLBO mode3 - No LPM, No SPM aplication section
BLB1 mode3 - No LPM, No SPM boat loader section

irgendwie komme ich nicht weiter...

damaltor
08.01.2008, 23:52
pass auf dass du nicht irgendwas in den prozessor schreibst, du kannst ihn mit falschen fusebits zwar nicht zerstören, aber auf jeden fall unbrauchbar machen.

versuche mal mit ponyprog dein glück, oder mit einem selbstgebauten adapter. auch in winavr kann man die fuses doch verändern oder?

edit:
das hier könnte dir helfen, es berechnet die fusebytes:
http://palmavr.sourceforge.net/cgi-bin/fc.cgi?P_PREV=ATmega32&P=ATmega32
achte darauf dass:
SPIEN immer prgrammed (0) ist
NIEMALS Ext.clock (0000) ausgewählt ist
JTAGEN unprogrammed(1) ist
OCDEN unprogrammiert(1) ist

aus der obersten auswahlliste kannst du die taktquelle (fpr einen quarz ext high speed resonator o.ä.) und die zeit auswählen nach der er starten soll (im zweifelsfall lieber zu lang als zu kurz). sie wird angegeben in millisekunden plus kilotaktzyklen, also 1ms+1CK ist eine millisekunde plus 1000 zyklen).



morgen zu einer vernünftigen zeit werde ich das genauer erklären wenn du noch fragen hast.

inka
09.01.2008, 07:33
pass auf dass du nicht irgendwas in den prozessor schreibst, du kannst ihn mit falschen fusebits zwar nicht zerstören, aber auf jeden fall unbrauchbar machen.
also doch zerstören (=unbrauchbar). gibt es keine möglichkeit den prozessor wieder in den ur-zustand zu versetzen? das geht doch bei jeder armbanduhr!!! Selbst beim pc reicht es wenn man die batterie für ne zeitlang abklemmt. Also echt - keine chance mit (z.b.) 5V an pin x und y anlegen, alles gelöscht, bzw hard-resettet?


http://palmavr.sourceforge.net/cgi-bin/fc.cgi?P_PREV=ATmega32&P=ATmega32
. habe ich mir angeschaut, sind so viele fachbegriffe die mir absolut fremd sind...
Was mich wundert ist der unterschied zwischen AM_8 und AM_32! der 8er war ganz easy, nix zum einstellen, einstöpseln und ging...

ich habe mir die daten für die fusebits nun zusammengeschrieben, werde weiter mein glück versuchen...

robo.fr
09.01.2008, 12:25
gibt es keine möglichkeit den prozessor wieder in den ur-zustand zu versetzen? das geht doch bei jeder armbanduhr!!!

Hallo Inka,

es sollte eigentlich möglich sein. Um den Prozessor wiederzubeleben brauchst Du "High Voltage Programming". Der AVR-Dragon kann sowas.

Gruß,
robo

damaltor
09.01.2008, 14:42
mit einem HV programmer kannst du ihn retten. aber sowas hat man normalerweise nicht zuhause :D

zu den fusebits allgemein muss gesagt werden, dass "0" = PROGRAMMED also aktiv, und "1" = UNPROGRAMMED = inaktiv gilt. das wird jedoch von dem fuse calculator bereits berückschtigt.

ok, gehen wir mal den calculator durch.
wenn in den listen die werte passend ausgewählt wurden, dann stehen oben rechs die korrekten fuses. geh die liste stück für stück durch, und dann kannst du die beiden fuses in den prozessor schreiben.

Liste1: CKSEL (clockselect) auswahl des taktsignales. möglichkeiten:
EXT.CLOCK: ein taktsignal bestimmter frequenz wird ausserhalb des atmega generiert und über XTAL1 dem prozessor gegeben. nicht einstellen wenn du keinen externen taktgenerator hast
INT.RC.OSC: der interne taktgenerator. auswahl von 1,2,4,8 mhz. dieser taktgenerator geht immer, auch wenn kein quarz und nichts weiter bis auf VCC und GND (sowie RESET) angeschlossen sind. standardeinstellung 1 mhz
EXT.RC.OSC: Ein Externer RC-SChwingkreis ist angeschlossen. (plan im datenblatt). solltest du das jemals verwenden wollen, dann achte darauf die richtige geschwindigkeit auszuwählen (bis 0.9mhz, 0.9 bis 3 mhz, 3 bis 8 mhz, 8 bis 12 mhz) nicht auswählen wenn du keinen RC kreis dran hast
EXT.LOW-FREQ.CRYSTAL: ein sehr langsamer quarz (B ein uhrenquarz mit 32,768 kHz) dient als taktquelle. sehr stromsparend. aber auch seh langsam.
EXT.CRYSTAL/RESONATOR.LOW-FREQ: fast das gleiche, nur es darf auch ein schwinger verwendet werden. bei diesem bräuchte man dann keine kondensatoren gegen GND. diese einstellung würde ich bis etwa 1 mhz empfehlen.
EXT.CRYSTAL/RESONATOR.MEDIUM-FREQ: externer quarz/schwinger, zu empfehlen bis maximal etwa 4 mhz
EXT.CRYSTAL/RESONATOR.HIGH-FREQ: Schnelle externe, quarze, empfohlen ab 4 mhz bis zur maximalfrequenz. DIESE einstellung ist die richtige für einen quarz auf deiner platine!
(diese empfehlungen sind erfahrungswerte, im datenblatt stehen ofizielle werte für welceh MHz bereiche man welceh einstellung nehmen soll.)

immer noch in liste 1: SUT - Start Up Time
Das bedeutet wie lange der Prozessor warten soll bis sich die systemspannung genug stabilisiert hat. probeweise am anfag maximal auswählen, dann evtl versuchsweise verkürzen. auch die längsten startverzögerungen sind jedoch nicht menschlich merkbar. angabe folgendermaßen:
###CK + ###ms
das erste sind "KiloClockCykles", also tausend takte. 2CK sind 2000 takteinheiten.
das zweite sind millisekunden.
der prozessor wartet also eine taktanzahl und dann noch ein paar millisekunden um sicherzustellen dass die bordspannung stabil ist.
wie gesagt, versuch am anfang das längste auszuwählen.

so, das war die erste liste. der korrekte takt ist bereits eingestellet.

Liste2: BOD (Brown-Out-Detection).
Diese Einstellung sorgt dafür, dass ab einer (wählbaren) versorgungsspannung der AVR intern einen RESET generiert und dadurch angehalten wird bis die spannung wieder höher als der gewählte wert ist. so kannst du ihn vor fehlfunktion schützn und hast quasi noch ne batterieanzeige - wenn er nix mehr macht, sind die akkus leer :D
ich empfehle das einzuschalten ("PROGRAMMED").

Liste3: BODLEVEL
Hier wählst du ab welcher spannung der prozessor aufhören soll zu arbeiten. wählbar sind 4,0 und 2,7 Volt. ich würde 4V lassen, denn wenn aus 4 akkus nur noch 2,7 volt rauskommen dann ist ohnehin was kaputt... =)

Liste 4: BOOTRST (Boot-Reset)
Dieses fuse darf nur dann PROGRAMMED sein wenn du einen bootloader aufgespielt hast. dann wird dafür gesorgt dass der prozessor zuerst in den bootloader springt (welcher am ENDE des speichers abgelegt wird) und dann das hauptprogramm abarbeitet. für normalgebrauch UNPROGRAMMED.

Liste 5: BOOTSZ (Boot-Size)
Hier kannst du auswählen wie viele wörter (1 wort = 2 bytes) der bootloader groß ist. beim asuro oriinal prozessor stände hier zB 512 words da er ja 1 kb groß ist. wenn du keinen bootloader verwendest dann ist es unerheblich was hier drin steht.

Liste 6: EESAVE (EEPROM save)
wenn der prozessor neu programmiert wird per ISP wird normalerweise der EEPROM gelöscht. wenn dieses bit PROGRAMMED ist, bleiben EEPROM werte erhalten.

Liste 7: CKOPT (Clock Option)
Dieses Bit hat unterschiedliche bedeutungen je nach taktwahl. ist zB hier ein uhrenquarz angeschlossen, dann können interne kondensatoren eingeschaltet werden (bei den schnellen quarzen leider nich :( ). bei schnellen quarzen wie unseren wird folgendes zur auswahl gestellt:
CKOPT = PROGRAMMED:
der quarz schwing mit höchstmöglicher amplitude ("Rail-To-Rail"). das kostet etwas mehr strom, ist aber dafür sehr störunempfindlich.
CKOPT = UNPROGRAMMED:
Der quarz schwingt mit einer geringen amplitude. das spart strom, aber kann evtl durch störungen zum stillstand kommen. dann hilft nur noch ein reset des prozessors.

Liste 8: SPIEN (Serail Program Downloading Enabled)
Wenn dieses bit UNPROGRAMMED ist, dann ist die ISP schnittstelle deaktiviert (!!) und es können keine programme mehr über ISP geflasht werden. (so zB beim asuro prozessor). aber keine angst, dieses bit lässt sich über isp nicht verändern. trotzdem solltest du darauf achten dass es nicht UNPROGRAMMED wird.

Liste 9: JTAGEN (JTAG enabled)
Dieses fuse aktiviert die interne JTAG schnittstelle. dadruch gehen 8 prozessorpins verloren, aber man kann ihn (zB wenn man ein JTAG ICE kauft) ganz gut debuggen oder auch über JTAG flashen. für uns sollte das UNPROGRAMMED werden, damit alle pins voll nutzbar sind.

Liste 10: OCDEN (On-Chip-Debug Enable)
Dieses fusebit (de)aktiviert das debugging modul von JTAG. dieses sollte man auch deaktivieren (UNPROGRAMMED) wenn das JTAG interface abgeschaltet ist (JTAGEN). es benötigt eigentlich nur strom.

JTAGEN und OCDEN sind beide standradtmäßik AKTIV, alsosind einige pins nicht nutzbar.


versuch mal eine passende einstellung zu finden und dann poste deine fuse bytes hier. dann kann ich kontrollieren ob sie korrekt sind.

inka
09.01.2008, 15:16
hi damaltor,
enorm, danke, da brauche ich tage um das abzuarbeiten...:-)
im ernst, im moment brennts woanders, ich melde mich in ein paar tagen wieder hier...

damaltor
09.01.2008, 16:00
hrhr, kein problem...

/me gibt inka einen feuerlöscher

inka
17.01.2008, 13:04
hi damaltor,
jetzt hatte ich nun endlich zeit dein roman zu lesen - sehr gut geschrieben...
folgendes habe ich am fusecalc eingestellt:
atmega32,
INT.RC.OSC, 8MHz, 6CK + 64ms (habe keinen ext. oszill.)
BOD PROGRAMMED
BODLEVEL 4V
BOOTRST UNPROGRAMMED
BOOTSZ - nicht geändert
EESAVE UNPROGRAMMED
CKOPT PROGRAMMED
SPIEN PROGRAMMED
JTAGEN UNPROGRAMMED
OCDEN UNPROGRAMMED

nach der aktualisierung/anwendung von user settings ergaben sich diese werte: 0x24 und 0xC9

und wohin damit? und wie und womit?

edit_1: erübrigt sich eigentlich, ich konnte mit dem flashtool von avrstudio mein mysmartusb flashboard dazu bewegen die fusebits in dem atmega_32 entsprechend einzustellen :-)
Was mache ich jetzt mit den beiden werten aus fusecalc? aufschreiben wie ne pin von einer geldkarte?

edit_2:
Frage: in der grundschaltung aus RN-wissen ist beim atmega_32 der pin 10 (VCC) verbunden mit pin 30(AVCC) und 32(AREF). ist das immer so, oder spezifisch nur für die grundschaltung?

damaltor
18.01.2008, 13:16
die beiden werte solltest du einfach aufschreiben (ich notiere meine meist mit bleistift auf der oberfläche des chips, so weiss ich welche wo drin sind). aber an sich genügt es, sie in den chip zu schreiben.

ich würde dir empfehlen, EESAVE auf programmed umzustellen, dann wird der interne EEPROM nicht bei jedem flash-vorgang gelöscht und du kannst ihn zur sicherung von parametern o.ä. nutzen.

PIN10 ist die stromversorgung für den prozessor, hier muss VCC angeschlossen werden.
PIN30 ist die stromversorgung für den ADC. auch hier sollte VCC angeschlossen werden, sonst kannst du ihn nicht nutzen. Am besten über eine kleine Spule mit ein paar µH, muss aber nich =)
PIN32 ist die Vergleichsspannung für den ADC. die spannung die hier anliegt, wird als wert "1023" interpretiert. wenn also an einem adc pin zB die hälfte dieser spannung anliegt, wird "511" gemessen.

inka
18.01.2008, 15:13
danke damaltor,

deine aussage zu pin32 interpretiere ich so, dass dort im normalfall (hier als ersatz für den atmega_8) VCC angeschlossen sein sollte...?
in speziellen fällen vielleicht nicht, weil ein anderer wert als die VCC für die vergleichsspannung gebraucht wird...

damaltor
19.01.2008, 13:18
ja, genau so ist das.

wenn du sehr kleine spannungen exakt messen willst kannst du hier auch zB 1 Volt anlegen. dann ist die auflösug sehr fein (1mV) aber dafüür gehts benen nur bis 1V.

inka
21.01.2008, 16:03
so,
das selbsttestprogramm mit dem atmega_32 - zumindest der LED-test - funktioniert, frage:
welche der atmega pins ausser der 2,3 und 17 sind für das funktionieren der IR verbindung zum pc noch notwendig? Sind überhaupt andere dafür erforderlich? Im schaltplan sind nur diese angegeben...
Wo finde ich etwas dazu?

edit: habe noch einmal mit der handycamera geschaut, der asuro sendet :-)
Aber von diesen zeilen kommt nix:

Init();
for (;;) {
SerWrite("\n\r-- ASURO Testing --\n\r",23);beim compilieren kommt eine warnung:
../selbsttest_am-32.c:33: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
-------------------
kann das damit zu tun haben?

danke...

m.a.r.v.i.n
21.01.2008, 22:08
Hallo inka,



welche der atmega pins ausser der 2,3 und 17 sind für das funktionieren der IR verbindung zum pc noch notwendig?

Beim Mega32 wären die entsprechenden Pins 14 (Rx), 15 (Tx) und 21 (OC2). Sonst sind keine weiteren Pins notwendig.
Timer2 muß natürlich initialisiert sein um die 36kHz Trägerfrequenz zu erzeugen und über OC2 auszugeben. Die Initialisierung aus der Asuro Lib sollte auch beim mega32 funktionieren.


TCCR2 = (1 << WGM20) | (1 << WGM21) | (1 << COM20) | (1 << COM21) | (1 << CS20);
OCR2 = 0x91; // duty cycle fuer 36kHz


Bleibt die Frage ob der interne Oszillator genau genug dafür ist.



../selbsttest_am-32.c:33: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness


Trotz der Warnung sollte das Senden funktionieren. Die Funktion SerPrint wäre für Stringausgaben besser geeignet (keine Warnung beim Compilieren und man braucht keine Längenangabe).

damaltor
21.01.2008, 23:25
gibts was neues? gehts jetzt? ansonsten kannst du durch einen cast die warnings beseitigen, aber ich empfehle dir auch SerPrint zu benutzen.

inka
22.01.2008, 06:51
hi m.a.r.v.i.n, damaltor,

danke erstmal...

um 0:21 gibts nichts mehr neues, da ist das basteln am asuro & co. jüngeren überlassen, ich brauche meinen schönheitsschlaf :-)

aber nun im ersnt...
ich habe ursprünglich SerPrint eingesetzt, dann kam im HT nichts an und habe es noch mit Serwrite versucht, ging auch nicht.

heute habe ich es versucht mit der verbindungen
2 - 14 rxd
3 - 15 txd
17 - 21 oc2

leider auch nichts.
dabei fiel mir auf, dass der pin 6/am32 und der pin 17/am8 und der pin 1/ISP bereits verbunden sind (MOSI). das ist wohl wg. ISP notwendig, oder? (beide prozessorpins sind mit dem pin1 am ISP verbunden, nur der am32 steckt im sockel, die verbindungen zu asuroplatine sind durch den am8 sockel durchgeschleift)

Initialisierung des timers2 geschieht mit hilfe der lib asuro.c, wenn sie eingebunden wird, oder?

edit: wegen der frage nach der genauigkeit des internen quarzes habe ich mal probeweise den am32 auf externen quarz umgestellt. im avrstudio habe ich diese einstellung erwischt: ExtXTAL Startup:30us +1k CK, dies lässt sich jetzt garnicht mehr auf intern oder überhaupt anders einstellen... Was ist jetzt wieder wrong???

danke...

m.a.r.v.i.n
22.01.2008, 10:00
Hallo inka,



Initialisierung des timers2 geschieht mit hilfe der lib asuro.c, wenn sie eingebunden wird, oder?


Die asuro.c und asuro.h muß natürlich für den mega32 angepaßt werden. Die Ports Pins sind ja jetzt andere.

damaltor
22.01.2008, 16:10
war da nicht ein comment in der Init() funktion, dass rs232 bzw infrarot bereits im bootloader initialisiert wurde und deshalb nicht in der init funktion erneut eingestellt wird?

inka
22.01.2008, 16:54
in der suro.c steht:

/*
00129 Die serielle Schnittstelle wurde waerend der Boot-Phase schon
00130 programmiert und gestartet. Hier werden die Parameter auf 2400 1N8 gesetzt.
00131 */
00132 UCSRA = 0x00;
00133 UCSRB = 0x00;
00134 UCSRC = 0x86; // 1 Stop Bit | No Parity | 8 Data Bit
00135 UBRRL = 0xCF; // 2400bps @ 8.00MHz

inka
23.01.2008, 06:40
Die asuro.c und asuro.h muß natürlich für den mega32 angepaßt werden. Die Ports Pins sind ja jetzt andere.

na dann, hier wartet noch ne menge arbeit auf mich...

damaltor
24.01.2008, 14:00
Wohl wahr... sag bescheid wenn du nicht weiterkommst.