MODDING-FAQ FORUM

Alles rund ums Modden => Elektronik, Elektrik => Thema gestartet von: Stukaa am Januar 17, 2007, 18:23:15



Titel: Taster als Schalter via AVR
Beitrag von: Stukaa am Januar 17, 2007, 18:23:15
so hab mal aus langeweile das ganze in digital für nen ATmega8 programmiert, hat dann halt noch unendlich erweiterungsmöglichkeiten.. ich bin grade dabei mir AVR's als steuerungen für moddingeinlagen nutzbar zu machen und hab damit mal ne erste grundlage gelegt... vorteile mit microcontrollern: locker 8 taster-schalter auf demselben platz wie die analoge schaltung mit 4 kanälen, nebenbei billiger und flexibel... wollts nur mal kundtun, bei interesse > melden


Titel: Re: Taster als Schalter
Beitrag von: Extension am Januar 30, 2007, 12:20:25
unsere geliebter Crawler hatte schon mal eine digitale Variante fertig gehabt, da musste man auch nichts mit trimmern einstellen. IMHO ist  die Sache mit den µC nur für "harte" Jungs. Aber gegen ein gescheites Tutorial/Aufbereitung hätten wir natürlich nichts gegen


Titel: Re: Taster als Schalter
Beitrag von: Stukaa am Januar 30, 2007, 15:50:02
huui ich bin ein harter junge  ;D  nee quatsch aber ich kann mich schon mal an ner aufbereitung probieren.. denke mal dass das ja nicht wirklich schlimmer is als die analoge variante.. gut, man braucht halt extra noch sonnen isp adapter, aber die meisten werden sowas doch wegen ner lcd ansteuerung oder ähnlichem sowieso haben oder? 

ich werd mir bei der nächsten reichelt bestellung mal nen paar attinys bestellen und mal probiern.. ich denk der ATmega8 ist dafür n bissel zu fett  :)


Titel: Re: Taster als Schalter
Beitrag von: Fabeulous am Juni 7, 2007, 15:28:33
Hallo,
Ich habe ein Problem:
Undzwar habe ich die Schaltung auch nachgebaut aber auch eins der hier schon oft erwähnten Probleme... Nämlich das die Schaltung zwar an schaltet aber nicht aus schaltet... Ich habe schon alles ausprobiert was ich in diesem Thread lesen finden konnte. Ich habe die Schaltung auch schon zweimal gebaut nur trat bei beiden dieser Fehler auf.
Ich kann euch acuh ein Foto liefern von Vorder und Unterseite aber ich denke das wird euch nicht viel helfen bzw. es wäre eine Zumutung weil der Testaufbau recht chaotisch ist...
Ich hab überlegt ob ich vlt. ein Falsches bauteil habe... Welches Bauteil könnte denn an diesem Fehler schuld sein? Oder kennt ihr noch irgendwelche Tricks?
Vielen Dank schonmal!
MFG
Fabeulous


Titel: Re: Taster als Schalter
Beitrag von: Stukaa am Juni 8, 2007, 14:47:43
@ Bilder: ich würd mal sagen egal, jede info kann nützlich sein, immer her

einfach mal ins blaue geschossen: ist dein trimmer der richtige? wie lang ist das kabel zum taster? wirklich keine unbeabsichtigten lötbrücken?
- ich mein ich hab ja keine ahnung aber für mich sieht das so aus als könnte kein richtiger pegel aufgebaut werden??

mal OT:
hmm meine digitale variante ist seit ca. 14 tagen einsatzbereit.. zwar auf nem mega8 aber immerhin.. war jetzt garnicht sooo schwer.. zumindest funktioniert sie imho wesentlich zuverlässiger als diese variante..
ich bin allerdings grade in der 12.. ein bisschen stressy also.. mal sehn wann ich zum aufbereiten komme...


Titel: Re: Taster als Schalter
Beitrag von: Fabeulous am Juni 8, 2007, 16:17:29
japs also der trimmer ist der richtige aber mein kabel zum taster ist etwas länger... ich mache mal nen foto aber wie gesagt es ist etwas chaotisch...
Danke trotzdem!

EDIT:
So ich habe mal Fotos gemacht:
Oberseite:
(http://fabeulousde.h198298.serverkompetenz.net/CIMG6316.JPG)

Unterseite:
(http://fabeulousde.h198298.serverkompetenz.net/CIMG6315.JPG)


Alles nochmal in höherer Auflösung:
http://fabeulousde.h198298.serverkompetenz.net/Desktop.rar
Ach so ich habe einfach mal mit pinken Punkten die Bauteile markiert die bei meinem ersten Aufbau benutzt wurden.


Titel: Re: Taster als Schalter
Beitrag von: Stukaa am Juni 10, 2007, 11:23:46
ohoh

das sieht so aus als versuchtest du, tatsächlich mehrere dieser schaltungen nebeneinander aufzubauen.. und dann auch noch längere kabel ( >1m??) und dann vielleicht auch noch mehradrige kabel, um mehrere signale über ein kabel zu schalten??

vergiss es. Ist zumindest meine meinung.. ich habs versucht, und sobald die kabel länger wurde, und ich mehradrige kabel mit mehreren signalleitungen nebeneinander benutzt hab, gings nimmer.. das riesen ding was du da hast wäre prima per microcontroller zu machen: atmel µC haben ja direkt 8 bit, sieht so aus als bräuchtest du die schaltung 8 mal?  :)

mal by the way: was wird das überhaupt? so 100% blick ichs nicht.. erklär mal was wozu da ist :D
speziell was die ganzen ic fassungen auf der linken seite sollen? sieht aus als wolltest du 8 mal die taster als schalter klamotte haben, aber dazu würdest du ja nur 2 ics brauchen??

€dit: kannst du vielleicht mal ne nahaufnahme der rückseite nur von dem verwendeten schaltkreis machen und das evtl auch mit nem cd stift kennzeichnen? im moment erkennt mans irgendwie ned so doll..
sag mal wie oft hast du denn schon platinen gelötet.. so vom weiten sehn die lötstellen ja nicht sooo prima aus!?


Titel: Re: Taster als Schalter
Beitrag von: Fabeulous am Juni 10, 2007, 12:01:54
Also ne das ist wohl das zweite oder erste mal das ich mich an sowas mache... habe noch nicht viel erfahrung damit.
Richtig ich wollte die Taster als Schalter Schaltung 8 mal aufbauen... ja ich hätte dafür auch nur zwei IC's nehmen können aber ich hatte die dinger hier sowieso rumfliegen und da hab ich mir gedacht das ichd a auch ruhig ein par verwenden könnte...

Die Schaltung soll 8 Relais ansteuern.. Also letztendlich führt es darauf hinaus das ich mit einem Tasterdruck ein Relais ansteuern kann... Diese Relais sollen wiederum diverse Beleuchtungsklamotten schalten...

Was meinst du mit zu langen Kabeln? Ich wusste nicht das die Länge dabei eine Rolle spielt... Also ich hatte nicht damit gerechnet das der Widerstand des Kabels dabei entscheidend sein kann... Aber es sind übrigens keine Mehradrigen Kabel.

Das mit den Micorcontrollern fände ich persönlich auch besser weil man damit ja wirklich mehr machen kann udn abegsehen davon interessieert mich die Programmierung auch, aber ich traue es mir ehrilch gesagt nciht zu ohne jegliche Erfahrung sowas zu bauen... oder kennt ihr ein TUT dazu?

Foto kommt sofort!
Vielen dank schonmal!


Titel: Re: Taster als Schalter
Beitrag von: Stukaa am Juni 10, 2007, 12:14:14
http://www.mikrocontroller.net/articles/AVR-Tutorial

wenn du dich _ernsthaft_ damit beschäftigen willst, dann kannst du mich gern adden und dann werde ich dir sagen was zu tun ist.. les aber vorher die einleitung des tutorials.. ich hoffe du kannst schon irgendeine programmiersprache..

und was du da mit den ics gemacht hast ist mir noch vollkommen schleierhaft.. bitte mach doch mal ne makroaufnahme von der oberseite deines markierten ics, aber so, dass pin 1 links oben auf dem bild ist, und dann erklär mir mal was jedes einzelne kabel ist und wohin es geht.. ich blicks absolut nicht..

ich geh jetzt erstmal grillen erwarte also keine baldige antwort.. hast ja eh erstmal was zu tun  ;D

edit: wie lang ist das kabel zum taster denn nun?
edit2: naja mit dem icq plugin hier im forum passt wohl grade was ned: -entfernt-


Titel: Re: Taster als Schalter
Beitrag von: Fabeulous am Juni 10, 2007, 12:51:33
Danke! ICh lese mir das mal durch und ich kann PHP, Pascal, VB und ich hab auch schonmal auf nem 6502 Microprocessor programmiert...
Ich melde mich nochmal für den Rest! :p
Danke erstmal und guten apetit! :P


Titel: Re: Taster als Schalter
Beitrag von: Stukaa am Juni 10, 2007, 18:43:43
so grillen war prima dank dir.. was wär auch grillen ohne gewitter  ;D

naja dann haste ja prima vorraussetzungen.. dann kriegste das schon hin.. ich kann pascal und comal aus der schule, und hab mir im rahmen einer facharbeit die sache mit den AVR µC von null auf beigebracht.. wenn du pascal aus der schule kennst habt ihr ja sicher auch assembler behandelt, und architekturen besprochen.. dann fällts dir sicher leichter als es mir gefallen ist


Titel: Re: Taster als Schalter
Beitrag von: Fabeulous am Juni 10, 2007, 21:02:04
Yoa programmiertechnisch denke ich bekomme ich das hin...
Ich glaube das mit dem 6502 Prozessor war auch Assembler aber halt auf nem anderen prozessor.. na ja wurscht
Ich habe mich jetzt dazu durchgerungen das als Microprocessor zeugs zu machen! Ich wollte sowas sowieso mal machen!
Nun würde ich deswegen gleich mal bei reichelt die paar teile bestellen...
Ich mache mir nur ein paar sorgen wegen dem Elektronik krams also dem anschließen und so aber wenn du bzw. ihr mir da helfen würdet dann wäre das ja schon ganz fein... Ich stelle gleich mal die Bestelliste hier rein könnt ihr mir dann sagen ob die so okay ist bzw. was ich noch benötige... naja schonmal vielen dank und bis später :P


EDIT:
Hier die Liste:

STECKBOARD 2K4V
Experimentier-Steckboard 1280/400 Kontakte
8,85 €
1
 
8,85 €

µA 7805
Spannungsregler 1A positiv, TO-220
0,17 €
1
 
0,17 €

MAX 232 CPE
RS232-Driver, DIL-16
0,41 €
1
 
0,41 €

GS 28
IC-Sockel, 28-polig, doppelter Federkontakt
0,082 €
1
 
0,16 €

H25PR150
Lochrasterplatine, Hartpapier, 150x100mm
1,70 €
1
 
1,70 €

SPL 20
IC-Fassung, 20-polig, einreihig, RM 2,54, gerade
0,31 €
1
 
0,31 €

ATMEGA 8-16 DIP
ATMega AVR-RISC-Controller, DIL-28
1,70 €
1
 
1,70 €

SL 2X20W 2,00
2x20pol. Stiftleiste, gewinkelt, RM 2,00
0,87 €
1
 
1,74 €

74HCT 244
IC-SCHALTUNG
0,26 €
1
 
0,26 €

RAD 10/35
Elektrolytkondensator, 5x11mm, RM 2,0mm
0,041 €
1
 
0,21 €

RAD 22/35
Elektrolytkondensator, 5x11mm, RM 2,0mm
0,041 €
1
 
0,21 €

D-SUB ST 25US
D-SUB-Stecker, 25-polig, gewinkelt, RM 7,2
0,41 €
1
 
0,41 €

OSZI 8,000000
Quarzoszillator, 8,00 MHz
1,55 €
1
 
1,55 €

D-SUB BU 09US
D-SUB-Buchse, 9-polig, gewinkelt, RM 7,2
0,21 €
1
 
0,21 €

GS 40
IC-Sockel, 40-polig, doppelter Federkontakt
0,11 €
1
 
0,23 €

BAT 43
DIODE
0,11 €
1
 
0,11 €

BL 2X10G8 2,54
2x10pol. Buchsenl., gerade, RM 2,54, H.: 8,5mm
0,32 €
1
 
0,32 €

GS 28P-S
IC-Sockel, 28-polig, superflach, gedreht, schmal
0,36 €
1
 
0,36 €

D-SUB ST 25GW
D-SUB-Stecker, 25-polig, gewinkelt, RM 9,4
1,20 €
1
 
1,20 €



Titel: Re: Taster als Schalter
Beitrag von: Stukaa am Juni 11, 2007, 15:28:44
also sieht eigentlich nicht soo verkehrt aus..

statt dem quarzoszillator würde ich einfach einen schwingquarz nehmen und die 2 passenden kerkos.. kommt dich fast nen euro billiger.. oder, wenn du nicht grade die RS232 sachen machen willst, brauchst du auch garkeinen taktgeber, die AVRs haben ja einen internen

den euro würde ich direkt in nen zweiten mega 8 investieren, man weiß ja nie..

nimm auf jeden fall auch präzisionssockel für die µC, und zwar so, dass ein sockel direkt auf den µC kommt und ein anderer auf das board verlötet wird.. dann steckst du sockel in sockel.. du musst nämlich theoretisch bei jedem lötvorgang den µC aus der fassung ziehen.. dabei sind mir schon pins abgebrochen..

dass du einen isp programmer brauchst hast du bedacht?

und irgendwie (weiß nicht ob du die noch so zuhause hast) fehlen der 47nF kerko und 10kohm widerstand, die an den reset pin drankommen (zumindest mikrocontroller.net macht das so, und anders hab ichs noch nie getestet..

EDIT: mir fällt grade noch auf: hast du die 2 kondensatoren die du am festspannungsregler noch haben solltest dabei? und zum thema festspannungsregler: ich mein gehört zu haben, dass der LM2940 nen besseren wirkungsgrad hat, je nachdem was du damit vorhast könnte das ja von interesse sein.. und wenn du wirklich 1A drüber ziehen willst, nimm einen großen kühlkörper: ich hab da einen von einem slot-P3 dran..


Titel: Re: Taster als Schalter
Beitrag von: Fabeulous am Juni 11, 2007, 16:26:59
Okay Danke! Das mit den einzelnen Teilen werde ich nachher mal zuhause anschauen und dann poste ich nochmal ob die teile die ich da dann kaufen würde oaky wären...
Das mit dem ISP hab ich mir angeschaut aber da bin ich mir nciht sicher was ich kaufen soll... ich mein da gibts ja mehrere möglichkeiten und ich weis nicht ob ich mir lieber son fertigen ISP oder auch nen bausatz kaufen soll... was könnt ihr denn empfehlen?
Vielen Dank!


Titel: Re: Taster als Schalter
Beitrag von: TzA am Juni 11, 2007, 17:21:00
ISP empfehle ich immer den hier (http://www.avr-asm-tutorial.net/avr_de/beginner/hardware.html#ParPort), ist auch bei mir erfolgreich im Einsatz.
Also doppelte Fassungen halte ich für übertrieben, wenn man beim herausziehen des ICs mit nur ein bisschen Vorsicht vorgeht sollte da eigentlich nix passieren.
Und die Schaltung wird ja eh erst auf dem Steckbrett getestet.
Würde dir aber auch zu den Präzisionsfassungen raten, die sind viel angenehmer.


Titel: Re: Taster als Schalter
Beitrag von: Stukaa am Juni 11, 2007, 18:21:55
TzA hat ihn mir auch empfohlen.. ich benutz ihn selber, keine probleme :bestens:


edit@xonom

bitte kein spam mehr von wegen der is toll etc. das thema ist so und so schon weit weg von eigentlichen support ich meine was hat das mit der normalen schaltung zu tun.


Titel: Re: Taster als Schalter
Beitrag von: Fabeulous am Juni 12, 2007, 13:15:53
So ich habe versucht die Bestelliste zu kompletieren... leider habe ich nicht so viel ahnung von den einzelnen Elektronik komponenten!
Könnt ihr mir, wenn es nicht zu umständlich ist, die bestellnummern bei Reichelt raussuchen oder mir die einzelnen Komponenten besser beschreiben damit ich sie raussuchen kann?!

Außerdem würde ich auch gerne noch die Teile für die Schaltung auf die das ganze hier hinauslaufen sollte mitbestellen...
Es hat doch schonmal jemand das ganze auf Basis eine Atmel realisiert oder?
Könnte mir dieser bzw. ihr mir helfen die richtigen Teile zusammenzusuchen?


Ach und soll ich ruhig immer hier weiter rein schrieben oder eher nen neuen Thread auf machen? Also weil das ganze hier ja wie gesagt ziemlich vom Theam abweicht?!
Vielen Dank Schonmal!


Titel: Re: Taster als Schalter
Beitrag von: xonom am Juni 12, 2007, 14:03:12
jo ich hab das mal abgetrennt und verschoben denke mal das past gut hier rein weil es halt wenig mit dem eigentlichen support zu der normalen schaltung zu tun hat.

fragen die den avr betreffen kannste natürlich stellen und speziel stuka wird dir was die schaltung betrifft da helfen können.

die bauteile für den ISP sieht man eigentlich im Link recht gut und die paar widerstände etc solltest dir eigentlich ohne probleme bei reichelt raussuchen können.  :bestens:


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 12, 2007, 16:15:29
daaa is der thread  :idee: ok.. dann spammen wir hier weiter..

also wie gesagt, taster als schalter mit einem atmel µC, den code gibts fast schon so auf mikrocontroller.net in der codesammlung.. da das free/shareware ist, war es mir halt erlaubt das auf meine bedürfnisse anzupassen..  gebaut hab ich das also schon..

zur schaltung wäre es gut zu wissen was du damit machen willst.. und in sachen Elektrotechnik bin ich nicht wirklich kompetent, grade deshalb bin ich ja auf µC umgestiegen...

@ xonom:  da hat er recht.. das ist nicht wirklich kompliziert die teile auch zu finden..

kann nur immer wieder auf meine ICQ verweisen.. speziell so sachen wie bauteilfragen.. nicht wirklich wichtig die für die nachwelt zu erhalten..

EDIT: @xonoms EDIT: naja ok spam wars irgendwie schon.. aber ich wollte halt nur TzA's aussage bestärken.. wenn man sich so durch die foren liest, bekommt man manchmal den eindruck, alles ausser den ewig teuren isps von atmel wäre mist.. und das stimmt halt imho ned..


Titel: Re: Taster als Schalter via AVR
Beitrag von: ReST.darry am Juni 12, 2007, 20:02:05
Tach allerseits...ich muss auch nochmal meinen senf spenden^^
Ich hab das ganze mal testweise für einen Kreislauf auf nen PICAXE 08M geschrieben.
Ist zwar jetz in Basic und man könnte bei mir jetz max. 3 Kreisläufe dranhängen, aber das sollte schnell umzuschreiben sein (37 bytes Code) bzw. in C gibts das ja schon... Und mit nem 18er PICAXE gehn da auch gerade 8 Taster+8 Ausgänge dran^^
Hab das mal als pic angehängt, vllt wills sich ja wer ansehn...is btw mein erstes selbstgeschriebenes "Programm" ;)
mfg
darry

Ach noch was, "Taster als Schalter" nennt man auch Stromstoßrelais, zumindest von der Funktion her ;D


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 12, 2007, 20:03:54
hmm hab mir das mal angeschaut..

leider programmiere ich nicht in basic, ich nutze ASM.. bloß von dem was ich so verstehe.... kann das sein dass dir eine entprellung fehlt?


Titel: Re: Taster als Schalter via AVR
Beitrag von: ReST.darry am Juni 12, 2007, 20:56:10
Anfangs habe ich das auch feststellen müssen.
Wenn man schnell gedrückt hat, sprang die LED manchmal nur ganz kurz an...
Dann habe mir gedacht, dass sone kleine Pause nach dem state-Wechsel schon ganz gut entprellen sollte...Theorie hin oder her, in der Praxis tut sie das auch! ;)
mfg
darry


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 12, 2007, 22:24:19
So da bin ich mal wieder... Erstmal vielen lieben dank an die lieben moderatoren die den ganzen kram hier ein bischen aufgeräumt bzw. umgeräumt haben! :D
So ich habe jetzt gerade erstmal versucht die Einzelteile für den ISP zusammenzukramen:

Der IC:
LS 245 SCHOTTKY-TTL 0,26 € 1   0,52 € 
GS 20P IC-Sockel, 20-polig, superflach, gedreht, vergold. 0,24 € 1   0,47 €

Der ganze Kram für den "ISP Stecker"
PFL 10 Pfostenbuchse, 10-polig, mit Zugentlastung 0,092 € 1   0,37 € 
PSL 10 Pfostenstecker, 10-polig, mit Verrieglung, gerade 0,18 € 1   0,74 € 
AWG 28-10G 3M Flachbandkabel AWG28, 10-pol., grau, 3m-Ring 1,95 € 1   1,95 €

Einzelteile für den Anschluss an den Parallel-Port des PC's:
AK 401 D-SUB Verlängerung, 1:1, 25-pol., ST/ST, 1,8m 1,40 € 1   1,40 € 
D-SUB BU 25GW D-SUB-Buchse, 25-polig, gewinkelt, RM 9,4 1,30 € 1   2,60 € 

Widerstand:
1/4W 47K Kohleschichtwiderstand 1/4W, 5%, 47 K-Ohm 0,033 € 1   0,33 € 

Leider fehlt wohl noch ein Kondensator... Ich kann aber die zahl bzw. eher die Einheit nicht lesen... für mich steht da "nm" als Einheit aber man bräuchte ja wohl irgendwas mit Farad... na ja ich hoffe ihr könnt mir helfen?!

So dann habe ich noch das Schwingquarz rausgesucht:
8,0000-HC18 Standardquarz, Grundton, 8,0 MHz 0,24 € 1   0,24 € 
Ich hoffe das ist das richtige bitte korrigiert mich wenn ich falsch liege!?

So dann sagte Stukka noch was von einem "47nF kerko und 10kohm widerstand". Da habe ich folgendes:
1/4W 10K Kohleschichtwiderstand 1/4W, 5%, 10 K-Ohm 0,033 € 1   0,33 € 

Leider habe ich keinen Keramikondensator mit 47 nF gefunden..(ich habe alles bei reichelt nachgeschaut) ist er nicht da oder habe ich den Wald vor lauter bäumen nicht gesehen?

So dann habe ich noch ein paar grundsätzliche Fragen dazu:
Zitat von: Stukaa $txt[176] Juni 11, 2007, 15:28:44
EDIT: mir fällt grade noch auf: hast du die 2 kondensatoren die du am festspannungsregler noch haben solltest dabei? und zum thema festspannungsregler: ich mein gehört zu haben, dass der LM2940 nen besseren wirkungsgrad hat, je nachdem was du damit vorhast könnte das ja von interesse sein.. und wenn du wirklich 1A drüber ziehen willst, nimm einen großen kühlkörper: ich hab da einen von einem slot-P3 dran..

Was ist denn ein festspannunsgregler und wozu brauche ich das? Und Welche Dimensionen müssten die einzelnen erwähnten Bauteile denn haben?


So nun erstmal vielen dank für eure Geduld! Ich weis das solche Fragen für euch wahrschienlich echt kacke sind weil euch das wie kinderkram vorkommt...
Aber ich habe halt noch keine Erfahrung damit und alle anderen Versuche mir Erfahrung selber anzueignen sind bisher fehlgeschlafen... Ich Versuche soviel wie möglich selbst zu machen, nur manches weis ich halt noch nicht!
Trotzdem Schonmal vielen dank für alles geleistete und noch zu leistendes!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 13, 2007, 13:00:02
also mal von oben nach unten..
Zitat:
Widerstand:
1/4W 47K Kohleschichtwiderstand 1/4W, 5%, 47 K-Ohm 0,033 € 1  0,33 €


das stimmt nicht.. in der zeichnung steht 4k7 ohm.. das sind 4,7kohm
Zitat:
Leider fehlt wohl noch ein Kondensator... Ich kann aber die zahl bzw. eher die Einheit nicht lesen... für mich steht da "nm" als Einheit aber man bräuchte ja wohl irgendwas mit Farad... na ja ich hoffe ihr könnt mir helfen?!


naja da steht 10n.. das farad lässt man warum auch immer weg.. beim widerstand steht ja auch kein ohm zeichen dahinter.. KERKO 10N heisst das zauberwort

@Quartz.. den kannst du natürlich benutzen, aber dir fehlen noch die bürdekapazitäten.. das sind kondensatoren (i.d.r. wenige picofarad) die an jeden pin des quartzes gegen masse geschaltet werden müssen.. wieviel picofarad du genau brauchst, steht in der artikelbeschreibung

@47nF : KERKO 47N ist die artikelnummer
@ widerstände generell: nimm metallschicht.. ist billiger.. und von den 10k widerständen bestell dir ein paar mehr.. ich würde sagen mind. 5..

@ Festspannungsregler: das sind bausteine, die eine eingehende variable spannung in einem bestimmten bereich in eine ganz bestimmte spannung umwandeln können.. dabei wird ne menge wärme frei.. du kannst dann z.b. mit einem 10V steckernetzteil den AVR betreiben, der 5V benötigt..
schaltplan dazu:
http://www.blafusel.de/bilder/spannung/78xx.gif
halt nur den 7805 durch den genannten LM... ersetzen.. die genaue bezeichnung bitte nachschlagen

http://www.blafusel.de/misc/spannung.html#2  da steht ne beschreibung zur schaltung

aber warum fragst du? du hattest doch einen 7805 auf deiner ursprünglichen bestellliste?


@Kinderkram: naja das wird schon.. vor 1/2 jahr hab ich die gleichen fragen gestellt :bestens:



Titel: Re: Taster als Schalter via AVR
Beitrag von: ReST.darry am Juni 13, 2007, 22:05:51
Wollte nur mal klugsch***ern:
Wenn Du nämlich, wie es scheint, 10 Widerstände nimmst (was vor allem empfehlenswert ist wenn man sich ne komplette Bauteilesammlung am aufbauen ist..mein Bastelkeller ftw ;D), dann findet man bei Reichelt:

Kohleschicht x10 = 0,33€
Metall x10 = 0,49€

Aber wie gesagt nur wenn man viele braucht.
Und ob man ne Toleranz von 5 oder 1% hat ist imho bei soner unkritischen Schaltung auch schnuppe...


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 14, 2007, 21:29:56
okay jetzt habe ich glaube ich soweit alles!
Ein Festspannunsgregler ist dann für einen Atmel quasi sowas wie ein Netzteil mit integriertem eingeschränktem USV für nen PC... ich denke das kann man so sagen?! :D

Yoa das mit dem 4k7 ohm widerstand wahr wohl ein missverständniss... da ich nicht wusste was das für eine eigenltich Einheit ist habe ich das einfach mal bei Google eingetippt und die erste Seite zeigte mir was von 4700 kohm an... der Wert kam mir auch etwas komisch vor aber hat dann gegenüber meiner unwissenheit gewonnen :D

Ach und das mit den mehreren Widerständen bestellen ist klar... aber trotzdem danke! :P

So ich poste dann gleich nochmal meine aktualisierte Bestelliste...
Wie immer vielen Dank!

EDIT:
So ich habe dann hier mla die überarbeitet Version:
STECKBOARD 2K4V Experimentier-Steckboard 1280/400 Kontakte 8,85 € 1  8,85 € 
MAX 232 CPE RS232-Driver, DIL-16 0,41 € 1  1,23 € 
GS 28 IC-Sockel, 28-polig, doppelter Federkontakt 0,082 € 1  0,25 € 
H25PR150 Lochrasterplatine, Hartpapier, 150x100mm 1,70 € 1  1,70 € 
ATMEGA 8-16 DIP ATMega AVR-RISC-Controller, DIL-28 1,70 € 1  5,10 € 
SL 2X20W 2,00 2x20pol. Stiftleiste, gewinkelt, RM 2,00 0,87 € 1  1,74 € 
74HCT 244 IC-SCHALTUNG 0,26 € 1  0,77 € 
RAD 10/35 Elektrolytkondensator, 5x11mm, RM 2,0mm 0,041 € 1  0,41 € 
RAD 22/35 Elektrolytkondensator, 5x11mm, RM 2,0mm 0,041 € 1  0,41 € 
D-SUB ST 25US D-SUB-Stecker, 25-polig, gewinkelt, RM 7,2 0,41 € 1  1,23 € 
D-SUB BU 09US D-SUB-Buchse, 9-polig, gewinkelt, RM 7,2 0,21 € 1  0,64 € 
GS 40 IC-Sockel, 40-polig, doppelter Federkontakt 0,11 € 1  0,34 € 
BAT 43 DIODE 0,11 € 1  1,13 € 
BL 2X10G8 2,54 2x10pol. Buchsenl., gerade, RM 2,54, H.: 8,5mm 0,32 € 1  0,32 € 
GS 28P-S IC-Sockel, 28-polig, superflach, gedreht, schmal 0,36 € 1  1,08 € 
LS 245 SCHOTTKY-TTL 0,26 € 1  0,78 € 
PFL 10 Pfostenbuchse, 10-polig, mit Zugentlastung 0,092 € 1  0,37 € 
PSL 10 Pfostenstecker, 10-polig, mit Verrieglung, gerade 0,18 € 1  0,74 € 
AWG 28-10G 3M Flachbandkabel AWG28, 10-pol., grau, 3m-Ring 1,95 € 1  1,95 € 
GS 20P IC-Sockel, 20-polig, superflach, gedreht, vergold. 0,24 € 1  0,71 € 
AK 401 D-SUB Verlängerung, 1:1, 25-pol., ST/ST, 1,8m 1,40 € 1  1,40 € 
D-SUB BU 25GW D-SUB-Buchse, 25-polig, gewinkelt, RM 9,4 1,30 € 1  2,60 € 
8,0000-HC18 Standardquarz, Grundton, 8,0 MHz 0,24 € 1  0,71 € 
1/4W 10K Kohleschichtwiderstand 1/4W, 5%, 10 K-Ohm 0,033 € 1  0,33 € 
KERKO 10N KERAMIK-KONDENSATOR 0,041 € 1  0,41 € 
KERKO 47N KERAMIK-KONDENSATOR 0,070 € 1  0,70 € 

So das sind hoffenltich bzw. meiner Meinung nach die Sachen für den Festspannungsregler:
LM 2940 CT5 Festspannungsregler +5,0V, 1A, TO-220 0,40 € 1  1,20 € 
V FI356 Kühlkörper für Gehäuse TO-220,9,9K/W 0,55 € 1  1,66 € 
TANTAL 0,33/35 Tantal-Kondensator, Rm 2,5, 0,33µF/35V 0,092 € 1  0,92 € 
TANTAL 0,1/35 Tantal-Kondensator, Rm 2,5, 0,1µF/35V 0,11 € 1  1,14 € 

Leider habe ich noch ein kleines Problem:
Undzwar finde ich irgendwie die Bürdekapazitäten Kondensatoren nicht raus, weil es kein Datenblatt zu dem Quartz gibt. Ich habe weder bei Reichelt noch bei Google ein Datenblatt gefunden. Auch nichts wie ich diese Kapazität berechnen könnte. Könnt ihr mir nochmal helfen? Ich denke dann hätte ich alles und könnte die Bestellung losschicken!

@Stukka: Du hast sowas ja schonmal aufgebaut, also die Taster als Schalter Schaltung für den Atmel, könntest du mir noch sagen welche restlichen Bauteile ich noch brauche um letztendlich diese Schaltung zu bauen?!

Vielen Dank nochmal an alle! Ohne euch würde ich das hier echt nicht gebacken bekommen!


Titel: Re: Taster als Schalter via AVR
Beitrag von: OlafSt am Juni 15, 2007, 06:01:38
Als Quarz-Kapazitäten kannst du dieselben KERKO nehmen, die du schon hast. Ob nun 22, 27 oder 33pF, ist nicht so ungeheuer wichtig - ich hab immer 27pF verwendet bzw. gleich einen Oszillator.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Crawler am Juni 15, 2007, 07:50:03
Zitat von: Fabeulous $txt[176] Juni 14, 2007, 21:29:56
SL 2X20W 2,00 2x20pol. Stiftleiste, gewinkelt, RM 2,00 0,87 € 1   1,74 € 


Rastermaß 2,00 mm passt nicht auf Standard-Lochrasterplatinen, da diese 2,54mm Lochabstand haben. Oder ist das so gewollt? ;)


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 15, 2007, 09:33:43
Das geht natürlich auch auf das Konto meiner unwissenheit :D
Okay das habe ich korrigert das mit den Kondensatoren hat sich dann ja auch erledigt.
Nur das mit dem Rastermaß hat mich dann wieder etwas verwirrt:
Undzwar habe ich ja ein paar D-SUB Buchsen auf der Liste welche beide ein Rastermaß von 7,2 haben. Heist das was anderes oder passen die dann auch nicht? Und wenn die nciht passen sollten warum gitb es dann keine mit nem passenden Rastermaß?

Sorry für die vielen Fragen und abermals vielen Dank!


Titel: Re: Taster als Schalter via AVR
Beitrag von: xonom am Juni 15, 2007, 11:15:41
also bei den buchsen wird du so und so die befestigungslöcher aufbohren müssen da diese sehr gross sind außer du hat eine buchse ohne befestigungen.

dann zum raster. das ist 2,54mm d.h. das nächste wären 5.08, danach 7,62mm etc.
Wenn deine buchse nun 7,2mm lochabstand hat wirst du probleme bekommen die pins in die löcher zu kriegen.


Titel: Re: Taster als Schalter via AVR
Beitrag von: OlafSt am Juni 15, 2007, 11:29:17
Also ich hatte noch kein Problem damit, eine DSUB für Printmontage auf eine Lochraster zu löten - von den großen Befestigungslöchern mal abgesehen.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 15, 2007, 12:06:28
Was nimmt man denn dann für Sub D Dinger? oder muss ich ne andere Platine nehmen? Wobei ich keine andere Platine bzw. keine mit einem anderen rastermas finden konnte?!


Titel: Re: Taster als Schalter via AVR
Beitrag von: xonom am Juni 15, 2007, 12:11:41
da mich das raster auch gewundert hat, hab ich selber mal nachgeschaut also das is das maß von pin zur vorderkante. und afair hast du die us.variante gewällt. neben dran zumindest im papierkatalog is ne europäische version mit 9,xx mm abstand. die ist wohl die richtige.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 15, 2007, 15:24:55
oh cool.. ich hab dann bisher immer die pins aufs rastermaß zurechtgebogen... geht auch..  :)

und @ rest von der schaltung..
naja du brauchst taster.. und N-Kanal FETs, für den fall, dass du mehr als 20mA an einen ausgang hängen willst.. mehr brauchst du nicht

http://www.modding-faq.de/Forum/index.php?topic=16991.0 > schaltung und empfohlene bauteile..

und die Bürdekapazität gibt reichelt an: in der artikelbeschreibung, unter dem namen Lastkapazität.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 16, 2007, 14:50:09
So ich habe mal diese FET's genommen:
IRFZ 24N Transistor, TO-220AB 0,36 € 1  3,57 € 

Dann nochmal diese Kondensatoren für Bürdekapazitäten des Quarzes:
KERKO 33P KERAMIK-KONDENSATOR 0,041 € 1  0,41 € 
Die Lastkapazität des Quarzes ist zwar 32pF aber ich hab mir gedacht das das bestimmt auch damit geht... Oder?!

Als Taster hab ich einfach die günstigsten 0815 Dinger genommen:
TASTER 3301 Kurzhubtaster 6x6mm, Höhe: 4,3mm, 12V, vertikal 0,082 € 1  0,82 € 

Ach so was vlt. noch wichtig ist: Ich wolte mit den Tastern letztendlich Relais schalten. Die habe ich mir auch schon gekauft. Und zwar diese Hier:
FIN 36.11 12V Finder-Subminiaturrelais, 1x UM, 250V 10A, 12V 0,89 € 1   

Dazu brauche ich ja auch noch solche tollen Schutzdioden... Ich hab mal ein bischen gestöbert bin mir aber nciht so sicher was da passen könnte.. wie wäre es z.B. damit?
1N 4148 DIODE 0,020 € 1  0,02 € 

Vielen Dank an alle!


Titel: Re: Taster als Schalter via AVR
Beitrag von: OlafSt am Juni 16, 2007, 15:13:18
Schutzdioden ? Du meinst sicher die Löschdioden für's Relais... Dann sind die 1N4148 okay.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 16, 2007, 15:25:38
Verdammt :D
Ich habe überlegt welche der Drei Versionen richtig ist! :D
-Schutzdioden
-Speerioden
-Löschdioden

Na ja aufjedenfall meinte ich die! Danke das ist gut!

So letzte Frage dann geht die Bestellung raus:
Die Relais brauchen ja 12 Volt zum schalten... so wie ich diverse Schaltungen kenne brauche ich doch dann bestimtm noch irgendwie einen Widerstand um den Fet herum oder?
Danke!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juni 16, 2007, 16:24:46
Zitat von: Fabeulous $txt[176] Juni 16, 2007, 15:25:38
So letzte Frage dann geht die Bestellung raus:
Die Relais brauchen ja 12 Volt zum schalten... so wie ich diverse Schaltungen kenne brauche ich doch dann bestimtm noch irgendwie einen Widerstand um den Fet herum oder?
Danke!

Ein Pull-Down Widerstand am Gate wäre nicht schlecht, allerdings ist der FET zum Schalten eines Relais doch "minimal" überdimensioniert, da wäre ein Wald-und-Wiesen-Transistor ala BC337 inkl. 10k Basiswiderstand die angebrachtere Lösung.
Mit dem IRFZ24N könntest die Verbraucher direkt schalten, vorrausgesetzt du willst keine Netzspannung schalten.

EDIT:
An welcher Spannungsquelle wird das eigentlich betrieben?


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 16, 2007, 17:27:07
Ich kläre euch mal eben ein bischen im allgemeinen ein bischen auf:
Also die ganze Platine mit der Schaltung soll in eine leeres CD-Rom Laufwerksgehäuse in dem ich den ganzen elektronikkram zentral untergebracht habe.

Auf den Bildern meiner ersten Schaltung könnt ihr ja auch solche Pfostenbuchsen sehen. Die an der schmalen Seite hat nichts mit der Schaltung zu tun. Die an der längeren Seite ist per Flachbandkabel an die Taster(in der Seitenwand) angeschlossen welche letztendlich die einzelnen Verbraucher(div. Beleuchtung, Lüfter,...) schalten sollen.

Ich hätte das gerne mit Relais gelöst. Da ich noch nicht weis was ich wie woran anschließe. Also ich möchte mir die Möglichkeit offenhalten die Verbraucher später zu verändern und deswegen habe ich bei einem Relais irgendwie ein besseres Gefühl.

Folglich soll das ganze an einem PC Netzteil betrieben werden.

So ich habe dann nochmal wie geraten folgendes zur Bestelliste hinzugefügt:
BC 337-40 TRANSISTOR 0,041 € 1  0,41 € 
1W 10K Kohleschichtwiderstand 1W, 5%, 10 K-Ohm 0,12 € 1  1,23 € 

Hier ist nochmal die ganze Bestelliste:
STECKBOARD 2K4V Experimentier-Steckboard 1280/400 Kontakte 8,85 € 1  8,85 € 
MAX 232 CPE RS232-Driver, DIL-16 0,41 € 1  1,23 € 
GS 28 IC-Sockel, 28-polig, doppelter Federkontakt 0,082 € 1  0,25 € 
H25PR150 Lochrasterplatine, Hartpapier, 150x100mm 1,70 € 1  1,70 € 
ATMEGA 8-16 DIP ATMega AVR-RISC-Controller, DIL-28 1,70 € 1  5,10 € 
74HCT 244 IC-SCHALTUNG 0,26 € 1  0,77 € 
RAD 10/35 Elektrolytkondensator, 5x11mm, RM 2,0mm 0,041 € 1  0,41 € 
RAD 22/35 Elektrolytkondensator, 5x11mm, RM 2,0mm 0,041 € 1  0,41 € 
GS 40 IC-Sockel, 40-polig, doppelter Federkontakt 0,11 € 1  0,34 € 
BAT 43 DIODE 0,11 € 1  1,13 € 
BL 2X10G8 2,54 2x10pol. Buchsenl., gerade, RM 2,54, H.: 8,5mm 0,32 € 1  0,32 € 
GS 28P-S IC-Sockel, 28-polig, superflach, gedreht, schmal 0,36 € 1  1,08 € 
LS 245 SCHOTTKY-TTL 0,26 € 1  0,78 € 
PFL 10 Pfostenbuchse, 10-polig, mit Zugentlastung 0,092 € 1  0,37 € 
PSL 10 Pfostenstecker, 10-polig, mit Verrieglung, gerade 0,18 € 1  0,74 € 
AWG 28-10G 3M Flachbandkabel AWG28, 10-pol., grau, 3m-Ring 1,95 € 1  1,95 € 
GS 20P IC-Sockel, 20-polig, superflach, gedreht, vergold. 0,24 € 1  0,71 € 
AK 401 D-SUB Verlängerung, 1:1, 25-pol., ST/ST, 1,8m 1,40 € 1  1,40 € 
8,0000-HC18 Standardquarz, Grundton, 8,0 MHz 0,24 € 1  0,71 € 
1/4W 10K Kohleschichtwiderstand 1/4W, 5%, 10 K-Ohm 0,033 € 1  0,66 € 
KERKO 10N KERAMIK-KONDENSATOR 0,041 € 1  0,41 € 
KERKO 47N KERAMIK-KONDENSATOR 0,070 € 1  0,70 € 
LM 2940 CT5 Festspannungsregler +5,0V, 1A, TO-220 0,40 € 1  1,20 € 
V FI356 Kühlkörper für Gehäuse TO-220,9,9K/W 0,55 € 1  1,66 € 
TANTAL 0,33/35 Tantal-Kondensator, Rm 2,5, 0,33µF/35V 0,092 € 1  0,92 € 
TANTAL 0,1/35 Tantal-Kondensator, Rm 2,5, 0,1µF/35V 0,11 € 1  1,14 € 
TASTER 3301 Kurzhubtaster 6x6mm, Höhe: 4,3mm, 12V, vertikal 0,082 € 1  0,82 € 
D-SUB BU 25EU D-SUB-Buchse, 25-polig, gewinkelt, RM 9,4 0,43 € 1  0,86 € 
D-SUB BU 09EU D-SUB-Buchse, 9-polig, gewinkelt, RM 9,4 0,28 € 1  0,55 € 
KERKO 33P KERAMIK-KONDENSATOR 0,041 € 1  0,41 € 
1N 4148 DIODE 0,020 € 1  0,02 € 
BC 337-40 TRANSISTOR 0,041 € 1  0,41 € 

Ich denke nach den zahlreichen Fragen ist diese jetzt komplett! :D
Hier nochmal vielen Dank an alle die mir geholfen haben!
Ich werde, wenn es keine einwände gibt, das ganze dann die Tage bestellen!?



Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 16, 2007, 18:31:24
das mit den pulldowns am FET ist absolut richtig und wichtig.. sorry dass ich das vergessen hatte..  :headcrash:

aber ansonsten passt das alles..

ich hätte halt, um die sache die so universell wie möglich zu machen, FETs benutzt, da die ja nicht wirklich nen spannungsdrop haben (oder merkt man ihn nur nicht? :) )
aber wenn da definitiv nur relais dran sollen..


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juni 17, 2007, 08:26:43
Zitat von: Fabeulous $txt[176] Juni 16, 2007, 17:27:07
Folglich soll das ganze an einem PC Netzteil betrieben werden.
Dann könntest dir den 5V Spannungsregler eigentlich sparen, oder willst du die komplette Schaltung über 12V versorgen?
Zitat von: Fabeulous $txt[176] Juni 16, 2007, 17:27:07
So ich habe dann nochmal wie geraten folgendes zur Bestelliste hinzugefügt:
BC 337-40 TRANSISTOR 0,041 € 1   0,41 € 
1W 10K Kohleschichtwiderstand 1W, 5%, 10 K-Ohm 0,12 € 1   1,23 €
Bei den Widerständen reichen die 1/4 W Typen vollkommen aus, allternativ könntest du auch einen ULN2803 nehmen, das sind 8 Darlington Transistoren inkl. passender Vorwiderstände in einem Gehäuse.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 17, 2007, 17:07:01
So die Bestellung ist Raus! Der ganze (teure) kram sollte dann die tage ankommen und dann stürze ich mich darauf! :D Vielen Dank an dieser stelle nochmal an alle!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 17, 2007, 21:12:59
So ich hab nochmal zwei kleine zwischendurch fragen:
Also ich hab mir gerade versucht die Funktion eines Pull-Down oder Pull-Up Widerstandes verständlich zu machen.
Hab mir dazu den ersten Teil hiervon durchgelesen.
http://www.elektronik-kompendium.de/public/schaerer/pullr.htm

Das habe ich auch soweit verstanden! Ist ja alles recht logisch.
Aber irgendwie verstehe ich nicht was der Pull-Down Widerstand am Transistor für eine Funktion hat? Vlt. ist es gerade einfach zu spät und ich sag gleich ui wie dumm von mir aber es ist mir im moment noch etwas unverständlich!?


So dann habe ich noch eine Frage:
Undzwar hat ja am Anfang dieses Thread's irgendwer(ich glaube Stukka[übrigens danke fürs adden :P ]) gesagt das meine Lötstellen recht Ranzig aussehen. Also habe ich mir mal das kleine Löt How2 auf der Hauptseite durchgelesen. Und da steht ja das man mit dem Lötkolben das Lötauge der Platine erhitzen soll und dann den Lötzinn an das Auge inklusive Bauteil halten soll...
Nun meine Frage: Wenn ich aber das Bauteil zu lange erhitze geht es dann nicht kaputt? Oder ist das nur bei manchen Bauteilen so und bei anderen nicht?!

Abermals vielen Dank! :P

EDIT:
Sorry für Doppelpost!


Titel: Re: Taster als Schalter via AVR
Beitrag von: TzA am Juni 17, 2007, 21:41:20
Einen Pulldown brauchst du nur wenn der Transistortreiber das Gate nicht selbst wieder "herunterziehen" kann. Wenn man z. B. einen normalen µC-Pin dafür nimmt, braucht man keine Widerstände, denn der Pin stellt entweder eine Verbindung zu GND oder zu VCC her, sodass das Gate immer auf einem definiertem Pegel liegt.

Das Problem bei FETs ist halt, dass das Gate nicht leitend mit der Drain-Source-Strecke verbunden ist. Das hat die schöne Eigenschaft, dass das Ansteuern eines FETs keinen dauerhaften Stromfluß braucht (sondern eigentlich nur ne Spannung), hat aber den Nachteil, dass ein nicht angeschlossenes Gate meistens einfach die Ladung behält, die man ihm vorher gegeben hat. Da kommt nun der Pulldown ins Spiel, denn der stellt eine Verbindung zu GND her, sodass der (n-)FET im Zweifel immer aus ist.

Standard für die Lötfähigkeit von Bauteilen sind eigentlich 10s, wenn du mit dem Kolben da länger als 10s dranbleiben musst solltest du mal schauen ob deine Lötspitze noch ok ist (es muss auch etwas Zinn an der Spitze sein, das stellt den Wärmekontakt zum Bauteil her).
Man sollte halt nicht das Zinn nur an der Lötspitze heißmachen, sondern sowohl das Lötauge als auch das Bauteil müssen heiß genug sein, sonst hält die Verbindung nicht.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 17, 2007, 21:50:09
Okay also wenn ich das jetzt richtig verstanden habe dann Speichert ein FET quasi den letzten Zustand am Gate richtig?!
Wenn ja dann verstehe ich es!

Okay aber kann es passieren das das Bauteil kaputt geht wenn ich zulange dran bliebe oder reicht die Temperatur des Lötkolbens dazu nicht?


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 17, 2007, 21:52:50
nein der fet speichert den letzten zustand jetzt nicht wirklich.. das tut er nur in dem fall, wenn das GATE des FET nicht entladen wird.. dann leitet der FET halt noch..

@ICQ: dann gib mir doch plz mal ne erlaubnis dich zu adden  :)

und je nachdem was für ein löteisen du hast kannst du damit auch bauteile einschmelzen.. zb wird ein IC einen 100W lötkolben nicht überleben denk ich :P

aber imho kann man widerständen und leds etc. schon was zumuten (hab erst eine led verbraten).. und für ics nimmt man halt sowieso sockel


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 17, 2007, 23:35:51
Okay verstanden!
Aber ich habe jetzt ja garkeine FET's mehr. Ist das bei den neuen Transistoren genauso?


Titel: Re: Taster als Schalter via AVR
Beitrag von: OlafSt am Juni 18, 2007, 06:09:35
Bei FET ist das Gate isoliert von allem anderen. Das Gate wirkt also wie ein Kondensator - und wenn der aufgeladen ist, behält er auch seine Ladung (zumindest eine Weile). Durch die Isolation braucht es keinen Gate-Vorwiderstand - es fließt ja kein Strom.

Nichts von Menschenhand geschaffenes ist perfekt, so auch die Gate-Isolation. Es wird sich entladen, keine Frage - aber es wird dauern, Sekunden bis Minuten und vor allem unvorhersehbar. Das ist sicher nicht das, was du willst, darum ein Pulldown-Widerstand.

Bei bipolaren Transistoren ist die Basis nicht isoliert, da hält folglich auch nichts irgendeine Ladung. Dies ist zugleich auch der wesentliche Unterschied: Ist so ein Bipolarer mal aufgesteuert, hat die Basis-Emitter-Strecke Null Ohm - es ist also zwingend ein Basisvorwiderstand einzubauen, sonst zerstört man den Transistor.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 18, 2007, 10:02:41
Okay nun verstehe ich Danke!

So ich wusel mich gerade mal durch die Programmierung in Assembler...
Ich habe mir dazu das Tutorial von Microcontroller.net durchgelesen.
Nun bin ich bei der Tasterentrepellung hängen geblieben. Das bräuchte ich ja ziemlich sicher um das ganze zu realisieren. Nur leuchten mir manche sachen noch nicht so richtig ein:
.include "m8def.inc"

.def key_old   = r3
.def key_now   = r4

.def temp1     = r17
.def temp2     = r18

.equ key_pin   = PIND
.equ key_port  = PORTD
.equ key_ddr   = DDRD

.equ led_port  = PORTB
.equ led_ddr   = DDRB
.equ LED       = 0


      ldi  temp1, 1<<LED
      out  led_ddr, temp1         ; den Led Port auf Ausgang

      ldi  temp1, $00             ; den Key Port auf Eingang schalten
      out  key_ddr, temp1
      ldi  temp1, $FF             ; die Pullup Widerstände aktivieren
      out  key_port, temp1

      mov  key_old, temp1         ; bisher war kein Taster gedrückt

loop:
      in   key_now, key_pin       ; den jetzigen Zustand der Taster holen
      mov  temp1, key_now         ; und in temp1 sichern
      eor  key_now, key_old       ; mit dem vorhergehenden Zustand XOR
      mov  key_old, temp1         ; und den jetzigen Zustand für den nächsten
                                  ; Schleifendurchlauf als alten Zustand merken

      breq loop                   ; Das Ergebnis des XOR auswerten:
                                  ; wenn keine Taste gedrückt war -> neuer Schleifendurchlauf

      and  temp1, key_now         ; War das ein 1->0 Übergang, wurde der Taster also
                                  ; gedrückt (in key_now steht das Ergebnis vom XOR)
      brne loop                   ;

      ldi  temp1, $FF             ; ein bisschen warten ...
wait1:
      ldi  temp2, $FF
wait2:
      dec  temp2
      brne wait2
      dec  temp1
      brne wait1
                                  ; ... und nachsehen, ob die Taste immer noch gedrückt ist
      in   temp1, key_pin
      and  temp1, key_now
      brne loop

      in   temp1, led_port        ; den Zustand der LED umdrehen
      com  temp1
      out  led_port, temp1


      jmp  loop


Könnt ihr mir sagen was folgendes bedeutet: "1<<LED",
Und bedeutet das Dollar Zeichen ("$") bei diesen(ldi  temp1, $00) oder anderen Befehlen das selbe wie "0x"? Also das die darauf folgende Zahl als Hex Zahl interpretiert wird? Ich vermute das einfach mal weil es auf dem guten alten Apple 2 6502 Prozessor
dies bedeutete...

So ich werde mich dann mal noch ein bischen dadurch wühlen.
@Stukka: könntest du deinen Quelltext den du mal (für das Taster als Schalter Projekt)gemacht hast ins Forum stellen oder mir schicken? Vorrausgesetzt du bist damit einverstanden!?

EDIT:
So ich habe mich nochmal ein bischen durch den QUelltext gewuselt, und soweit ich das verstanden habe ist der obige ja quasi genau das was ich brauche oder?
Natürlich ist das da oben nur für LED's gedacht aber das sind ja nur die "Variabelnamen".
Also eigentlich sollte das funktionieren?!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 18, 2007, 14:41:43
den code kannst du wahrscheinlich schon benutzen, ich hab ihn nicht getestet..
wenn ich den quelltext behalten wollte, würde ich hier nicht so damit rumprollen :P
aber ich glaube in deinem fall wäre mein Quelltext zu kompliziert für dich, nimm den
3. code im link: http://www.mikrocontroller.net/articles/AVR-Tutorial:_Tasten
ist quasi fertig, du musst nur die definitionen an die ports anpassen die du verwenden willst, diese routine ist die grundlage meiner software..

bei diesem code gilt dann immer ein gesetztes bit in einem port, zb. portB für ein bit in einem anderen port, also zb. portA..
mit meinem Code kann eine änderung an portB für änderungen an allem sorgen, daher ist mein code länger.. 


ldi temp1,1<<Led

oben wurde mit ".equ LED=0" LED als null bestimmt.. er setzt nun also das LSB des Registers temp1 auf 1.

$ und 0x steht beides für hex
0b ist binary

EDIT: naja also wenn sich die routine die du geposted hast als zuverlässig erweist, wäre sie sogar besser als die die ich hab, da diese einen timer braucht, der dann ja belegt ist..


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 18, 2007, 21:22:46
Aber braucht die dritte von oben auf der Seite die du genannt hast nicht auch einen Timer?

EDIT:
Okay Sorry komando zurück: Ich hab den 4ten Quelltext erwischt...


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juni 18, 2007, 22:00:26
Zitat von: Stukaa $txt[176] Juni 18, 2007, 14:41:43
EDIT: naja also wenn sich die routine die du geposted hast als zuverlässig erweist, wäre sie sogar besser als die die ich hab, da diese einen timer braucht, der dann ja belegt ist..
Die Variante über Wait-Zyklen ist aber so ziemlich die schlechteste Art zu programieren die es gibt, weil eben Rechenzeit sinnlos verschenkt wird. Normalerwiese löst man das eben über einen Timerinterrupt, damit das restliche Programm nicht unnötig aufgehalten wird. Der Timer wird deswegen auch nicht verschwendet, denn die paar Zeilen kann man in einen bereits verwendeten normalerweise problemlos mit einbaun.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 18, 2007, 23:11:03
Öhm ich denke er meint folgenden Code
.include "m8def.inc"

.def iwr0      = r1
.def iwr1      = r2

.def key_old   = r3
.def key_state = r4
.def key_press = r5

.def temp1     = r17

.equ key_pin   = PIND
.equ key_port  = PORTD
.equ key_ddr   = DDRD

.def leds      = r16
.equ led_port  = PORTB
.equ led_ddr   = DDRB

.org 0x0000
    rjmp    init

.org OVF0addr
    rjmp    timer_overflow0

timer_overflow0:               ; Timer Overflow Interrupt

    push    r0                 ; temporäre Register sichern
    in      r0, SREG
    push    r0
    push    iwr0
    push    iwr1

get8key:                       ;/old      state     iwr1      iwr0
    mov     iwr0, key_old      ;00110011  10101010            00110011
    in      key_old, key_pin   ;11110000
    eor     iwr0, key_old      ;                              11000011
    com     key_old            ;00001111
    mov     iwr1, key_state    ;                    10101010
    or      key_state, iwr0    ;          11101011
    and     iwr0, key_old      ;                              00000011
    eor     key_state, iwr0    ;          11101000
    and     iwr1, iwr0         ;                    00000010
    or      key_press, iwr1    ; gedrückte Taste merken
;
;
    pop     iwr1               ; Register wiederherstellen
    pop     iwr0
    pop     r0
    out     SREG, r0
    pop     r0
    reti


init:
    ldi      temp1, LOW(RAMEND)     ; Stackpointer initialisieren
    out      SPL, temp1
    ldi      temp1, HIGH(RAMEND)
    out      SPH, temp1

    ldi      temp1, 0xFF
    out      led_ddr, temp1

    ldi      temp1, 0xFF            ; Tasten sind auf Eingang
    out      key_port, temp1        ; Pullup Widerstände ein

    ldi      temp1, 1<<CS02 | 1<<CS00   ; Timer mit Vorteiler 1024
    out      TCCR0, temp1
    ldi      temp1, 1<<TOIE0            ; Timer Overflow Interrupt einrichten
    out      TIMSK, temp1

    clr      key_old                ; die Register für die Tastenauswertung im
    clr      key_state              ; Timer Interrupt initialisieren
    clr      key_press

    sei                             ; und los gehts: Timer frei

    ldi      leds, 0xFF
    out      led_port, leds
main:
    cli                             ;
    mov      temp1, key_press       ; Einen ev. Tastendruck merken und ...
    clr      key_press              ; Tastendruck zurücksetzen
    sei

    cpi      temp1, 0               ; Tastendruck auswerten. Wenn eine von 8 Tasten
    breq     main                   ; gedrückt worden wäre, wäre ein entsprechendes
                                    ; Bit in key_press gesetzt gewesen

    eor      leds, temp1            ; Die zur Taste gehörende Led umschalten
    out      led_port, leds
    rjmp     main


Der beinhaltet kein wait dinger... das was du erwischt hast ist der zweite Quelltext von oben!
Na ja ich werde also meinen korigierten post nochmal korigieren müssen.. also wenn ich das richtig verstanden habe wird bei diesem Code auch ein Timer(der nullte) benutzt.
So ich hoffe ich hab den Code jetzt richtig verstanden un interpretiert, wenn nciht dann schreit laut und gebt mir eins auf den Deckel! :D

Jetzt zu meiner eigenltichen Frage:
Laut dem Code da oben wird ja der Port B des AVR's als "Ausgang" deklariert und Pin D des AVR's als "Eingang". Also Pin D registriert die Tastendrücke und Port B gibt die Tastendrücke letztendlich an die Relais aus...
Ich denke das habe ich soweit verstanden. Vorrausgesetzt das ist richtig was ich da gerade behaupte...

So mein Problem ist nun, dass man vom Pin D auch noch alle 8 Pins "benutzen" kann...
Beim Port B geht dies aber doch nicht. Also ich meine da habe ich ja nur 6 Pins zur Verfügung weil die anderen beiden vom Anschluss des Quarzes belegt sind.
Muss ich nun auch den Port C mitbenutzen oder lässt sich das Quarz auch an anderen Pins betreiben.

Das Quarz weglassen wäre natürlich auch eine Methode. Nur habe ich mir ein meinem kreativem Hohenflug überlegt, dass ich den AVR später noch mit einer seriellen Schnittstelle ausstatten will, um die Tastimpulse quasi auch Softwäreseitig vom PC auslösen zu können. Wobei mir da gerade auffällt das mir dann ja wieder zwei Pins fehlen welche für den Anschluss der seriellen Schnittstelle drauf gehen?!

So ich fasse die Fragen nochmal zusammen: :D
- woher bekomme ich noch zwei Ausgabe Ports?
- woher bekomme ich noch zwei Ports zur Tastereingabe wenn ich die serielle Schnitsstelle einbauen will?

Kann man überhaupt den Port C unterschiedlich deklarieren. Also so das z.b. PC0 und PC1 Tasteringänge sind und PC2 und PC3 Ausgänge?
Wenn ichd as machen würde dann wäre der "Programmieraufwand" aber nochmal ein bischen höher richtig?!

Ich hatte auch gerade noch einen anderen einfall. Ich hab ja nicht soviel Ahnung davon aber ich schreibe einfach mal drauf los:
Könnte man das nicht mit zwei AVRS regeln?!
Einer ist für die Taster und Relais Ansteuerung zuständig. Dieser bekommt kein Quarz und benutzt daher den internen Schwingkreis. Somit hat er auch genügend Pins für alle Ein und Ausgabeoperationen...

Der zweite AVR ist für die serielle Schnittstelle zuständig. Dieser bekommt deswegen natürlich auch ein Quarz.

Mein Gedanke ist dabei das man nun 8 Ausgänge des zweiten AVR'S an die Tastereingänge des ersten anschließt. Nun kann an den Tastereingängen des ersten AVR's entweder durch den Druck eines Tasters oder durch den zweiten AVR ein Flankenwechsel erreicht werden...

So ich hoffe ich hab das einigermaßen verständlich erklärt. War das jetzt müll was ich da geschrieben habe oder ist das so reintheoretisch möglich?

Wenn das bodenloser Unsinn ist dann tuts mir leid. Ich hab ja quasi keien Erfahrung mit dem Ding!
Vielen Dank!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 19, 2007, 07:53:05
erstmal @reisi:
natürlich ist es nicht so schön wenn der AVR beim warten einfach nur idelt, statt das ganze nebenbei per timer zu regeln..

allerdings ist es mir persönlich lieber, mal ein wenig zu ideln, da ich sowieso max 5% des programmspeichers benutze, und somit die verschenkte zeit quasi zu vernachlässigen ist, als einen wertvollen PWM ausgang mit einem timer zu vergeuden..

das mag natürlich von der anwendung abhängen..


@Fabeulous

ja den code meine ich, und ich meinte, wie gesagt, dass es teilweise evtl sogar vielleicht besser sein könnte mit waits zu arbeiten.. natürlich abhängig von der anwendung

allerdings, der code verwendet timer 0

@pins: ja das ist richtig wie du das siehst, allerdings würde man korrekterweise wohl sagen, dass _port_D der eingang, und portB der ausgang ist.. naja das nur am rande..

wenn du tatsächlich mit quartz und serieller schnittstelle arbeiten willst, bleibt dir nirgendwo ein kompletter 8pin port frei:
PortD, pin 0+1 sind für die serielle übertragung da, PortB 6+7 für den Quartz, das kann man auch nicht ändern

und PortC hat lediglich 5pins, da der 6. , reset, reserviert ist.

mit dem codegerüst, das ich um den code von oben gestückelt habe, kannst du für jeden einzelnen der eingabe pins verschiedene ausgaben auslösen.. das problem ist nur dass der eingabe port in jedem fall an alle taster angeschlossen werden muss..

"mein" code würde es wohl auch ermöglichen, den halben eingangsport für die ausgabe zu verwenden, ich bin mir sicher das die entprellroutine das verkraftet :)
allerdings hättest du ja dann keine 8 kanäle mehr

die variante für eine serielle schnittstelle mit einem 2. µC ist sicher machbar.. vielleicht sogar nicht schlecht.. der avr ohne quartz würde dann port D und B als 8 Bit verfügbar haben.. eine kommunikation würde dann über die I2C oder auch TWI schnittstelle stattfinden können ( PortC, Pin4+5).. das wäre zwar ein wenig komplizierter zu programmieren, aber sicher, einfach um was zum basteln zu haben wärs ja schon ganz cool..

ich persönlich würde dann evtl eher auf einen Mega16 umsteigen.. aber man muss sich ja nicht immer vor herausforderungen drücken.. speziell da du die 8'er jetzt erstmal hast..



Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 19, 2007, 09:45:26
So erstmal danke!
Gut ich denke dann werde ich das so machen wie ich das da beschrieben habe...
Zu der Kommunikation über die I2C und TWI Schnittstelle? Ist das ebsser so oder könnte man das auch so machen wie ich das als erstes beschrieben habe?

P.S.: Die Sachen sind heute von reichelt gekommen...
Wen es interessiert hier (http://fabeulousde.h198298.serverkompetenz.net/CIMG6845.JPG) was zum gucken! :P


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juni 19, 2007, 14:48:31
Zitat von: Stukaa $txt[176] Juni 19, 2007, 07:53:05
erstmal @reisi:
natürlich ist es nicht so schön wenn der AVR beim warten einfach nur idelt, statt das ganze nebenbei per timer zu regeln..

allerdings ist es mir persönlich lieber, mal ein wenig zu ideln, da ich sowieso max 5% des programmspeichers benutze, und somit die verschenkte zeit quasi zu vernachlässigen ist, als einen wertvollen PWM ausgang mit einem timer zu vergeuden..
Also erst mal idelt der µC da nicht, und zum anderen wird der Timer nicht vergeudet. Man kann problemlos mit einem Timer eine (bzw. bei manchen auch mehrere) PWM und eine Tasterentprellung gleichzeitig nutzten. Normalerweise braucht man doch fast immer einen Timer, dann kann man den Code für die Tastenentprellung auch problemlos mit da rein schreiben.

Und zum Rest:
Der Atmega8 hat in der DIL Version 23 frei programierbare I/Os (man kann jeden I/O unabhängig von anderen als In- oder Output nutzen), 2 gehen fürn Quarz, 2 für RS232 und 1 fürn Reset drauf, also bleiben noch 18 I/Os übrig. Für 8 Taster und 8 Relais reicht das doch vollkommen aus, bleiben sogar noch 2 I/Os übrig. Wenn man noch mehr möchte könnte man z.B. auch noch die Taster mit einen Widerstandsnetzwerk an einen AD-Wandler legen, dadurch hätte man wieder ein paar Ausgänge frei. (Für einen 4fach Variante würde damit z.B. auch ein 8pin Attiny 15 reichen)
Prinzipiell bräuchte man für diese Anwendung auch gar keinen Quarz, dafür würde der interne Oszillator auch ausreichen, für eine Erweiterung mit der Seriellen Schnittstelle ist der aber zu ungenau, da ist ein Quarz dann widerrum Pflicht.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 19, 2007, 16:30:40
also wenn ich den µC nur wegen PWM benutze, dann brauche ich keinen anderen timer..

und wie willst du denn den Timer x gleichzeitig als timer und pwm benutzen? du brauchst dann doch schon ganz andere einstellungen im TCCRx oder wie oder wat?
willst du zwischendurch die einstellungen verändern? das würde sich doch im ergebnis der pwm niederschlagen!?


und sicherlich kann man für jeden pin einzeln eine entprellung machen.. allerdings nicht mit DIESEM code.. gerne kannst du auch beispiele einstellen, wie du das lösen würdest.. allerdings wäre ASM hier überaus gut..

und die sache mit dem AD wandler hört sich ja ganz nett an.. aber man muss ja nicht gleich mit der tür ins haus fallen..
ich kann mir dazu zwar in etwa vorstellen, wie das ganze theroetisch geht.. aber praktisch wirds dann wohl komplizierter


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juni 19, 2007, 18:02:40
Zitat von: Stukaa $txt[176] Juni 19, 2007, 16:30:40
also wenn ich den µC nur wegen PWM benutze, dann brauche ich keinen anderen timer..

und wie willst du denn den Timer x gleichzeitig als timer und pwm benutzen? du brauchst dann doch schon ganz andere einstellungen im TCCRx oder wie oder wat?
willst du zwischendurch die einstellungen verändern? das würde sich doch im ergebnis der pwm niederschlagen!?
Mal ein kleines Beispiel: Man initialisierst Timer1 so, dass der eine 20kHz PWM erzeugt. Der Dutycycle wird z.B. in der Main Schleife über das Compare Register eingestellt. Für eine Tasterenprellung würde ich in der Initialisierung zusätzlich noch den Overflow Interrupt aktivieren (falls der nicht sowieso schon für was anderes verwendet wird). Dadurch würde eben alle 50µs ein Interrupt ausgelöst und in der ISR kommt dann die Routine zur Entprellung mit rein.

Ich kann schon mal ein Beispiel geben, ist allerdings in C, aber ich denk zum Verständniss reichts aus:
Code:
uint8_t SW_timer = 20; //SW Timer, womit nur alle 1ms abgefragt ist
uint8_t Taster1_timer = 0; //SW Timer fürs entprellen

if(SW_timer == 0) //falls 1ms erreicht,
{
SW_timer = 20; //Timer rücksetzten und anschließend

if(Taster1_timer == 0) //Taster abfragen
{
if(/*Taster1 gedrückt*/) //falls Taster gedrückt
{
Taster1_timer = 20; //Timer setzten, so dass Taster für 20ms nicht
//abgefragt wird und anschließend
... //Gewünschte Aktion ausführen
}
}
else
Taster1_timer--; //falls Timer != 0, um 1 dekrementieren,
//und damit die erneute Abfrage verhindern
}
else
SW_timer--; //Timer dekrementieren um nur alle 1ms
//abzufragen
Im Prinzip ists ganz einfach. Die Taster werden so pi mal daumen im 1ms Takt abgefragt. Ist irgendein (oder auch mehrere) Taster gedrückt, wird die gewünschte Aktion ausgeführt und über einen Softwaretimer wird dafür gesorgt, dass dieser Taster für 20-100ms (je nachdem wie lange der Taster prellt) nicht abgefragt wird. Irgendwelche Zustände zwischenzuspeichern ist bei Tastern eigentlich nicht notwendig, außer es gibt Fehlauslösungen durch irgendwelche Störungen.
Zitat von: Stukaa $txt[176] Juni 19, 2007, 16:30:40
und die sache mit dem AD wandler hört sich ja ganz nett an.. aber man muss ja nicht gleich mit der tür ins haus fallen..
ich kann mir dazu zwar in etwa vorstellen, wie das ganze theroetisch geht.. aber praktisch wirds dann wohl komplizierter
So schlimm ist das gar nicht, bei 4 Tastern sind das 5 Widerstände, und auch programiertechnisch hält sich das in C mit Hilfe von switch case in Grenzen. In Assambler artet das allerdings in Tipparbeit aus.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 19, 2007, 18:38:14
ach stimmt.. hab ich garnicht dran gedacht, dass die interrupts ja dann immer noch setzbar sind.. danke dir !

ja genau die tipparbeit ist, weshalb ich das nicht machen wollte..


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 19, 2007, 21:52:10
So um mich mla wieder zu melden...
Also die klamotten von reichelt sind heute angekommen...
Habe natürlich direkt begonnen udn anch eine rhalben stunde gemerkt das ich antürlich was veregssen habe... Undzwar hab ich anstelle des 4,7kohm iwderstandes für den isp einen 47 n kerko bestellt... na ja ist natürlich ein bischen lahm gelaufen aber dann muss ich halt nochmal was bestellen...

Währenddessen habe ich mit stukka auch über meine Problemlösung dikstuiert und wir haben quasi beschlossen und für gut befunden das meine vorgeschlagene lösung zwar nicht die eleganteste aber die einfachste lösung ist...
In einem anflug von kreativem arbeitswahn habe ich diese hochentwickelte computersimulation erstellt...
(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/Unbenannt.JPG)

ich finde sie sehr schön nebenbei gesagt...
So wie bereits gesagt ahbe ich vor zwei atmels zu verbauen...
Atmel A:
...hat keinen Quarz und benutzt den internet Schwingkreis wodurch ich an allen Ports 8 Pins frei hab(außer Port C natürlich)
...reagiert auf eventuelle Flankenwechsel an seinen Eingängen welche durch eventuelle Taster oder auch den zweiten Atmel ausgelöst werden können
...setzt die ausgänge und schaltet somit die Relais
Atmel B:
...kommuniziert per serieller Verbdingun mit dem PC
...kann die Eingänge von Atmel B genauso wie die Taster schalten

So ich hoffe ich habe das ausreichend und vor allem verständlich beschrieben...
Ich werde mich jetzt mal daran machen vernünftige Schaltpläne per PC erstellen zu können weil ich euch nciht nocheinmal so eine hochentwickelte Computersimulation antun will...
Also bis später :P

EDIT:
Sorry für die rechtschriebfehler... erst wollte ich sie wegmachen aber dann habe ich mir gedacht das es schon irgendwo sehenswert ist wieviele Rechtschriebfehler ein Mensch in so einem kurzem Text machen kann! Ich gelobe Besserung fürs nächste mal! :P


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 20, 2007, 15:15:19
ähm.. naja also das war jetzt nicht so ganz das wie ich gedacht hätte dir gesagt zu haben dass ich mir das vorstelle..

die taster sollten in keinster weise mit dem serial- µC verbunden werden.. vielmehr sollte die kommunikation zwischen den beiden µC per TWI interface ablaufen ( les dir das entsprechende mal im datenblatt durch..

der µC ohne quartz sollte halt die 8 taster bekommen.. eine 8bit verbindung wäre, so wie ich mir das vorstelle, unnötig..

ich glaube ich muss dir die funktionsweise der entprellroutine mal genauer erklären.. naja sind ja ferien, also werd ich wohl mal nen bisschen zeit abkneifen können.. meld dich mal


edit: hmm naja irgendwie sieht das ganze jetzt vielleicht doch nicht soo unsinnig aus..
auch wenn diese 8bit übertragung jetzt nicht grade das ist, was ich mir vorgestellt hätte.. findet jemand auf anhieb an argument dagegen?


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juni 20, 2007, 15:25:22
Zitat von: Fabeulous $txt[176] Juni 19, 2007, 21:52:10
Undzwar hab ich anstelle des 4,7kohm iwderstandes für den isp einen 47 n kerko bestellt... na ja ist natürlich ein bischen lahm gelaufen aber dann muss ich halt nochmal was bestellen...
nimm statt dessen doch einfach zwei parallelgeschaltene Widerstände.
Zitat von: Fabeulous $txt[176] Juni 19, 2007, 21:52:10
Währenddessen habe ich mit stukka auch über meine Problemlösung dikstuiert und wir haben quasi beschlossen und für gut befunden das meine vorgeschlagene lösung zwar nicht die eleganteste aber die einfachste lösung ist...
Was ist daran bitte einfacher? Im Vergleich zu einem einzelnen µC ist es nur mehr Aufwand (sowohl Hard- als auch Software) und bringt aber keinen weiteren Nutzen (zumindest seh ich keinen). Wenn schon unbedingt zwei µCs, warum dann nicht modular, z.B. einen für alle Eingänge, einen für alle Ausgänge und beide über ein einfaches Bussystem verbinden?
Zitat:
auch wenn diese 8bit übertragung jetzt nicht grade das ist, was ich mir vorgestellt hätte.. findet jemand auf anhieb an argument dagegen?
ja mann muss ständig die I/Os zwischen Ein- und Ausgang umschalten, und es ist trotzdem nicht kurzschlusssicher.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 20, 2007, 19:06:20
lol also entweder habe ich euch falsch verstanden oder ihr mich ode rich hab end keine ahnung davon...
also stukka du hast mir gesagt das wäre einfacher... zumindest habe ich es so verstanden...

also ich weis nicht wo es da kurzschlüsse geben sollte? es ist klar das man das noch ein bisschen mit dioden und dem ganzen kram absichern muss...
aber ich finde es für mich viel aufwendiger wenn ich das mit so einer busverbindung oder so mache... ich kenne mich ja quasi noch garnicht damit aus... da wird es bestimmt nicht leicht am anfang direkt son mörderprogramm auf die beine zu stellen...

Also wenn ihr mir sagt das geht und es gibt dadruch keine großen nachteile dann würde ich das lieber so machen.. mir ist klar das das nicht die eleganteste möglichkeit ist aber ich denke in diesem bereich gibt es auch mehrere lösungswege wie in jedem bereich der programmierung, etc....
Wenn ich das so einigermaßen drauf habe kann man das ja noch verfeinern aber denkt bitte daran das ich quasi blutjunger anfänger bin und mir jedesmal wenn ihr mit nem fachwort rumspielt das erstmal angucken muss was ihr da übnerhaupt meint! :D
Trotzdem vielen dank für die vielen denkanstöße!

EDIT:
Zitat von: Reisi $txt[176] Juni 20, 2007, 15:25:22
Zitat von: Fabeulous $txt[176] Juni 19, 2007, 21:52:10
Währenddessen habe ich mit stukka auch über meine Problemlösung dikstuiert und wir haben quasi beschlossen und für gut befunden das meine vorgeschlagene lösung zwar nicht die eleganteste aber die einfachste lösung ist...
Was ist daran bitte einfacher? Im Vergleich zu einem einzelnen µC ist es nur mehr Aufwand (sowohl Hard- als auch Software) und bringt aber keinen weiteren Nutzen (zumindest seh ich keinen). Wenn schon unbedingt zwei µCs, warum dann nicht modular, z.B. einen für alle Eingänge, einen für alle Ausgänge und beide über ein einfaches Bussystem verbinden?

Ich brauch doch sowieso zwei µC's weil ich nciht genug Pin's frei habe...?!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juni 20, 2007, 19:15:26
Zitat von: Fabeulous $txt[176] Juni 20, 2007, 19:06:20
Ich brauch doch sowieso zwei µC's weil ich nciht genug Pin's frei habe...?!
Wieso? Habs zwar oben schon mal geschrieben, aber gerne nochmal. Der Atmega8 hat 23I/Os, zwei gehn fürn Oszillator drauf, zwei für die serielle Schnittstelle und eine fürn Reset. Also bleiben noch 18 I/Os übrig. Die willst 8 Taster und 8 Relais ansteuern, dafür brauchst 16 I/Os. Also, reicht doch, oder hab ich noch was übersehn?


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 20, 2007, 20:08:11
Ja gut stimmt möglich ist das aber dann müsste ich ja die Pins eines Ports unterschiedlich einstellen... also zwei als eingang und zwei als ausgang und das geht doch nicht oder?
EDIT:
Ach so und ich habe ja versucht mich in eagle einzuarbeiten... Das mit der bauteilbibliothek habe ich ja verstanden aber wo finde ich denn so standard bauteile wie widerstände, dioden,taster usw....?!
Vielen dank für eure tipps und ratschläge!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juni 20, 2007, 20:29:02
Zitat von: Fabeulous $txt[176] Juni 20, 2007, 20:08:11
Ja gut stimmt möglich ist das aber dann müsste ich ja die Pins eines Ports unterschiedlich einstellen... also zwei als eingang und zwei als ausgang und das geht doch nicht oder?
natürlich geht das. Dafür gibts ja das DDR Register (DataDiRection)
EDIT:
Zitat von: Fabeulous $txt[176] Juni 20, 2007, 20:08:11
Ach so und ich habe ja versucht mich in eagle einzuarbeiten... Das mit der bauteilbibliothek habe ich ja verstanden aber wo finde ich denn so standard bauteile wie widerstände, dioden,taster usw....?!

Widerstände, Kondensatoren, etc gibts unter "rlc", Dioden unter "diode" und Taster unter "switch - ..."


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 20, 2007, 21:31:05
Okay das mit dem DDR Register ist klar das macht man ja meines bescheidenen iwssens immer so... aber ich wusste nie ob man halt die pins an einem port unterschiedlich konfigurieren kann!
Danke für die tipps!

EDIT:
So ich habe mich jetzt nach langem hin und her dazu entschlossen das ganze doch mit nur einem µC zu machen. Das wird zwar programmiertechnisch etwas aufwendiger, aber ich habe ja ein paar kompetente Köpfe hier, die mir bestimmt helfen können! :P


Titel: Re: Taster als Schalter via AVR
Beitrag von: raDon am Juni 22, 2007, 22:40:15
Zitat von: ReST.darry
Ach noch was, "Taster als Schalter" nennt man auch Stromstoßrelais, zumindest von der Funktion her ;D


Das heißt "bistabile Kippstufe" oder einfach FlipFlop.  :P
Zitat von: Reisi
natürlich geht das. Dafür gibts ja das DDR Register (DataDiRection)


DDR = Data Direktion Register

Zum Programmer:
http://s-huehn.de/elektronik/avr-prog/avr-prog.htm
Den hab ich bis vor kurzem immer benutzt. 1x D-Sub Stecker und 2 Widerstände + Kabel. Einfacher gehts nicht :)

Zum Projekt:
Ein Mega8 sollte locker ausreichen für das Projekt.
Beim Quarz sollte man aufpassen, wenn UART benutzt wird. Ideal ist: 3.6864 Mhz
Die Taster könnten zur not auch 4 Bit codiert eingelesen werden. Dafür müssen diese nur über dioden passend verschaltet werden.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 23, 2007, 13:27:23
Ja also ich habe mich ja jetzt entschlossen das mit einem µC zu machen..
Ich habe aber jetzt nur ein 8 MHZ Quarz ist das schlimm? oder geht das trotzdem noch?

Wie meinst du das genau mit dem 4 bit codiert? Wäre antürlich en feine Sache dann hat sich das problem mit den PORT's quasi auch gelöst!

Ach und ich hab beim suchen nur gefunden das man bei Ports die Pins einzeln schalten kann aber kann man auch die einzelnen Pins eines Ports unterschiedlich konfigurieren? Also das z.B. vom Port C die ersten Pins als eingänge und die Pins drei und vier als Ausgänge funktionieren?

Mit dem Schaltplan bin ich noch nicht so weit da ich mich im Moment noch in eagle einarbeiten muss aber wenn ich einen habe dann bekommt ihr ihn direkt zu sehen! :P

Dafür ist der ISP fertig und auch recht platsparend in eine SUB-D Kappe verpackt!
Fotos folgen wenn ich mal wieder zuhause bin!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juni 23, 2007, 15:26:13
Zitat von: ReST.darry
Zitat von: Reisi
natürlich geht das. Dafür gibts ja das DDR Register (DataDiRection)


DDR = Data Direktion Register
Ehrlich gesagt hab ich mich mit den Abkürzungen noch nicht so genau auseinandergesetzt. Ich bin bis jetzt immer davon ausgegangen, dass das Wort Register nicht mit abgekürzt wird, da es ja sonst immer doppelt ist. Dem ist anscheinend doch nicht so.
Zitat von: Fabeulous $txt[176] Juni 23, 2007, 13:27:23
Ja also ich habe mich ja jetzt entschlossen das mit einem µC zu machen..
Ich habe aber jetzt nur ein 8 MHZ Quarz ist das schlimm? oder geht das trotzdem noch?
Ein Baudratequarz (da gibts mehrere, nicht nur 3,6864 MHz) wäre für den Fall zwar am besten, weil damit alle Baudraten exact eingestellt werden können, aber ein 8MHz Quarz geht auch, nur ist dann bei manchen Baudraten der Fehler zu groß. Aber mit 9600k gehts auf jeden Fall.
Zitat von: Fabeulous $txt[176] Juni 23, 2007, 13:27:23
Ach und ich hab beim suchen nur gefunden das man bei Ports die Pins einzeln schalten kann aber kann man auch die einzelnen Pins eines Ports unterschiedlich konfigurieren? Also das z.B. vom Port C die ersten Pins als eingänge und die Pins drei und vier als Ausgänge funktionieren?
Das geht ganz einfach, indem du die entprechenden Bits für die Ports die du als Eingang haben willst auf 0 setzt, und die die du als Ausgang haben willst als 1. Also wenn du z.B. 01010101 ins DDR schreibst, dann sind PORTX0,2,4 und 6 Ausgänge und PORTX1,3,5 und 7 Eingänge.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 23, 2007, 16:47:27
Okay so habe ich mir das quasi auch schon gedacht. Aber wass passiert denn dann wenn ich versehentlich versuche einen Ausgang zu setzen welcher eigentliche in Eingang ist?!

Okay das mit dem quarz ist fein. Ich denke ich werde da sowieso nicht groß mit den Übertragungsraten rumprobieren. Da muss ja eigentlich auch nicht viel übertragen werden, nur die Befehle zum schalten zum µC und der aktuelle Status des Ausgags zum PC!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juni 23, 2007, 17:19:49
Zitat von: Fabeulous $txt[176] Juni 23, 2007, 16:47:27
Okay so habe ich mir das quasi auch schon gedacht. Aber wass passiert denn dann wenn ich versehentlich versuche einen Ausgang zu setzen welcher eigentliche in Eingang ist?!
Ist auch ganz einfach.
Es gibt für die Ports prinzipiell drei Register: Das PORTx Register, das PINx Register und das DDRx Register. Letzteres dürfte ja schon klar sein.
Das PINx Register ist das Eingangsregister, damit kann man die aktuellen Zustände der einzelnen I/Os auslesen. Damit kannst die Eingänge abfragen (aber auch die Ausgänge, für evtl. Kontrollzwecke).
Das PORTx Register hat genaugenommen zwei Funktionen. Für die als Ausgang definierten I/Os setzt man damit die Pegel (0 für low, 1 für high, welch Überraschung). Für die als Eingnang definierten I/Os kann man damit die internen Pull-Up Widerstände aktivieren (0 für aus, 1 für ein), die kannst du für die Tastereingänge nutzen, dann kannst du dir die im Layout sparen.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 23, 2007, 19:31:16
Ach lol mit mit ein bischen nachdenken in einem wachereren Zustand hätte ich mir diese Frage auch sapren können! Trotzdem vielen Dank!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 23, 2007, 22:09:14
Sorry für Doppelpost!

So ich habe da mal meinen ersten Schaltplan auf die Beine gestellt:
fabeulousde.h198298.serverkompetenz.net/Schaltplan.png (http://fabeulousde.h198298.serverkompetenz.net/Schaltplan.png)

Ich hoffe das das so funktioniert so...?!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juni 24, 2007, 08:04:52
Die Pull Up Widerstände für die Taster kannst du dir wie schon gesagt sparen, da kannst genausogut die internen nehmen, vereinfacht das Layout etwas.

Was die drei Dioden und C4 für eine Funktion haben sollen ist mir allerdings ein Rätsel

EDIT:
PS: Für den ISP Anschluss gibts eigentlich eine Standardbelegung, die ist auch in der überarbeiteten Atmel Bibliothek drinn (gibts bei Cadsoft unter den Downloads)


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 24, 2007, 09:15:32
kann das sein dass die dioden verhindern sollen, dass der isp in der übertragung gestört wird? also auf mich klingt das irgendwie plausibel


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 24, 2007, 10:06:15
Richtig Stukka!
Also eigentlich ist es ja auch wurscht aber wenn man während der Übertragung einen der drei Taster betätigt dann könnte es ja zu problemen kommen. Deswegen habe ich mir gedacht lieber drei Dioden zuviel als drei zuwenig...

Und das mit dem C4 habe ich von mikrocontroller.net so übernommen... Hat wohl was mit der Resetschaltung zu tun...

Um das mit dem internen widerstand des µC's zu machen muss ich dann den Taster so anbringen, dass er beim schließen den Pin auf Masse zieht?!

Wenn ich gleich an meinem PC bin mache ich nochmal eine überarbeitete Version...

Aber sonst ist der Schaltplan eurer Meinung nach funktionstüchtig?
Vielen Dank schonmal bis hierhin!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 24, 2007, 10:48:01
jawoll du hasts erfasst.. die taster müssen auf masse gehn

ich seh jetzt keine fehler..


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juni 24, 2007, 13:16:06
Zitat von: Fabeulous $txt[176] Juni 24, 2007, 10:06:15
Richtig Stukka!
Also eigentlich ist es ja auch wurscht aber wenn man während der Übertragung einen der drei Taster betätigt dann könnte es ja zu problemen kommen. Deswegen habe ich mir gedacht lieber drei Dioden zuviel als drei zuwenig...
Das Problem löst man aber normalerweise nicht mit Dioden sondern mit Serienwiderständen. Also statt den Dioden 10k Widerstände und gut ists.
Zitat von: Fabeulous $txt[176] Juni 24, 2007, 10:06:15
Und das mit dem C4 habe ich von mikrocontroller.net so übernommen... Hat wohl was mit der Resetschaltung zu tun...
Würd ich trotzdem weglassen (genauso wie den Pull-Up fürn Reset, da gibts auch intern einen). die AVRs haben von Haus aus eine Power-On-Reset Schaltung integriert, und wenn die Schwelle zu gering ist, kann man das immer noch mitm internen BOD realisieren.
Zitat von: Fabeulous $txt[176] Juni 24, 2007, 10:06:15
Um das mit dem internen widerstand des µC's zu machen muss ich dann den Taster so anbringen, dass er beim schließen den Pin auf Masse zieht?!
Jo, quasi so wie jetzt, kannst einfach die Widerstände weglassen.

PS: Weil wir schon bei weglassen sind, noch ein kleiner Tip zum ULN2803. Du willst deine Relais doch mit den 12V schalten, oder? In dem Fall leg die 12V auch an den ULN2803. Dann kannst du dir auch die Freilaufdioden für die Relais sparen, weil du damit quasi die Clampingdioden als Freilaufdioden misbrauchst.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 24, 2007, 14:31:56
So ich habe deine Antwort leider gerade erst gelesen:
Also ich habe bis gerade eben diesen Schaltplan zusammengefummelt:
http://fabeulousde.h198298.serverkompetenz.net/Schaltplan2.png

Ich mache mich jetzt nochmal an deine Verbesserungsvorschläge udn Poste dannd irekt nochmal den neuen Schaltplan!

Ach so und eine Frage habe ich noch:
Habe ich den Max232 richtig angeschlossen? Weil bei mikrokontroller.net, wo ich mir das ein bischen angeguckt habe, war ein anderer Max232 welcher noch zwei pins für VCC und GND hatte. Diesen habe ich aber leider nicht gefunden.

danke schonmal ein weiterer Schaltplan folgt gleich!

EDIT:
Öhm aber wo soll ich am ULN... denn 12V anlegen? der hat doch garkeinen VCC pin?!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juni 24, 2007, 14:50:42
Zitat von: Fabeulous $txt[176] Juni 24, 2007, 14:31:56
Ach so und eine Frage habe ich noch:
Habe ich den Max232 richtig angeschlossen? Weil bei mikrokontroller.net, wo ich mir das ein bischen angeguckt habe, war ein anderer Max232 welcher noch zwei pins für VCC und GND hatte. Diesen habe ich aber leider nicht gefunden.
Nö, die stimmt so nicht. Die VCC und GND Pins sind da extra, die musst du noch über Invoke holen (Barbeiten -> Invoke oder das Symbol (http://img233.imageshack.us/img233/6420/invokeig2.gif) anklicken und anschließend auf das Symbol vom MAX232 klicken.
Übrigens, wenn ich mich jetzt nicht irre, ist der MAX232ECWE die SMD Variante, Absicht?

Zitat von: Fabeulous $txt[176] Juni 24, 2007, 14:31:56
EDIT:
Öhm aber wo soll ich am ULN... denn 12V anlegen? der hat doch garkeinen VCC pin?!
Pin 10.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 24, 2007, 15:38:05
Ne das war eher unbeabsichtigt.
Aber ich hab das jetzt mal so gelassen sonst muss ich da wieder alle leitungen nue legen...

So ich habe dann nochmal die Sachen geändert:

http://fabeulousde.h198298.serverkompetenz.net/Schaltplan3.png

Der eingezeichnete VCC und GDN Pin des MAX232 sieht ein bischen häßlich aus aber anders habe ich es nicht hinbekommen

Was sagt ihr dazu?


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 24, 2007, 21:06:51
In der zwischenzeit habe ich den ISp ein bischen auf kopakt gepimpt(habe ich irgendwo im netz gesehen):
(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/ISP_1.JPG)
(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/ISP_2.JPG)
(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/ISP_3.JPG)

Jetzt mache ich mal an den Probeaufbau auf dem Steckbrett...

Könnt ihr mir nochmal ein Feedback zu diesem (http://fabeulousde.h198298.serverkompetenz.net/Schaltplan3.png) Schaltplan geben?!
Danke!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 27, 2007, 09:52:24
Okay ich hab jetzt einfach mal angefangen die Sache hier aufzubauen... Bilder folgen bald wenn uich zuhause bin!
Ich hoffe euer Schweigen zu dem Schaltplan war stumme Zustimmung... :P
Trotzdem vielen Dank an alle die mir bis hierher geholfen haben!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 27, 2007, 13:31:55
naja ich hoff mal du hast das wesentliche erstmal aufn steckbrett gestöpselt





Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 27, 2007, 15:09:38
ich hab da gerade mal noch eine Frage:
Den Festspannungsregler habe ich ja nach diesem Schaltplan nachgebaut:
http://www.blafusel.de/bilder/spannung/78xx.gif

Nur wofür steht hier das minus-zeichen? Ich habe das jetzt einfach als Masse interpretiert...
War das Falsch?


Titel: Re: Taster als Schalter via AVR
Beitrag von: Crawler am Juni 27, 2007, 15:28:07
Das ist korrekt: hier ist Minus=Masse=GND. Sieht man ja schön, dass das Minuszeichen (-) eine direkte Verbindung zum Massesymbol hat. Wäre es nicht das gleiche, so wäre es ein schöner Kurzschluss.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 27, 2007, 16:30:35
Okay gut stimmt eigentlich! :D hat mich nur etwas verwirrt das beides da war! Danke!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 28, 2007, 16:38:14
Och man ist das entmudtigend:

Ich hatte das teil soweit aufgebaut das ich mal was testen wollte.
Leider ist wavrasm aber wohl zu alt um die defintionsdatei des mega8 zu akzeptieren... ich kriege nämlich immer die Fehlermeldung "illegal device name" und nahc ein bischen googlen fand ich heraus das wavrasm den atmge 8 wohl noch nciht kennt!? Ist das richtig?
Leider habe ich bisher auch kein anderes toll gefunden was mir den asm code in hex umwandelt... hat vlt. jemand eine alternative?

Dann ist mir auch noch ein Kondensator unverständlicherweise durchgebrannt... Aber das lag wohl an mir...

Wenn ich aber nun einfach mal vom µC lesen möchte erkennt Pony Prog ihn nicht...
Habt irh vlt. ein paar Tips was ich falsch gemacht haben könnte?

Edit:
Noch ein Paar informationen:
ich habe Pony Prog nach diesem Tutorial eingestellt:
http://www.mikrocontroller.net/articles/Pony-Prog_Tutorial
Ich hoffe das passt zu diesem ISP:
http://www.avr-asm-tutorial.net/avr_de/beginner/hardware.html#ParPort
Ich bekomme Fehler -24(Device missing or Unknown device) in Pony Prog


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juni 28, 2007, 16:54:38
Zitat von: Fabeulous $txt[176] Juni 28, 2007, 16:38:14
Leider habe ich bisher auch kein anderes toll gefunden was mir den asm code in hex umwandelt... hat vlt. jemand eine alternative?
Woe wärs mitm AVR Studio von Atmel?
Zitat von: Fabeulous $txt[176] Juni 28, 2007, 16:38:14
Edit:
Noch ein Paar informationen:
ich habe Pony Prog nach diesem Tutorial eingestellt:
http://www.mikrocontroller.net/articles/Pony-Prog_Tutorial
Ich hoffe das passt zu diesem ISP:
http://www.avr-asm-tutorial.net/avr_de/beginner/hardware.html#ParPort
Ich bekomme Fehler -24(Device missing or Unknown device) in Pony Prog
Du hast aber schon den Atmega8 ausgewählt und nicht wie da den Atmega16? Wenn ja, hast irgendeinen Verdahtungsfehler.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 28, 2007, 18:33:16
ja der adapter passt zum programm
wenn das device missing ist dann überprüf mal deinen aufbau am µC.. hast du diesen resetkreis von mikrocontroller.net nachgebaut?
ist dein kabel auch richtig? -




Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 29, 2007, 12:28:42
Wie muss ich den AVR Studio dann einstellen?
Ja ich habe den resetkreis von microkontroller.net nachgebaut!
Wenn du das Parallel kabel meinst dann ja!
Ich überprüfe jetzt nochmal alles!
Danke!

EDIT:
So die fehlermeldung kommt jetzt immer noch aber wenn ich auf Ignore klicke funktioniert das schreiben udn lesen trotzdem...
Leider weis ich immer noch nciht wie ich den asm code in hex umwandeln kann...

Edit:
Gerade hat sich noch ein Problem offenbart...
Der 330n Kerko vom Ferstspannungsregler explodiert immer und verbreitet dann seinen ungemütlichen Gestank! :D
Hat jemand eine Idee warum?


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 29, 2007, 15:01:33
@kerko überspannung evtl?
ich mein auch, dass da kein kerko sitzen sollte? bei mir ist das glaube ich so ein polyester irgendwas ding oder wie die heißen..


asm code bekommst du in hex wenn du im avr studio auf "assemble" gehst.. er speichert dann ein .hex file im project- ordner

das device missing or unknown device bekomm ich auch, wenn der programmer nicht angeschlossen ist.. hast du evtl da nen fehler im aufbau? auf der programmer-platine?

ansonsten lies mal die fuse bits aus.. und vergleiche mit den factory settings aus dem handbuch.. wenns stimmt, geht die kommunikation würde ich sagen


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 29, 2007, 15:38:06
Also ich habe es jetzt mit einem anderem isp probiert. und ohne Festspannungsregler... also ich habe die Versorgungsspannung vom PC NT genommen... die solte ja auch recht genau sein!

Leider kommt aber immer noch die Fehlermeldung und wenn ich den µC beschriebe sagt Pony Prog das das schreiben fehlgeschlagen ist...

kann ich für den Festspannungsregler nicht einfach nen Kondensator mit einer größeren Kapazität nehmen?

Soll ich mir vlt. nicht einfach nen fertigen Isp kaufen um diesen als fehlerquelle ausschließen zu können?
Danke schonmal!

P.S.:
Ich fahre morgen für ne woche in den Urlaub... ich werde mich wohl erstmal nciht melden... könntet irh wenn es geht ruhig mal ein bischen Brainstormtechnische lösungsmöglichkeuten geben dann habe ich direkt was zum ausprobieren!
Danke!

EDIT:
Was haltet ihr von diesem ISP:
http://cgi.ebay.de/Atmel-AVR-ISP-Programmer-USB-direkt-aus-AVR-Studio_W0QQitemZ160129755606QQihZ006QQcategoryZ12949QQssPageNameZWDVWQQrdZ1QQcmdZViewItem

Ich überlege ihn mir zu kaufen... falls der link nicht geht einfach usb isp bei beay eingeben es ist der einzige der kommt... müsste 20 euro kosten...
Danke


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 29, 2007, 19:17:25
also du hast den gleichen isp wie ich habe, mit der gleichen software wie ich habe.. ich hab den isp sogar 2 mal aufgebaut.. beide gehen..
versorgung via pc ist vielleicht noch genauer als der regler, je nach NT

wenn das schreiben fehlschlägt, KANN eigentlich nur was mit der übertragung nicht stimmen.. ist das längere kabel auch abgeschirmt?, wirklich das was angegeben wir, was man nehmen soll? nicht dass da leitungen gekreuzt sind oder sowas
was ist mit dem kabel zum wannenstecker? flachband? evtl wackler, kabelbruch?
stecker korrekt verlötet? buchse auf der platine korrekt verdrahtet?


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 29, 2007, 22:01:00
ich vermute das es vlt. auch an meinem selbstgebautem paralleladapter liegen kann... weil mein mainboard hat keinen richtigen parallel port mehr nur diese pins aufm mobo an die man sowas anschließen kann... Da habe ich mir dann so einen Adapter gebaut also von Pfostenstecker auf Sub-D...
deswegen denke ich das ich mir so einen usb isp kaufe... bei dem weiß ich nämlich das alles funktioniert...

ich habe den isp auch zweimal aufgebaut aber bei beiden aufbauten funktionierte es nicht...

die verdrahtung habe ich kontrolliert aber es hat nie funktioniert....
ich besorge mir jetzt einfach son usb isp und hoffe das das problem dadurch gelöst wird...
trotzdem Danke!
bis in einer woche!
schöne ferien noch :P


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juni 29, 2007, 23:04:39
ja dann tu das.. schöne ferien  :bestens:


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juni 30, 2007, 05:07:54
danke :P


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juli 10, 2007, 18:19:22
Zitat von: Fabeulous $txt[176] Juni 29, 2007, 22:01:00
ich besorge mir jetzt einfach son usb isp und hoffe das das problem dadurch gelöst wird...
trotzdem Danke!
Hast du schon einen? Wenn nicht gleich die nächste Frage. Willst du dich mehr mit den AVR µCs beschäftigen? Wenn ja würd ich dir den ACRDragon empfehlen. Der kann nicht nur ISP, sondern alle möglichen Programierarten und noch besser, amn kann damit auch über DebigWire bzw. JTAG debugen. Kostet ca. 60€. Außerdem gibts von Atmel momentan eine Sonderaktion bestehend aus dem STK500 Starterkit und dem AVRDragon, das gibts momentan bei Segor für 69€. Wäre evtl. eine überlegung wert.

PS:
Ich war mal so frei und hab eine 4fach Variante mitm ATtiny 13 gemacht.
(http://img230.imageshack.us/img230/4787/sbqeoe4.jpg)
(Die Relais müsst ihr euch dazudenken, da hab ich keine da)


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juli 10, 2007, 19:48:16
und du hast nur mal eben so extra dafür ne platine geätzt? oder hat das ding für dich später noch nen nutzen??

tja also jtag ist natürlich nicht übel, und das ganze parralel zu machen wär auch toll wegen dem reset pin.. aber mir fällt im hobbybereich jetzt nicht direkt ne anwendung für jtag ein..


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juli 10, 2007, 20:03:35
Zitat von: Stukaa $txt[176] Juli 10, 2007, 19:48:16
und du hast nur mal eben so extra dafür ne platine geätzt? oder hat das ding für dich später noch nen nutzen??
naj, genaugenommen wars ein Test des LED Belichters.
Zitat von: Stukaa $txt[176] Juli 10, 2007, 19:48:16
tja also jtag ist natürlich nicht übel, und das ganze parralel zu machen wär auch toll wegen dem reset pin.. aber mir fällt im hobbybereich jetzt nicht direkt ne anwendung für jtag ein..
Debuggen ist m.M.n auch im Hybbybereich ein riesen Vorteil. Gerade wenns mal etwas aufwändiger wird ist die Fehlersuche dadurch deutlich einfacher. Anstatt über LEDs oder ähnliches rumzuprobieren wo der Fehler liegen könnte, kann man einfach Schritt für Schritt durchsteppen und sieht sofort wo der Fehler liegt.

In der Schaltung hab ich z.B. die Schwellen fürn ADC damit ermittelt, klar kann man das auch berechnen, aber es geht schneller wenn man im Register nachschaut, dann hat man auch gleich den Offsetfehler erschlagen.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juli 11, 2007, 10:27:14
Hoi!
Ne ich habe mir jetzt erstmal ein Parallel/USB Adapter kabel gekauft... Ich hatte gerade nicht genug Geld und das Kabel war etwas günstiger als der USB Adapter... Das sollte die Tage ankommen... Dann kann ich zumindest meine selbst gebaute Parrallel Anschluss adapter maschine als fehlerquelle aussschließen...
Wenn das da ist werde ich dann nochmal alles testen und überprüfen

@ reisi: Könntest du den Quelltext deiner 4 taster Version mal online stellen? Oder möchtest du das eher nicht?

Danke


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juli 11, 2007, 12:49:34
Zitat von: Fabeulous $txt[176] Juli 11, 2007, 10:27:14
Ne ich habe mir jetzt erstmal ein Parallel/USB Adapter kabel gekauft...
Das wird sehr warscheinlich nicht funktionieren. Diese USB/Parallel Adapter sind eigentlich nur für Drucker geeignet, programieren kann man mit denen nicht.
Zitat von: Fabeulous $txt[176] Juli 11, 2007, 10:27:14
@ reisi: Könntest du den Quelltext deiner 4 taster Version mal online stellen? Oder möchtest du das eher nicht?
Bitteschön, da ist nix besonderes drinn, was sich lohnen würde geheim zu halten ;)
Source (http://monkey-punk.com/www/Ext_stuff/Switch_button_quad.zip)



Titel: Re: Taster als Schalter via AVR
Beitrag von: raDon am Juli 11, 2007, 22:57:42
Zum programmieren kann ich diesen ISP Programmer empfehlen:

http://www.klaus-leidinger.de/mp/Mikrocontroller/AVR-Prog/AVR-Programmer.html

Funktioniert 1A. Programmiert wird mit dem AVR-Prog, welches im AVR Studio unter "tools" zu finden ist.

Ich betreibe den auch über einen USB-Serial Wandler. Sogar das läuft ohne fehler, super stabil!  :bestens:


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juli 12, 2007, 18:50:35
erstmal vielen dank für die Tips...

ich habe mir jetzt bei ebay folgenden ISP bestellt:
http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&ih=006&sspagename=STRK%3AMEWN%3AIT&viewitem=&item=160134768131&rd=1&rd=1

Das ist zwar kein USB ISP aber einen seriellen Anschluss habe ich auch noch auf meinem board...

Ich hoffe damit klappt dann alles bzw. zumindest ein bischen damit mich das für weiteres ausprobieren und rumfummeln motiviert....

na ja ich hoffe das päckchen kommt schnell an... bis dahin werde ich mich wohl mit modding auf einem tieferem niveau befriedigen! :P


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juli 24, 2007, 14:37:25
So... mein neuer ISP ist heute angekommen.
Soweit funktioniert auch alles. Also er wird problemlos erkannt und das Programmieren "klappt" wohl auch... nur habe ich das Problem das der Atmel wohl nicht wirklich programmiert wird, denn beim Überprüfen nach dem programmieren sagt mir mein PC das der Code nicht übereinstimmt.
Es wird nämlich irgendwie doch nix bzw. nur nullen in den Speicher des µC's geschrieben.
Hat jemand eine Ahnung Warum?

Ich hab den Aufbau auf dem Steckbord schon aufs wesentliche reduziert. Eigentlich ist nur noch die Stromversorgung an den µC angeschlossen und die Leitungen zum programmieren!
Bitte helft mir! Das ganze macht voll keinen Spaß ohne erflogserlebniss!
Danke!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Ast am Juli 24, 2007, 14:42:49
Viele Programmiergeräte beziehen ihren Strom auch aus der Versorgungsspannung des AVRs.

Hast du V+ des AVRs mit dem ISP-Stecker verbunden?


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juli 24, 2007, 14:50:18
Japs das habe ich gemacht.
Falls es hilft:
Hier ist der "Log" von AVR- Osp II:
Code:
Checking programmer type ...
Found AVR ISP
Entering programming mode...
Reading HEX input file for flash operations...
Programming Flash contents... 0x0000 TO 0x0009
Leaving programming mode...
Checking programmer type ...
Found AVR ISP
Entering programming mode...
Reading HEX input file for flash operations...
Reading Flash contents...0x0000 TO 0x0009
Comparing Flash data...
Unequal at address 0x0000
Expected 0x0F   Read 0x00
Leaving programming mode...

Und ich benutze diesen (http://www.my-irshop.de/catalog/product_info.php?cPath=28&products_id=73) ISP.

In der Beschreibung zu dem Ding steht das die zwei LED's nur leuchten wenn die Versorgungsspannung von der Zeilschaltung korrekt ist. Deswegen denke ich das es daran nicht liegt...


Titel: Re: Taster als Schalter via AVR
Beitrag von: Ast am Juli 24, 2007, 15:00:08
Also ich habe auch manchmal das Problem, dass er nach dem Schreiben offenbar was anderes ausliest, als es sein sollte.

Meistens liegt es daran, dass sich noch andere Bauteile an den ISP Leitungen befinden, oder die Versorgungsspannung nicht einwandfrei ist.

Ansonsten könntest du auch mal den AVR wechseln.
Vielleicht ist der ja nicht ganz in Ordnung.

P.S.: Manchmal hat es nach mehreren Versuchen auch einfach so geklappt, ohne das ich was geändert habe.
Vor allem wenn die Stromversorgung schuld war.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juli 24, 2007, 15:09:10
Okay also wenn vlt. die Stromversorgung schuld sein könnte dann spiell es vlt. eine Rolle das ich den AVR gerade ohne Festspannungsregler per PC-NT betreibe.
MIr wurde mal gesagt das dies sogar noch etwas exakter ist als per Festspannungsregler...
Ich hab mal ein paar Fotos gemacht falls jemand lust hat sich durch den Aufbau zu wuseln. Nur wie gesagt da dieser schon sehr minimalistisch ist denke ich cnith das es daran liegt...

(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/1.JPG)
(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/2.JPG)
(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/3.JPG)
(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/4.JPG)

Vielen Dank!

P.S.: Zu den Bildern sei noch gesagt das das Rote ankommende Kabel VCC 5 ist udn das Grüne GND
Ach so den Atmel habe ich schon getauscht. Da bestand leider das selbe problem. Ich hab es auch mit mehreren Programmen probiert. AVRStudio und AVR-Osp II sagen das oben genannte und bei Pony Porg kommt "Hardware error, is the Board properly connected?" -14


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juli 24, 2007, 15:22:59
Okay entwarnung! Ich habe es jetzt mit dem dritten AVR ausprobiert und damit funktioniert es!
komische Sache...
Vielen Dank!

P.S.: Kann man solche AVR's bei reichelt umtauschen?

P.S.: Man ist das nen geiles Gefühl! :D
Ne also dannd enke ich wird es hier jetzt hoffentlich weiter gehen :P


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juli 24, 2007, 19:20:20
Zitat von: Fabeulous $txt[176] Juli 24, 2007, 15:22:59
P.S.: Kann man solche AVR's bei reichelt umtauschen?
Ein defekter µC ist schon unwarscheinlich, aber zwei nahezu unmöglich. Da ist sicher ein Fehler in der Schaltung, oder ein anderer Fehler in der Handhabung.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Juli 27, 2007, 09:03:29
so ich bin dann mal zurück ausm urlaub  ;)
also es _könnte_ ja sein, dass mit dem anderen ISP die anderen beiden AVRs geschrottet wurden, oder? schliesslich muss ja bei dem was verkehrt gewesen sein..
dann poste mal schön deine fortschritte weiter  ;)


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juli 27, 2007, 14:14:20
Okay also reisi du hattest recht! Es lag ein wenig daran das ich noch nciht genau wusste wie son steckbord funktioniert! :D
Also es gehen doch noch alle... Das programmieren klappt also.
Ich hab auch schon die ersten Sachen zusammen gelötet. Bilder folgen gleich...
Wobei ich noch Probleme habe ist, diese FuseBits zu setzen?! Was muss ich denn da wie setzen um das Quarz als Tatktegeber anzumelden... Ich weis da gibts tausend tutorials zu nur leider sind die nicht wirklich einfach und zusätzlich ist das alles noch recht verwirrend das die Programme das teilweise anders handeln...
Ich habe hier AVR-OSP II damit kann man die dinger wohl setzen nur leider weis ich cniht was?! könnt ihr mir vlt. ein gutes tutorial bzw. die Pins nennen?!
Vielen Dank!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Ast am Juli 27, 2007, 14:21:41
Sämtliche Funktionen der Fusebits sind ausführlich im Datenblatt des AVRs beschrieben.

Dort steht auch was die Standardeinstellungen sind.
Du solltest nur die verändern, welche auch eine Funktion erfüllen, die du brauchst.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am Juli 27, 2007, 15:08:43
Die Fuses sind schon etwas gewöhnungsbedürftig, vor allem als Anfänger. Gerade bei den verschiedenen Taktquellen kann man durchaus durcheinander kommen, einmal was falsch interpretiert und schon funktionert nichts mehr. Ist mir anfangs selbst oft genug passiert.
Nutzt du das AVR Studio? Da ist m.M.n. recht gut gelöst, da man alles gleich sieht und nicht gezwungen ist im Datenblatt rumzuwühlen.


Titel: Re: Taster als Schalter via AVR
Beitrag von: TechnikMaster am Juli 27, 2007, 15:51:01
Ich persönlich finden den AVR FUSE CALCULATOR (http://palmavr.sourceforge.net/cgi-bin/fc.cgi) von PalmAVR recht nützlich, wenn es um das setzen von Fuses geht ;) Dann bekommt man mit ein paar Mausklicks die richtigen Fusebit-Settings.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juli 27, 2007, 17:13:43
Okay dann wühle ich mich da gleich mal durch! Schonmal vielen Dank bis hierhin!
Hier die versprochenen Bilder:
(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/aufbau1.JPG)
(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/aufbau2.JPG)

EDIT:

So mein Englisch gibt leider den Geist auf...

Was ist denn ein ganz normales Quarz auf Englisch?
Ich mein weil man laut Datenblatt ja eine Große auswahl hat...

Code:
Table 2. Device Clocking Options Select(1)
Device Clocking Option CKSEL3..0
External Crystal/Ceramic Resonator 1111 - 1010
External Low-frequency Crystal 1001
External RC Oscillator 1000 - 0101
Calibrated Internal RC Oscillator 0100 - 0001
External Clock 0000


Titel: Re: Taster als Schalter via AVR
Beitrag von: Ast am Juli 27, 2007, 18:02:44
External Crystal


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juli 29, 2007, 17:58:29
Dankeschön!
Das schau ich mir gleich mal an!
habe gerade die Sache mit dem ULN2803 fertig gelötet. Das haut soweit auch hin ich muss den halt jetzt nur noch an den µC anschließen.
Hier ein bildchen für euch :P
(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/aufbau3.JPG)

Jetzt schau ich mal ob das mit den Fuse Bits klappt...


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Juli 31, 2007, 12:30:03
So ich bin es mal wieder!
Ich habe nun den ULN2803 angeschlossen! Das klappt auch alls sehr schön! Ich habe mal ein Lauflicht damit ausprobiert... guckt ihr hier -->Video (http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/Video.AVI)
man sieht es zwar nicht wirklich gut da die Led's sehr hell sind aber ich denke ein bischen erkennt man :P

Hier nochmal das ganze als Bild:
(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/aufbau4.JPG)

Die kommenden tage wird wohl erstmal nix passieren da ich erstmal wieder Lötzinn einkaufen muss...
Aber dann wird es weiter gehen:
-der Max232 muss noch verkabelt werden
-und noch ein paar taster anschlüsse...

Ach so ist es eigentlich normal das der ULN2803 sich etwas erwärmt? Ich denke mal ja aber ist es auch normal das die Widerstände der Led's heiß werden? Ich denke das das wahrschienlicha uch normal ist richtig?


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am August 2, 2007, 14:42:32
So, hier mal mein Senf dazu. Man kann an Port D 8 Taster gegen Masse anschließen. Pull-Ups sind schon im AVR aktiviert. An Port B hat man die 8 Ausgänge. Debounce ist softwareseitig auch schon drin.

Code:
.include "m8def.inc" ; Deklarationen für ATmega8

.equ in_port = PORTD ; Input Port
.equ in_pin = PIND ; Input Pin

.equ out_port = PORTB ; Output Port
.equ out_ddr = DDRB ; Output DDR

.equ start = 0b00000000 ; Startwert

.equ waitms = 1 ; Wartezeit für Debounce in ms
.equ freq = 1000000 ; Takt in Hz

.cseg ; Programm-Flash
ser R16 ; 0xFF ins Register R16 laden
out out_ddr, R16 ; Port B als Ausgang definieren
out in_port, R16 ; Pull-Up Widerstände aktivieren

ldi R16, start ; Startwert laden

; Arbeitsschleife
; R16 = Output Register
; R17 = Input Register
; R18 = Input Register kopie
; R19 = Letzter Input

; Tasterstatus laden und sichern
loop: in R17, in_pin ; PortD in R17 laden
mov R18, R17 ; R18 in R17 kopieren

; Lösche Bit in R17 wenn Bit in R19 = 1
com R19 ; R19 komplementieren
and R17, R19 ; Lösche Bit in R17 wenn Bit in R19 = 0

; Letzten Input in R19 laden
mov R19, R18 ; R18 in R19 kopieren

; Output ändern und ausgeben
eor R16, R17 ; Komplementiere Bit in R16 wenn Bit in R17 = 1
out out_port, R16 ; R16 an PortB


; XL = R26 16Bit Counter Low
; XH = R27 16Bit Counter High
.equ waitcircles = (((freq / 1000) * waitms) / 4) - 3

        ldi XL, LOW(waitcircles) ; Zähler Low in R17 laden 1 Takt
        ldi XH, HIGH(waitcircles) ; Zähler High in R18 laden 1 Takt

wait: sbiw XL, 1 ; Zähler dekrementieren 2 Takte
brne wait ; Springe zu wait wenn nicht 0 2 Takte bei != 0, 1 Takt bei == 0

rjmp loop ; Endlosschleife

Sry dass das so deformiert ist. Im AVR-Studio gehts dann. Einfach reinkopiern. Hoffe das funktioniert so, habs nich mehr getestet^^

mfg PoWl


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am August 2, 2007, 14:50:34
Cool, danke!
Ich werde mir das gleich mal angucken. Habe mich im Moment noch garnicht mit der Software beschäftigt...
Danke


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am August 10, 2007, 14:33:53
So... Ich bin mittlerwiele natürlich etwas weiter gekommen:

Die Hauptplatine ist soweit fertig gelötet... nun fehlt nur noch die Software...
(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/aufbau5.JPG)

Die Platine welche auf die Hauptplatine gesteckt wird und an welche die Relais angeschlossen sind und auch die Schraubklemmen für die Verbraucher...
(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/aufbau6.JPG)

Beides zusammengesteckt...
(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/aufbau7.JPG)

Das ganze habe ich schon recht kompakt mit dem restlichen Elektronikkram, wie Inverter für Kaltlichtkathoden oder ähnliches, in ein alte Hülle eines CD Rom laufwerks verbaut...

Kann mir noch jemand beantworten ob ich mir sorgen machen muss wenn der ULN2803 und die Vorwiderstände der LED's warm bzw. heiß werden?!
Danke


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am August 10, 2007, 16:57:32
Zitat von: Fabeulous $txt[176] August 10, 2007, 14:33:53
Kann mir noch jemand beantworten ob ich mir sorgen machen muss wenn der ULN2803 und die Vorwiderstände der LED's warm bzw. heiß werden?!
Danke
Naja, die daran abfallende Leistung wird eben mal in Wärme umgesetzt, solange die zulässigen Parameter eingehalten werden ist das kein Problem.

PS: Die Relaisverkabelung ist ganz schön mutig, gibt bei jedem Umschalten einen schönen Störsender ab.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am August 10, 2007, 21:27:35
Okay inwiefern meinste das und was kann man dagegen tun? Geht das "Störsenden" von den Kabneln aus oder von den Relais?! Brauche ich dann abgeschirmte Kabel? :D


Titel: Re: Taster als Schalter via AVR
Beitrag von: TzA am August 10, 2007, 22:41:49
Stösenden tut da nix wesentliches, dafür ist das das alles zu niederfrequent.
Ich hätte da eher Bedenken, dass sich mal ein Kabel löst und dann einen Kurzschluss verursacht, man könnte die Relais ja auch auf die Platine löten, dann fliegt nichts in der Gegend herum.

Ob du dir Sorgen wegen der Erwärmung machen musst, kommt darauf an wie groß diese ist.
Bei den LED-Vorwiderständen kannst du ganz einfach ausrechnen, welche Leistung an ihnen abfällt, und dass mit der angegeben Maximalbelastbarkeit vergleichen.
Beim ULN muss man im Prinzip den im Datenblatt angegebenen Wärmewiderstand (Junction to Case Ambient interessiert hier) und die maximale Temperatur nachsehen, daraus kann man dann die maximale Verlustleistung berechnen.
Aber sofern das Gehäuse noch so kalt ist, dass man es dauerhaft anfassen kann, ohne sich die Finger zu verbrennen, ist es unbedenklich.

Edit: Junction to Ambient ist natürlich der benötigte Wärmewiderstand, thx@b0nze


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am August 11, 2007, 13:28:45
Yoa okay dann lass ich die Verkabelung ersmal so...
Anlöten wäre mir auch lieber, leider passen die Relais nicht auf das mein Rastermaß... Und ich werde die Relais natürlich auch noch im CD-Rom gehäuse befestigen...
Der ULN2803 wird nur so warm das man ihn locker noch anfassen kann, die Widerstände dagegen weniger... ich werde das mal ausrechnen...
Danke erstmal!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am August 12, 2007, 16:13:05
So jungs ich habe ein Problem... ich versuche die Fusebits einzustellen...
Undzwar so das mein externes 8 Mhz Quarz als Taktgeber erkannt wird... ich habe jetzt alles gelesen aber irgendwie weis ich jetzt trotzdem ncith genau was ich da wo einstellen muss?!
Könnte sich jemand erbarmen mir ein mini how to zu schreiben?
In untertänigster Dankbarkeit und grenzenloser liebe Fabeulous


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am August 12, 2007, 22:38:57
Du musst bei deinem ATmega die Fuses CKSEL 3, 2 und 1 auf "1" stellen. Das bedeudet hier unprogrammed. Je nachdem was fürn progg du nutzt. Bei meinem Ponyprog bedeutet unchecked = 1 = unprogrammed. D.h. man muss die jeweiligen Checkboxen unchecken also leer machen, keine häkchen drin. CKOPT solltest du auch auf 1 stellen können.

Steht übrigens alles im Manual so drin^^ ich hoff mal ich hab das richtig interpretiert^^


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am August 13, 2007, 13:07:39
Okay danke ich habe es gestern nochmal in einem waghalsigem eigenversuch versucht... hat wohl auch geklappt zumindest läuft bzw. lief der avr gestern immernoch...
Aber dadurch machte sich direkt das nächste Prolem bekannt...
Ich hab dann versucht per rs232 mit dem pc zu kommunizieren dazu habe ich einfach mal das kleine testprogramm aus dem tutorial von mikrocontroller.net benutzt... leider funktionierte das nicht... hat jemand eine idee woran das liegen könnte?


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am August 13, 2007, 13:17:07
Zitat von: Fabeulous $txt[176] August 13, 2007, 13:07:39
... leider funktionierte das nicht...
Mit dieser detailreichen Fehlerbeschreibung kann dir glaub ich keiner helfen. Mehr Infos! Was funktioniert nicht? Gibts schon beim compilieren einen Fehler? Zeigt das Terminal gar ncihts an, oder nur Quatsch? Welche Baudrate? ...


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am August 13, 2007, 14:00:08
Sorry ich war gerade unter Zeitdruck weil mein Chef jheden moment reinplatzen konnte... Also nochmal ausführlich:
Ich hab aus diesem Tutorial http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART
Diesen Code genommen:
Code:
.include "m8def.inc"

.def temp = r16
.equ CLOCK = 4000000
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1

        ; Stackpointer initialisieren
        ldi temp, LOW(RAMEND)
        out SPL, temp
        ldi temp, HIGH(RAMEND)
        out SPH, temp

        ; Baudrate einstellen
        ldi temp, HIGH(UBRRVAL)
        out UBRRH, temp
        ldi temp, LOW(UBRRVAL)
        out UBRRL, temp

        ; Frame-Format: 8 Bit
        ldi temp, (1<<URSEL)|(3<<UCSZ0)
        out UCSRC, temp

        sbi UCSRB,TXEN                    ; TX aktivieren

loop:   ldi temp, 'T'
        rcall serout                      ; Unterprogramm aufrufen
        ldi temp, 'e'
        rcall serout                      ; Unterprogramm aufrufen
        ldi temp, 's'
        rcall serout                      ; ...
        ldi temp, 't'
        rcall serout
        ldi temp, '!'
        rcall serout
        ldi temp, 10
        rcall serout
        ldi temp, 13
        rcall serout
        rjmp loop

serout:
        sbis UCSRA,UDRE                   ; Warten bis UDR für das nächste
                                          ; Byte bereit ist
        rjmp serout
        out UDR, temp
        ret                               ; zurück zum Hauptprogramm

Hyper Terminal habe ich dann auch so eingestellt wie es angegeben war... nur leider kommt bei Hyper Terminal garnichts an! Also der Bildschirm bliebt weis...

Ich werde es jetzt nochmal probieren... Danke

EDIT:
So nun geht es... zumindest empfängt er etwas aber es komtm nur buchstabensalat an... falls es hilft ungefähr sowas :D
Code:
oï!„w„»8¿!„ww„w„w„ï!„w„ï!„w„„w„w„„w„w„~Ý„w„ww„w„w„ôw„w„w!„w„w„î„w„w„ï!„w„wG
w„w„w„w„w8„w„w„w„w„w„„w„w„ï!„w„Ó»8¿!„!„w„w„w„w„wï!„w„ôw„w„ww„w„wï!„w„wï!„w„w
„w„w!„w„wG¿!„w„ôw„w„wï!„w„†~Ý„w„~Ý„w„w

Ich habe leider keien Ahnung woran es liegt... :(

EDIT Again:
So jetzt geht es! :D
Es lag daran das bei der Variable Clock 4000000 eingestellt war... ich hab mir einfach mal gedacht das steht für den Wert der Taktfrequenz. ICh habe das ganze dann auf 8000000 gestellt und nun geht es mit dem Testprogramm!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am August 13, 2007, 21:40:53
So Sorry für die ganzen Doppelposts aber sonst merkt ihr ja nicht das hier was neues ab geht :P
Also wie geh ich das denn jetzt am besten an?! Ich mein Programmiertechnisch ist das ja nicht so ganz einfach da ja am PORTC sowohl Eingänge der Taster als auch Ausgänge der LED's hängen...

Ich hab mir gedacht das das bestimmt mit so befehlen wie cbi und sbi funktionieren kann nur leider habe ich noch keine genaue vorstellung wie ich anfangen soll...

Bisher habe ich nur die Anfangskonfiguration der einzelnen Pins
Code:
.include "m8def.inc"

sbi DDRC, 0        ; Bit 0 DDRC auf 1 setzen -> Ausgang
sbi DDRC, 1        ; Bit 1 DDRC auf 1 setzen -> Ausgang
sbi DDRC, 2        ; Bit 2 DDRC auf 1 setzen -> Ausgang
sbi DDRC, 3        ; Bit 3 DDRC auf 1 setzen -> Ausgang
sbi DDRC, 4        ; Bit 4 DDRC auf 1 setzen -> Ausgang
sbi DDRC, 5        ; Bit 5 DDRC auf 1 setzen -> Ausgang

sbi DDRD, 2        ; Bit 2 DDRD auf 1 setzen -> Ausgang
sbi DDRD, 3        ; Bit 3 DDRD auf 1 setzen -> Ausgang

cbi DDRB, 0        ; Bit 0 DDRB auf 0 setzen -> Eingang
cbi DDRB, 1        ; Bit 1 DDRB auf 0 setzen -> Eingang
cbi DDRB, 2        ; Bit 2 DDRB auf 0 setzen -> Eingang
cbi DDRB, 3        ; Bit 3 DDRB auf 0 setzen -> Eingang
cbi DDRB, 4        ; Bit 4 DDRB auf 0 setzen -> Eingang
cbi DDRB, 5        ; Bit 5 DDRB auf 0 setzen -> Eingang

cbi DDRD, 6        ; Bit 6 DDRD auf 0 setzen -> Eingang
cbi DDRD, 7        ; Bit 7 DDRD auf 0 setzen -> Eingang


sbi PORTB, 0        ; Bit 0 im IO-Register PORTB auf 1 setzen -> Pull-Up Ein
sbi PORTB, 1        ; Bit 1 im IO-Register PORTB auf 1 setzen -> Pull-Up Ein
sbi PORTB, 2        ; Bit 2 im IO-Register PORTB auf 1 setzen -> Pull-Up Ein
sbi PORTB, 3        ; Bit 3 im IO-Register PORTB auf 1 setzen -> Pull-Up Ein
sbi PORTB, 4        ; Bit 4 im IO-Register PORTB auf 1 setzen -> Pull-Up Ein
sbi PORTB, 5        ; Bit 5 im IO-Register PORTB auf 1 setzen -> Pull-Up Ein

sbi PORTD, 6        ; Bit 5 im IO-Register PORTD auf 1 setzen -> Pull-Up Ein
sbi PORTD, 7        ; Bit 5 im IO-Register PORTD auf 1 setzen -> Pull-Up Ein


ende:    rjmp ende          ; Sprung zur Marke "ende" -> Endlosschleife



vlt. ist das ja schon ein anfang!?


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am August 13, 2007, 22:57:27
Hm, ganz schön arg viel aufwand, Register mit einzelnen Werten zu belegen und dann an den Port auszugeben ist dahingegen etwas einfacher :-)

ldi      R16, 0b00111111
out    DDRC, R16
out    PORTB, R16

ldi      R16, 0b00001100
out    DDRD

ldi      R16, 0b11000000
out    PORTD

Um einen Port als Eingang zu definieren brauchst du das DDR nicht mit nullen zu belegen da es das nach dem Reset sowieso schon ist.

So, was jetzt kommt ist dass du in einer schleife erstmal bei jedem durchlauf die Taster abfragen musst, am besten du ließt PinC ein, dann PinD in ein anderes Register, setzt die bitpositionen 2 und 3 mit swap nach 6 und 7 und fügst die beiden register mit or zusammen. dann hast du erstmal den status aller 8 taster in einem register.

Schauen wir uns Taster1 an. Taster 1 hat die Bitposition 0. Nun müssen wir um dafür bei gedrückter Taster, also ist an der 0ten bitposition eine logische 0, da der taster ja nach masse zieht, eine aktion auszuführen und verhindern dass diese Aktion beim nächsten durchlauf nochmal ausgeführt wird. Dazu müssen wir bei diesem Schleifendurchlauf wissen ob der Taster im letzten durchlauf schon gedrückt war. Ist dem nun so, müssen wir unsere logische 0 an unserer bitposition für taster1 wieder in eine logische 1 verwandeln um zu verhindern dass die entsprechende aktion ausgeführt wird. Assembler bzw der µC selbst stellt befehle bereit mit denen man das für alle 8 bits gleichzeitig machen kann.

Wie sowas im programm aussieht hab ich ja schonmal gepostet, allerdings war da noch ein fehler drin.. das programm war auf taster ausgelegt die auf Vcc ziehen^^ war mein erstes programm und da wusste ich noch nicht so recht dass man die dinger eher auf masse ziehn lässt^^

naja, hf..
ciao Powl


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am August 14, 2007, 07:08:37
Okay warum einfach wenns auch schwer geht :D
Erstmal vielen dank so wie du das gemacht hast ist das natürlich etwas einfacher...
Wnn ich nachher zuhause bin und Zeit habe werde ich mich da mal reinarbeiten und versuchen ob ich das hinbekomme :P
Danke!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am August 14, 2007, 15:23:55
So ich habe das dann mal so versucht wie du sagtest... den Rest habe ich mir von mikrocontroller.net zusammen gewurschtelt... Da ist zwar noch keine Entprellung und sowas drin aber ich hab erstmal versucht das Grundgerüst hinzubekommen...
Hier mein Code:
Code:
.include "m8def.inc"

.def tast_alt    = r3
.def tast_aktuell   = r4
.def temp1      = r18
.def temp2      = r19
.def led_out    = r20


ldi    R16, 0b00111111  ;PORTC -> Ausgang
out    DDRC, R16

ldi    R16, 0b00011111 ;PORTB -> Pull-Up Widerstände ein
out    PORTB, R16

ldi    R16, 0b00001100 ;PORTD -> Ausgang und Eingang
out    DDRD, R16

ldi    R16, 0b11000000 ;PORTD -> Pull-Up Widerstände ein
out    PORTD, R16


ldi    tast_alt, 0b00000000


haupt:

ldi    R16, PIND    ; PIND -> R16
ldi    R17, PINC    ; PINC -> R17
swap   R17 ; aus 01234567 wird 01674523
or   r16, r17 ; 11111100(R16) und 00000011(R17) = 11111111(R16)

mov  tast_aktuell,  r16 ; r16 in tast_aktuell sichern
mov  temp1,  r16    ; r16 in temp1 sichern

eor  tast_aktuell, tast_alt    ; xor von tast_aktuell und tast_alt | Ergebnis in tast_aktuell 
mov  tast_alt, temp1     ; alten tasterzustand sichern

breq haupt                      ; wenn tast_alt und tast_aktuell sich NICHT unterscheiden springe zurück nach haupt

and  temp1, tast_aktuell        ; temp1 hat nun an der stelle eine eins an welcher der Taster gedrückt wurde
                                 
      brne haupt                    ; springe wenn and vergleich nicht gleich zurück nach haupt, sonst springe nicht

in   temp1, led_out        ; den Zustand der LED umdrehen
      com  temp1

????????out  led_out, temp1????????

      jmp  haupt




Ziemlich zerflückt das ganze...hier (http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/taster.asm) das ganze nochmal als asm file

Na ja jetzt hänge ich bei dem teil in dem es um das ausgeben der taster signale an die LED's bzw. relais bzw. ULN2803 geht. Denn diese hängen ja wieder an zwei Ports...

Könnte ich das wieder elegant machen oder muss ich diemsal wirklich Bit für Bit mit befehlen wie sbic oder sbis durchegehen?!
Danke für die vielen guten Tips!


Titel: Re: Taster als Schalter via AVR
Beitrag von: nuss am August 15, 2007, 21:24:05
War schon lange ned mehr hier im Forum aber habe gesehen, dass es um mega 8 geht *toll*
Frage: warum proggt ihr nicht in C?
Ist doch viel einfacher.
Habe hier auch noch nen Programm zum entprellen von Tastern einmal in C und in ASM.
Ich häng die einfach mal hier so an wenn das geht. Das ganze ist kombiniert mit nem Knightriderlauflicht. Viel Spaß!
Habe auch noch andere Programme für den Mega8. zb.: ne LCD display ansteuerung

Anmerkung: die endung .jpg durch .asm bei dem file nummer1.jpg erstzen und durch die endung .c bei knightrider_c.jpg
Hatte keine lust nen file hoster zu suchen


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am August 16, 2007, 15:56:53
So erstmal danke für das weitere Beispiel...

Und dann bruache ich dirngend nochmal eure Hilfe..
erstmal zu meiner letzten Frage nämlich wie ich nun das Register wieder an die LEDS ausgeben soll?!
Und dann habe ich noch ein Problem undzwar leuchten von anfang an bei meiner Schaltung 3 LED's und wenn ich auf den Taster drücke flackern sie nur manchmal... ich habe den Code schon reduziert auf folgendes:
Code:
.include "m8def.inc"

.def alter_taster_status   = r16
.def aktueller_taster_status   = r17
.def temp1 = r18
.def temp2 = r19
.def temp3 = r20
.def temp4 = r21




ldi    r16, 0b00111111  ;PORTC -> Ausgang
out    DDRC, r16

ldi    r16, 0b00011111 ;PORTB -> Pull-Up Widerstände ein
out    PORTB, r16

ldi    r16, 0b00001100 ;PORTD -> Ausgang und Eingang
out    DDRD, r16

ldi    r16, 0b11000000 ;PORTD -> Pull-Up Widerstände ein
out    PORTD, r16



ldi    aktueller_taster_status, PIND    ; PIND -> R16
ldi    temp1, PINB    ; PINC -> R17
swap   temp1 ; aus 01234567 wird 01674523
or     aktueller_taster_status, temp1 ; 11111100(R16) und 00000011(R17) = 11111111(R16)



mov temp3, aktueller_taster_status
mov temp4, aktueller_taster_status



        out PORTC, temp3
out PORTD, temp4



der Code soll eigentlich sowas wie das hier sein:
Code:
.include "m8def.inc"

         ldi r16, 0xFF
         out DDRB, r16     ; Alle Pins am Port B durch Ausgabe von 0xFF ins
                           ; Richtungsregister DDRB als Ausgang konfigurieren
         ldi r16, 0x00
         out DDRD, r16     ; Alle Pins am Port D durch Ausgabe von 0x00 ins
                           ; Richtungsregister DDRD als Eingang konfigurieren
loop:
         in r16, PIND      ; an Port D anliegende Werte (Taster) nach r16 einlesen
         out PORTB, r16    ; Inhalt von r16 an Port B ausgeben
         rjmp loop         ; Sprung zu "loop:" -> Endlosschleife

was ich bei mikrocontroller.net gefunden habe... leider funktioniert das auch nciht und ich kann mir nicht erklären warum...
Trotzdem vielen Dank

EDIT:
So da läuft wohl einiges noch cnith glatt...
Ich habe jetzt rausgefunden das das frische vom PINB eingelesene register so ausseiht:
0b01010110

aber ich verstehe nicht warum?!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am August 16, 2007, 17:42:16
ohne entprellung wirst du bei den leds nichts bewirken
die ausgabe der register an die ausgänge ist doch so ok..
dafür kann ich im oberen beispiel keine schleife finden?? hab ich was verpasst?


@nuss: klar, c wäre cooler.. aber ich für meinen teil beherrsche c nicht, kann aber asm und irgendwie hab ich keine lust, c zu lernen..


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am August 16, 2007, 17:49:25
Ja aber eigentlich dürfte das Register von PINB doch garnicht so aussehen wie es aussieht?! ich hab doch garkeine taste gedrückt und trotzdem sind da einsen in dem Register?!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Ast am August 16, 2007, 17:55:42
Code:
ldi    aktueller_taster_status, PIND    ; PIND -> R16
ldi    temp1, PINB    ; PINC -> R17

"ldi" steht für "Load Immediate".
Damit wird ein konstanter Wert in das Register geladen.
In deinem Fall ist das wahrscheinlich die Speicheradresse von PIND bzw. PINB.
Beschwert sich der Assembler da nicht?

Wenn du einen PORT, PIN oder DDR einlesen willst, musst du "in" benutzen.

Du solltest schon die richtigen Assembler-Befehle benutzen...

P.S.:
Was soll das denn?
Code:
; aus 01234567 wird 01674523
"swap" vertauscht die beiden Nibble im Register.
Aus 0b11110000 wird 0b00001111.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am August 17, 2007, 12:51:40
okay das mit ldi wusste ich nciht weil ich das auf mikrocontroller.net so gelesen habe.. ne un der assembler gab grünes licht :P

Ach und das mit dem swap befehl hatte ich schon gemerkt ich hatte nur keine lust das da ganz obe zu korrigieren... aber danke!

EDIT:
Okay ich muss zugeben auf mikrocontroller.net stand das so auch nicht! Ich weis nicht wie ich darauf gekommen bin..

Ach und ich hab eine Möglichkeit gefunden wie ich das Register wieder zerstückelt an die Ausgangsregister ausgeben kann. undzwar mit einem and und einem or vergleich. Wie ich das jetzt insgesamt genau meine zeige ich später dann gibt es nochmal den gesamten code!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 6, 2007, 22:36:40
Sooo Jungs ich grabe mal meinen Thread wieder aus! :D
Undzwar warbeite ich immer noch an der selben Sache! ICh hatte di Letzten Monate nicht soviel Zeit aber nun will ich mich mal an die Software von meinem schätzchen machen!
Mein aktueller Code sieht so aus:
Code:
.include "m8def.inc"
.def temp1    = r16
.def temp2  = r17
.def tast_neu  = r18
.def tast_alt  = r19


ldi    temp1, 0b00111111  ;PORTC -> Ausgang
out    DDRC, temp1

ldi    temp1, 0b00011111 ;PORTB -> Pull-Up Widerstände ein
out    PORTB, temp1

ldi    temp1, 0b00001100 ;PORTD -> Ausgang und Eingang
out    DDRD, temp1

ldi    temp1, 0b11000000 ;PORTD -> Pull-Up Widerstände ein
out    PORTD, temp1


ldi   tast_alt, 0b00000000


haupt:

in    temp1, PIND    ; PIND -> temp1 (11100000)
in    temp2, PINB    ; PINB -> temp2 (00011111)
or    temp1, temp2 ; 11100000(temp1) und 00011111(temp2) = 11111111(temp1)

mov  tast_neu,  temp1 ; temp1 in tast_aktuell sichern

eor  tast_neu, tast_alt    ; xor von tast_aktuell und tast_alt | Ergebnis in tast_aktuell 
mov  tast_alt, temp1   ; alten tasterzustand sichern

breq haupt                    ; wenn tast_alt und tast_aktuell sich NICHT unterscheiden springe zurück nach haupt

ldi temp1, $FF ; --> Warteschleife
wait1; ;.
ldi temp2, $FF ;.
wait2 ;.
dec temp2 ;.
brne wait2 ;.
dec temp1 ;.
brne wait1 ;<-- Warteschleife

in temp1, PIND ;--> Neu einlesen
in temp2, PINB ;
or temp1, temp2 ;<-- Neu einlesen

and temp1, tast_neu

brne haupt                  ; springe wenn and vergleich nicht gleich zurück nach haupt, sonst springe nicht

;Hier kommt noch die Ausgabe hin;

      jmp  haupt


Nun bin ich mir aber noch bei ein paar sachen unklar:
Einmal weis ich nicht ob das so alles funktioniert wie ich das da aufgeschrieben habe. Vlt. könnte da mal jemand einen flüchtigen Blick drauf werfen und mir sagen ob das grob gesehen so in Ordnung ist...

Und Letztendlich fehlt mir dann noch der Teil in dem dann die LED's bzw. Relais geschaltet werden. Also quasi die komplette Ausgabe!
Ich muss mich da nochmal eindringlich mit beschäftigen oder hat jemand von euch so eine Idee?
Das Problem dabei ist ja das die LED's an unterschiedlichen Ports hängen(siehe Anschluss"diagramm" unten).

Den Software Teil mit der Kommunikation per UART wurde ich dann danach angehen...

Dann nochmal eine ganz andere Sache. Ich habe überlegt anstatt per rs232 das ganze per USB anzuschließen wiel ich das ganze dann intern verkabeln könnte...
Da gibt es doch diese tollen "AdapterChips"(mir fällt gerade kein anderes wort ein) Also ein Chip der PC Seitig über USB eine Com Schnittstelle emuliert.
Ich weis das es sowas gibt. HAb acuh schonmal was gefunden aber das teil kostet 5 Euro. Das scheint mir ein bischen großzügig proportioniert auch im Funktionsumfang. Denn ich brauche ja kein USB 2.0 oder sowas... Na ja egal wäre cool wenn da vlt. einer eine Idee hat?!

So das war es erstmal mit den vielen Fragen! :D
Danke schonmal im vorraus!

Anhang:
Ein und Ausgänge meines µC's:
Code:
PD0-> UART
PD1-> UART
PD2-> Ausgang
PD3-> Ausgang
PD4-> ---
PD5-> Eingang
PD6-> Eingang
PD7-> Eingang

PC0-> Ausgang
PC1-> Ausgang
PC2-> Ausgang
PC3-> Ausgang
PC4-> Ausgang
PC5-> Ausgang
PC6-> Reset
PC7-> ---

PB0-> Eingang
PB1-> Eingang
PB2-> Eingang
PB3-> Eingang-> MOSI
PB4-> Eingang-> MISO
PB5-> ---    -> SCK
PB6-> Takt
PB7-> Takt


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 7, 2007, 16:24:03
Sorry für Doppelpost aber sonst bekommt das ja keiner mit! :P
Ich habe ein problem: UNdzwar wollte ich die Asugabe für jedes Bit einzeln machen. Weil es muss ja bei dem Bit bei dem der Taster gedrückt wurde der Wert am Ausgabe Port umgedreht werden. Das habe ich versucht mit einer Zählschliefe zu lösen. Leider kann man aber das "Zählregister" anscheinend nicht als INdex benutzen. Hat jemand eine Idee wie man das doch machen könnte?

Code:
ldi zaehler, 4 ;Startwert laden
schleife_D:
sbrc temp1, zaehler ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp pruefen_D
rjmp weiter_D

pruefen_D:
sbis PORTD, zaehler ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_D ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_D ; Wenn es 1 ist tu das(Ausschalten)

an_D:
sbi PORTD, zaehler ; Einschalten :P
rjmp weiter_D

aus_D:
cbi PORTD, zaehler ; Ausschalten :P
rjmp weiter_D

weiter_D:
inc zaehler ; Index erhöhen
cpi zaehler, 6 ; vergleich ob index schon gleich 6 wenn ja dann endet die Schleife hier!
brne schleife_D
Helft mir Bitte!

EDIT:
So ich habe noch etwas weitergearbeitet:
Undzwar habe ich meiner Meinung nach nun die UART Sende und Empfangsgeschichte fertig.
Ich poste einmal den gesamten Code und hebe das betreffende dann Farbig hervor.
Blau steht für Sendegeschichte und rot für Empfangsgeschichte:
Zitat:
.include "m8def.inc"
.def temp1      = r16
.def temp2  = r17
.def tast_neu  = r18
.def tast_alt  = r19
.def zaehler  = r20

.equ F_CPU = 8000000        ; Systemtakt in Hz
.equ BAUD  = 9600           ; Baudrate

; Berechnungen
.equ UBRR_VAL   = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden
.equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))      ; Reale Baudrate
.equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)  ; Fehler in Promille

.if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))       ; max. +/-10 Promille Fehler
  .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!"
.endif



ldi    temp1, 0b00111111  ;PORTC -> Ausgang
out    DDRC, temp1

ldi    temp1, 0b00011111 ;PORTB -> Pull-Up Widerstände ein
out    PORTB, temp1

ldi    temp1, 0b00001100 ;PORTD -> Ausgang und Eingang
out    DDRD, temp1

ldi    temp1, 0b11000000 ;PORTD -> Pull-Up Widerstände ein
out    PORTD, temp1


ldi    tast_alt, 0b00000000

sbi UCSRB,TXEN ; Sende"kanal" aktivieren
sbi UCSRB, RXEN ; Empfangs"kanal" aktivieren


haupt:
warten_bis_gesendet:
sbis UCSRA,UDRE ; Prüfen ob alle Daten egsendet wurden
rjmp warten_bis_gesendet ; Wenn noch nicht alle Daten gesendet wurden springe zurück
out UDR, temp1 ; Alle daten wurden gesendet also los sende nochmal


      rjmp  haupt


Ach so und ich hebe nochmal das hervor was ich davor angesprochen habe. Also das grün markierte ist die Ausgabe die leider nicht funktionieren will weil der assembler als zweiten Parameter bei den skip befehlen eine Zahl anstatt ein Register erwartet...
Ich habe shcon gesucht aber leider keinen Weg bzw. befehl gefunden wie man das anders lösen könnte! Habt ihr eine Idee?
Danke für jede Hilfe!


Titel: Re: Taster als Schalter via AVR
Beitrag von: OlafSt am November 8, 2007, 07:19:59
Im Datenblatt zum µC ist eine Befehlsreferenz vorhanden, die jeden Befehl bis aufs Bit erklärt. Die wird bei deinen Skip-Problemen (und allem anderen) äußerst hilfreich sein.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am November 8, 2007, 08:04:04
Mein AVR Assembler ist zwar schon etwas eingerostet, aber seh ich das richtig, dass du die Tastenabfrage doch über Warteschleifen machst? Probier das ruhig aus, ist nicht umsonst eine der klassischen Anfängerübungen, aber bevor du die anderen Sachen angehst stell das lieber auf Interrupts um, ist auf Dauer viel problemloser.

Das gleiche gilt auch für die U(S)ART Schnittstelle, das sind Routinen, die du auch in Zukunft (ich geh mal davon aus, dass das keine einmalige Sache ist) immer wieder brauchen wirst.

Bzgl. USB: Es gibt auch die Möglichkeit, das direkt in Software zu implementieren (Igor-USB (http://www.obdev.at/products/avrusb/index.html]AVR-USB[/url], [url=http://www.cesko.host.sk/IgorPlugUSB/IgorPlug-USB%20(AVR)_eng.htm))


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am November 8, 2007, 08:50:21
Hehe, du versuchst da Hochsprachenelemte in Assemblerschreibweise zu verwenden. So wie ich das sehe versuchst du in dem register zähler als Zeiger auf das zu bearbeitende Portbit zu verwenden. Das funktioniert natürlich nicht so.

Theoretisch muss man sich für jeden ein/ausschalte befehl einen eigenen teil programmieren, so dynamisch sind AVRs leider nicht.

Aber was spricht denn dagegen alle Bits gleichzeitig zu bearbeiten? Habe das auch so gemacht und den Source mal gepostet, kannst dich ja inspirieren lassen ;-) Geht mit ein bisschen überlegung mit den logikoperatoren.

mfg PoWl


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 8, 2007, 15:27:55
Zitat von: Reisi $txt[176] November 8, 2007, 08:04:04
Mein AVR Assembler ist zwar schon etwas eingerostet, aber seh ich das richtig, dass du die Tastenabfrage doch über Warteschleifen machst? Probier das ruhig aus, ist nicht umsonst eine der klassischen Anfängerübungen, aber bevor du die anderen Sachen angehst stell das lieber auf Interrupts um, ist auf Dauer viel problemloser.


Würde es denn so auch funktionieren?
Also ich würde mir das auch angucken mit den Interrupts aber wäre ganz cool erstmal ein resultat zu sehen...

Ich würde es lieber mit nem converter ic machen. Da ich mich noch nichtmal mit der Datenübertragung über rs232 auskenne würde ich das ungerne direkt mit USB machen...
hat einer eine Idee für nen passenden IC?
Zitat von: PoWl $txt[176] November 8, 2007, 08:50:21
Hehe, du versuchst da Hochsprachenelemte in Assemblerschreibweise zu verwenden. So wie ich das sehe versuchst du in dem register zähler als Zeiger auf das zu bearbeitende Portbit zu verwenden. Das funktioniert natürlich nicht so.

Theoretisch muss man sich für jeden ein/ausschalte befehl einen eigenen teil programmieren, so dynamisch sind AVRs leider nicht.

Aber was spricht denn dagegen alle Bits gleichzeitig zu bearbeiten? Habe das auch so gemacht und den Source mal gepostet, kannst dich ja inspirieren lassen ;-) Geht mit ein bisschen überlegung mit den logikoperatoren.

mfg PoWl


OKay das ist natürlich schade das das so nicht geht! :D
Na ja einzeln aufschrieben ist ja auch nciht schlimm hab nur gedacht das wäre so eleganter...

Das problem ist das ich ja ein Ausgaberegister auf zwei Ausgabeports verteilen muss und es darf ja nur das bit am ausgangsport invertiert werden von dem auch der taster gedrückt wurde. Da habe ich irgendwie noch keinen weg gefunden...

Ich schau mir deinen Code gleich mal an. Es ist nur oft schwer sich in den Code von anderen reinzudenken, selbst wenn Kommentare dabei sind...
Aufjedenfall erstmal vielen dank ich hab schon gedacht ich wäre aufgeschmissen!

P.S: Sagt mal kann es sein das die Leute ausm mikrocontroller.net Forum totale Vollidioten sind?(http://www.mikrocontroller.net/topic/83084)


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am November 8, 2007, 16:18:20
Das Ausgaberegister auf 2 Ports verteilen dürfte kein Problem sein. Guck dir dazu die Schiebebefehle an, sowie swap und so zeug. Notfalls kannst du immernoch hinterher die einzelnen Bits in deinem Register abfragen und je nachdem ob das entsprechende Bit gesetzt ist oder nicht mit sbi oder cbi das Portbit schalten.


Titel: Re: Taster als Schalter via AVR
Beitrag von: OlafSt am November 8, 2007, 17:20:09
Oder solche eleganten Sachen wie AND und OR benutzen... ;)


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 8, 2007, 17:21:18
Also wir wollen es mal nicht übertreiben mit AND und OR :D
Ich mach das jetzt ersmal mit der unelegenaten methode und wenn das funktioniert verfeinere ich das. Langsam gehen mir nämlich die zum weiter machen animierenden Glücksmomente aus...


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am November 8, 2007, 17:33:34
Zitat von: Fabeulous $txt[176] November 8, 2007, 15:27:55
Würde es denn so auch funktionieren?
Jein, solange der µC mit der sinnlosen Warteschleife beschäftigt ist, kann natürlich nicht überprüft werden, ob ein Zeichen am UART empfangen wurde. Das kann dann natürlich sehr wohl zu einen Problem werden.

Aber ich würd dir sowieso erst mal empfehlen erst mal nur die Tastenabfrage und Ausgabe zu erledigen, und wenn das funktioniert die Tastenabrage auf Interrupts umstellen. Erst wenn das funktioniert solltest dich mit dem UART beschäftigen.


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am November 8, 2007, 17:46:41
Zitat von: Fabeulous $txt[176] November 8, 2007, 17:21:18
Also wir wollen es mal nicht übertreiben mit AND und OR :D
Ich mach das jetzt ersmal mit der unelegenaten methode und wenn das funktioniert verfeinere ich das. Langsam gehen mir nämlich die zum weiter machen animierenden Glücksmomente aus...


setz dich dran, denkn bissel nach.. je nach taktrate deines kopfes bist du innerhalb von 5 minuten und ner halben stunde fertig.. kein frust und keine langwierigen programmierversuche, und du lernst es gleich richtig^^

lg, PoWl


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 9, 2007, 17:17:53
So ich habe was von dem ich denke das es eigentlich funktionieren müsste:
Leider gehen anstatt eine einzelne LED, alle an(wenn ich den Taster drücke. Egal an welchem eingangspin) und auch nur wenn ich temp1 vor der ausgabe invertiere! Ich verstehe nicht warum temp1 nach dem farbig markiertem anscheinend den wert 0b00000000 hat. Es müsste doch eigentlich an der stelle eine 1 haben an der ein taster gedrückt wurde oder nicht?
Zitat:
.include "m8def.inc"
.def temp1      = r16
.def temp2  = r17
.def tast_neu  = r18
.def tast_alt  = r19
.def temp3  = r20
.def temp4  = r21
.def temp5  = r22
.def temp6  = r23


.equ F_CPU = 8000000        ; Systemtakt in Hz
.equ BAUD  = 9600           ; Baudrate

; Berechnungen
.equ UBRR_VAL   = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden
.equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))      ; Reale Baudrate
.equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)  ; Fehler in Promille

.if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))       ; max. +/-10 Promille Fehler
  .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!"
.endif



ldi    temp1, 0b00111111  ;PORTC -> Ausgang
out    DDRC, temp1

ldi    temp1, 0b00011111 ;PORTB -> Pull-Up Widerstände ein
out    PORTB, temp1

ldi    temp1, 0b00001100 ;PORTD -> Ausgang und Eingang
out    DDRD, temp1

ldi    temp1, 0b11000000 ;PORTD -> Pull-Up Widerstände ein
out    PORTD, temp1


ldi    tast_alt, 0b11111111


haupt:

brne haupt     

....
...
..
.

Irgendwo hierhin muss meiner Meinung nach der Fehler sein?
Kann mir jemand sagen ob ich da was falsch verstanden habe?

Ich glaube ich verwerfe den ganzen quatsch echt und versuche es mit interrupts... Dann hab ich es direkt richtig und so kriege ich das glaueb ich eh nicht hin! :D

EDIT:
kann es sein das ich um das mit interrupts zu machen noch jeden einzelnen taster an int0 oder int1 bzw. pd2 bzw. pd3 anschließen muss? Sonst wird ja kein Interrupt ausgelöst wenn ein Taster gedrückt wird oder?


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am November 10, 2007, 00:37:33
dann vegiss aber die dioden nicht sonst lösen alle taster aus ;-) verstehe den sinn von interrupts hier auch nicht so.

braucht ma doch nich solange man die taster erkennungsroutine oft genug ansteuert. Ja, dein Programm sieht ziemlich verwirrend aus ;-)

mfg PoWl


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am November 10, 2007, 08:09:01
Zitat von: Fabeulous $txt[176] November 9, 2007, 17:17:53
kann es sein das ich um das mit interrupts zu machen noch jeden einzelnen taster an int0 oder int1 bzw. pd2 bzw. pd3 anschließen muss? Sonst wird ja kein Interrupt ausgelöst wenn ein Taster gedrückt wird oder?
Nein, da hast du mich missverstanden. Es geht nicht um die Tasterabfrage selbst, sondern um die Warteschleife. Die löst man normalerweise über einen Timer-Interrupt, damit der µC in der Zeit nicht lahmgelegt wird.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 10, 2007, 13:51:45
Okay dann hab ich das missverstanden. na ja ich weis jetzt nicht was ich tun soll! Ich bin nächste woche aufm Zivi Lehrgang dann werde ich mir mal alles in Papierform mitnehmen und mich damit in eine einsame ecke verziehen... Mal gucken ob ich das dann hinbekomme.

Sonst habe ich auch überlegt ob ich mir C beibringe und es in einer Hochsprache versuche. Irgendwie fühlt man sich da wohler! :D

EDIT:
ldi      temp1, 1<<CS00 | 1<<CS02

Was kann in der oberen zeile das Zeichen"<" bzw "<<" ?
Danke!


Titel: Re: Taster als Schalter via AVR
Beitrag von: OlafSt am November 10, 2007, 22:15:49
"<<" im Atmel-Assembler (und fast alle anderen Assembler, außerdem in C) steht für "Shift Right".

Ergo wird eine 1 (Binär 00000001) nach rechts geshiftet. Wenn du in den Include-Dateien nach "CS00" suchst, wirst du feststellen, das das eine Konstante zwischen 0 und 7 ist... Wenn wir mal eine 3 annehmen, wird also aus dem Zeug:

1 << 3, ergo eine 1 dreimal nach rechts geshiftet: 00000001 -->00001000

das "|" ist im Atmel-Assembler (und in C) das binäre "Oder". Nehmen wir also für CS00 wieder die drei und für CS02 die 4, dann wird aus dem

ldi temp1, 1<<CS00|1<<CS02 folgendes:

ldi temp1, 1<<3 OR 1<<4  -->
ldi temp1, 00001000 or 00010000 -->
ldi temp1, 00011000 (was Hexadezimal 18 entspricht)

Das ganze soll dir erleichtern, einzelne Bits gezielt zu setzen. Es erhöht außerdem die Lesbarkeit des Codes und obendrein massiv die Kompatibilität zu anderen Atmel's  - manchmal kommt es vor, das in neuen µC's die Bits in Registern verschoben werden. Arbeitest du nun mit absoluten Werten wie dem 18h da oben, wird dies auf neueres Atmels evtl nicht funktionieren.
Arbeitest du mit den symbolischen Konstanten, genügt das passende Include UND ein Neuassemblieren un der Code läuft auf dem brandneuen ATmega8192XXP des Jahres 2019 ;)


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 10, 2007, 23:24:33
Okay auf den ersten Blick ist das für mich viel komplizierter aber das muss man wahrschienlich ein paar mal benutzen damit man es drin hat...

Ich hab jetzt übrigens mein Problem gelöst! Also die Tasterabfrage funktioniert jetzt!
Ich hab es jetzt so gelöst das nur auf einen tastendruck reagiert wird und nicht auf einen Flankenwechsel. Nach jedem tastendruck wird dann etwas gewartet. In dieser zeit kann kein tastedruck erkannt werden(Quasi eine "entprellun") Ich weis das das nicht die eleganteste Methode ist aber für meine Zwecke reicht es in jedem Fall...
Ich poste euch morgen mal den Code(bin gerade nicht an meinem Rechner)
Gute Nacht!


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am November 10, 2007, 23:37:09
Taster kann man gut mit parallelgeschalteten 10nF Kerkos entprellen :-)


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 11, 2007, 22:29:41
Yoa das geht auch aber dann müsste ich ja wieder was neues einbauen...

Hier erstmal mein Code! Ich mache jetzt noch eine Version die auf einen Flankenwechsel reagiert...

Code:
.include "m8def.inc"
.def temp1    = r16
.def temp2  = r17
.def tast_neu  = r18
.def tast_alt  = r19
.def temp3  = r20
.def temp4  = r21
.def temp5  = r22
.def temp6  = r23


.equ F_CPU = 8000000        ; Systemtakt in Hz
.equ BAUD  = 9600          ; Baudrate

; Berechnungen
.equ UBRR_VAL  = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden
.equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))      ; Reale Baudrate
.equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)  ; Fehler in Promille

.if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))      ; max. +/-10 Promille Fehler
  .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!"
.endif



ldi    temp1, 0b00111111  ;PORTC -> Ausgang
out    DDRC, temp1

ldi    temp1, 0b00011111 ;PORTB -> Pull-Up Widerstände ein
out    PORTB, temp1

ldi    temp1, 0b00001100 ;PORTD -> Ausgang und Eingang
out    DDRD, temp1

ldi    temp1, 0b11000000 ;PORTD -> Pull-Up Widerstände ein
out    PORTD, temp1


ldi   tast_alt, 0b11111111

warten:

ldi  temp1, $FF            ; ein bisschen warten ...
wait1:
      ldi  temp2, $FF
wait2:
      dec  temp2
      brne wait2
      dec  temp1
      brne wait1


haupt:


sbis PIND, 7 ; Wenn aktuelles Bit=0  springe zur Sprungmarke schleife_1
rjmp pruefen_0
rjmp schleife_1

pruefen_0:
sbis PORTD, 2 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_0 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_0 ; Wenn es 1 ist tu das(Ausschalten)

an_0:
sbi PORTD, 2 ; Einschalten :P
rjmp warten

aus_0:
cbi PORTD, 2 ; Ausschalten :P
rjmp warten


schleife_1:
sbis PIND, 6 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp pruefen_1
rjmp schleife_2

pruefen_1:
sbis PORTD, 3 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_1 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_1 ; Wenn es 1 ist tu das(Ausschalten)

an_1:
sbi PORTD, 3 ; Einschalten :P
rjmp warten

aus_1:
cbi PORTD, 3 ; Ausschalten :P
rjmp warten

schleife_2:
sbis PIND, 5 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp pruefen_2
rjmp schleife_3

pruefen_2:
sbis PORTC, 0 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_2 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_2 ; Wenn es 1 ist tu das(Ausschalten)

an_2:
sbi PORTC, 0 ; Einschalten :P
rjmp warten

aus_2:
cbi PORTC, 0 ; Ausschalten :P
rjmp warten


schleife_3:
sbis PINB, 4 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp pruefen_3
rjmp schleife_4

pruefen_3:
sbis PORTC, 1 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_3 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_3 ; Wenn es 1 ist tu das(Ausschalten)

an_3:
sbi PORTC, 1 ; Einschalten :P
rjmp warten

aus_3:
cbi PORTC, 1 ; Ausschalten :P
rjmp warten


schleife_4:
sbis PINB, 3 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp pruefen_4
rjmp schleife_5

pruefen_4:
sbis PORTC, 2 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_4 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_4 ; Wenn es 1 ist tu das(Ausschalten)

an_4:
sbi PORTC, 2 ; Einschalten :P
rjmp warten

aus_4:
cbi PORTC, 2 ; Ausschalten :P
rjmp warten


schleife_5:
sbis PINB, 2 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp pruefen_5
rjmp schleife_6

pruefen_5:
sbis PORTC, 3 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_5 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_5 ; Wenn es 1 ist tu das(Ausschalten)

an_5:
sbi PORTC, 3 ; Einschalten :P
rjmp warten

aus_5:
cbi PORTC, 3 ; Ausschalten :P
rjmp warten


schleife_6:
sbis PINB, 1 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp pruefen_6
rjmp schleife_7

pruefen_6:
sbis PORTC, 4 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_6 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_6 ; Wenn es 1 ist tu das(Ausschalten)

an_6:
sbi PORTC, 4 ; Einschalten :P
rjmp warten

aus_6:
cbi PORTC, 4 ; Ausschalten :P
rjmp warten


schleife_7:
sbis PINB, 0 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp pruefen_7
rjmp haupt

pruefen_7:
sbis PORTC, 5 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_7 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_7 ; Wenn es 1 ist tu das(Ausschalten)

an_7:
sbi PORTC, 5 ; Einschalten :P
rjmp haupt

aus_7:
cbi PORTC, 5 ; Ausschalten :P




      rjmp  haupt

Noch ne andere Sache. Als ich "damals"(so ums eite 1-6 des Threades) Den Schaltplan entworfen habe kam letztenldich das heir raus!-->
http://fabeulousde.h198298.serverkompetenz.net/Schaltplan3.png
Damals wollte ich die Taster welche an den selben Pins wie der ISP hängen mit einer Diode "sichern". Mir wurde gesagt das man dazu eigentlich einen widerstand nimmt. Nun habe ich das so gemacht aber genau die drei Taster funktionieren an meiner Schaltung nicht! Hat jemand eine Ahnung warum? Wären Dioden vlt. doch besser?
Danke schonmal für die vielen tipps und ratschläge!


Titel: Re: Taster als Schalter via AVR
Beitrag von: OlafSt am November 11, 2007, 22:47:36
Eigentlich werden solche Kettenanweisungen kürzer formuliert, indem man die gegenteilige Abfrage wählt. Anstelle von
Code:

sbis PIND, 7 ; Wenn aktuelles Bit=0  springe zur Sprungmarke schleife_1
rjmp pruefen_0
rjmp schleife_1

pruefen_0:

schreibt man

Code:
sbic PIND, 7 ; Wenn aktuelles Bit=0  springe zur Sprungmarke schleife_1
rjmp schleife_1

pruefen_0:

Spart ne Menge Flashspeicher und Taktzyklen.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 12, 2007, 06:57:21
Okay das stimmt natürlich! Ich war da wahrscheinlich zu sehr an die gute alte If elseif Abfrage gewöhnt :P

Mal ne andere Sache. Die LED die bei mir auf den Pin PD5(T!) reagiert wechselt den Zustand nicht richtig! Stattdessen bliknt sie Drei mal und bleibt dannn bei einem willkürlichem Zustand stehen...
LIegt das an dem T!? Kann ja sein das das irgendwas mit Timern bedeutet. Habe nur leider nix dazu gefunden!

EDIT:
Ach und sobald ich an den Pin einen Taster klemm blinkt die LED durchgehend obwohl ich den Taster garnicht drücke!
Vlt. liegt es am Quarz? Das liegt nämlich direkt neben der Leitung von diesem Pin?


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am November 12, 2007, 08:27:28
Zitat von: Fabeulous $txt[176] November 11, 2007, 22:29:41
Noch ne andere Sache. Als ich "damals"(so ums eite 1-6 des Threades) Den Schaltplan entworfen habe kam letztenldich das heir raus!-->
http://fabeulousde.h198298.serverkompetenz.net/Schaltplan3.png
Damals wollte ich die Taster welche an den selben Pins wie der ISP hängen mit einer Diode "sichern". Mir wurde gesagt das man dazu eigentlich einen widerstand nimmt. Nun habe ich das so gemacht aber genau die drei Taster funktionieren an meiner Schaltung nicht! Hat jemand eine Ahnung warum? Wären Dioden vlt. doch besser?
Danke schonmal für die vielen tipps und ratschläge!
Ich vermute mal stark, dass dein ISP Programmer nach dem Flashen nicht in den Tristate Zustand wechselt, sondern hier feste High oder Low Pegel anlegt. In dem Fall kann eine Tastenbetätigung natürlich nicht erfasst werden. Tritt das auch auf, wenn du den ISP Programmer absteckst?
Zitat von: Fabeulous $txt[176] November 12, 2007, 06:57:21
Mal ne andere Sache. Die LED die bei mir auf den Pin PD5(T!) reagiert wechselt den Zustand nicht richtig! Stattdessen bliknt sie Drei mal und bleibt dannn bei einem willkürlichem Zustand stehen...
LIegt das an dem T!? Kann ja sein das das irgendwas mit Timern bedeutet. Habe nur leider nix dazu gefunden!

EDIT:
Ach und sobald ich an den Pin einen Taster klemm blinkt die LED durchgehend obwohl ich den Taster garnicht drücke!
Vlt. liegt es am Quarz? Das liegt nämlich direkt neben der Leitung von diesem Pin?
T1 ist der Timer-Eingang des Timers 1 (das steht aber alles im Datenblatt), da du aber den Timer nicht initialisiert hast passiert da gar nichts. Es wäre aber von Vorteil den Pull-Up Widerstand von PIND5 zu aktivieren.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 12, 2007, 13:25:25
Oh yoa das fällt mir gerade auch mal auf das der garnicht aktiviert war!
Danke für den Tip!
Dann denke ich mal das es daran liegt! Ich werde das nächste Woche mal ausprobieren...
Danke!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 18, 2007, 13:09:05
So ich habe eure tips befolgt und nun funktioniert es!
Also es lag an dem ISP der immer noch angesteckt war und daran das ich bei einem PIN vergessen habe den Pull Up Widerstand zu aktivieren.

Ich habe jetzt auch noch eine Version mit Flankenerkennung gebastelt.
Also ohne Autorepeat. Ein paar "Treiberleichen" von der noch geplanten Kommunikation per UART sind aber noch drin...

Code:
.include "m8def.inc"
.def temp1      = r16
.def temp2  = r17
.def tast_neu  = r18
.def tast_alt  = r19
.def temp_send  = r20
.def alter_taster_status= r21


.equ F_CPU = 8000000        ; Systemtakt in Hz
.equ BAUD  = 9600           ; Baudrate

; Berechnungen
.equ UBRR_VAL   = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden
.equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))      ; Reale Baudrate
.equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)  ; Fehler in Promille

.if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))       ; max. +/-10 Promille Fehler
  .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!"
.endif



ldi    temp1, 0b00111111  ;PORTC -> Ausgang
out    DDRC, temp1

ldi    temp1, 0b00011111 ;PORTB -> Pull-Up Widerstände ein
out    PORTB, temp1

ldi    temp1, 0b00001100 ;PORTD -> Ausgang und Eingang
out    DDRD, temp1

ldi    temp1, 0b11100000 ;PORTD -> Pull-Up Widerstände ein
out    PORTD, temp1


ldi    tast_alt, 0b11111111

; Baudrate einstellen
        ldi temp1, HIGH(UBRR_VAL)
        out UBRRH, temp1
        ldi temp1, LOW(UBRR_VAL)
        out UBRRL, temp1


; Frame-Format: 8 Bit

        ldi temp1, (1<<URSEL)|(3<<UCSZ0)
        out UCSRC, temp1

        sbi UCSRB,TXEN

warten:

ldi temp_send, 'A'
        out UDR, temp_send
serout:
        sbis UCSRA,UDRE                   ; Warten bis UDR für das nächste
                                          ; Byte bereit ist
        rjmp serout

ldi  temp1, $FF             ; ein bisschen warten ...
wait1:
      ldi  temp2, $FF
wait2:
      dec  temp2
      brne wait2
      dec  temp1
      brne wait1




haupt:

              in   alter_taster_status, PIND             ; PIND -> temp1 (11100000)
            andi alter_taster_status, 0b11100000
            in   temp1, PINB             ; PINB -> temp2 (00011111)
            andi temp1, 0b00011111
              or   alter_taster_status, temp1         ; 11100000(temp1) und 00011111(temp2) = 11111111(temp1)



sbic PIND, 7 ; Wenn aktuelles Bit=0  springe zur Sprungmarke schleife_1
rjmp schleife_1
sbrs alter_taster_status, 7
rjmp schleife_1

pruefen_0:
sbis PORTD, 2 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_0 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_0 ; Wenn es 1 ist tu das(Ausschalten)

an_0:
sbi PORTD, 2 ; Einschalten :P
rjmp warten


aus_0:
cbi PORTD, 2 ; Ausschalten :P
rjmp warten


schleife_1:
sbic PIND, 6 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp schleife_2
sbrs alter_taster_status, 6
rjmp schleife_2

pruefen_1:
sbis PORTD, 3 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_1 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_1 ; Wenn es 1 ist tu das(Ausschalten)

an_1:
sbi PORTD, 3 ; Einschalten :P
rjmp warten

aus_1:
cbi PORTD, 3 ; Ausschalten :P
rjmp warten

schleife_2:
sbic PIND, 5 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp schleife_3
sbrs alter_taster_status, 5
rjmp schleife_3

pruefen_2:
sbis PORTC, 0 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_2 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_2 ; Wenn es 1 ist tu das(Ausschalten)

an_2:
sbi PORTC, 0 ; Einschalten :P
rjmp warten

aus_2:
cbi PORTC, 0 ; Ausschalten :P
rjmp warten


schleife_3:
sbic PINB, 4 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp schleife_4
sbrs alter_taster_status, 4
rjmp schleife_4

pruefen_3:
sbis PORTC, 1 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_3 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_3 ; Wenn es 1 ist tu das(Ausschalten)

an_3:
sbi PORTC, 1 ; Einschalten :P
rjmp warten
aus_3:
cbi PORTC, 1 ; Ausschalten :P
rjmp warten

schleife_4:
sbic PINB, 3 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp schleife_5
sbrs alter_taster_status, 3
rjmp schleife_5

pruefen_4:
sbis PORTC, 2 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_4 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_4 ; Wenn es 1 ist tu das(Ausschalten)

an_4:
sbi PORTC, 2 ; Einschalten :P
rjmp warten

aus_4:
cbi PORTC, 2 ; Ausschalten :P
rjmp warten


schleife_5:
sbic PINB, 2 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp schleife_6
sbrs alter_taster_status, 2
rjmp schleife_6

pruefen_5:
sbis PORTC, 3 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_5 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_5 ; Wenn es 1 ist tu das(Ausschalten)

an_5:
sbi PORTC, 3 ; Einschalten :P
rjmp warten

aus_5:
cbi PORTC, 3 ; Ausschalten :P
rjmp warten


schleife_6:
sbic PINB, 1 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp schleife_7
sbrs alter_taster_status, 1
rjmp schleife_7

pruefen_6:
sbis PORTC, 4 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_6 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_6 ; Wenn es 1 ist tu das(Ausschalten)

an_6:
sbi PORTC, 4 ; Einschalten :P
rjmp warten

aus_6:
cbi PORTC, 4 ; Ausschalten :P
rjmp warten


schleife_7:
sbic PINB, 0 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp haupt
sbrs alter_taster_status, 0
rjmp haupt

pruefen_7:
sbis PORTC, 5 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_7 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_7 ; Wenn es 1 ist tu das(Ausschalten)

an_7:
sbi PORTC, 5 ; Einschalten :P
rjmp haupt

aus_7:
cbi PORTC, 5 ; Ausschalten :P





      rjmp  haupt


EDIT:
Die kommentare im Code bitte ignorieren. Teilweise stimmen diese nicht bzw. ich hatte noch keine Zeit diese zu korrigieren!

EDIT SE:
So ich versuche gerade die Komuniktaion über UART. Kann es sein das dank eines rs232 Verlängerungskabels die Kommuniktaion nicht funktioniert?
Sowohl meine Version als auch das Testprogramm von Mikroknotroller.net sind nciht in der Lage irgendwas an den PC zu schicken...
Hat jemand noch ideen woran das liegen könnte?


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am November 18, 2007, 18:42:12
hm. naja. ich könnte mir vorstellen dass das am kreuzen der adern (rxd + txd glaub ich??) liegt.. kann ja sein dass dus auf der platine gekreuzt hast, und das kabel das auch nochmal kreuzt. oder du hast es nicht gekreuzt und das kabel ist auch nicht gekreuzt. klänge jetzt so für mich plausibel


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am November 18, 2007, 19:19:55
hastn schaltplan?


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 18, 2007, 20:05:31
Schaltplan: http://fabeulousde.h198298.serverkompetenz.net/Schaltplan3.png

Und das ganze lief ja schonmal. Den MAX232 habe ich auch schon ausgetauscht.
Der µC ist per Flachbandkabel mit dem Rechner verbunden bzw. dazwischen hängt ja noch das Verlängerungskabel.
Ich verstehe einfach nciht warum es nicht klappt. Es lief ja schonmal und nun empfängt er garnichts mehr...


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am November 18, 2007, 20:10:26
erstmal gucken ob baudrate usw alle richtig eingestellt sind wobei da bei kleinen fehlern trotzdem irgendein kaudawelch ankommen müsste. dann die leitungen checken.  Spannungen am max prüfen und auf den com-leitungen. wenn bei mir nix geht nehm ich als n 2. AVR und reduzier das programm auf die relevanten programmteile und teste es damit.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 18, 2007, 22:12:46
Ich habe exakt diesen Code zum testen Benutzt:
Code:
.include "m8def.inc"

.def temp = r16

.equ F_CPU = 8000000        ; Systemtakt in Hz
.equ BAUD  = 9600          ; Baudrate

; Berechnungen
.equ UBRR_VAL  = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden
.equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))      ; Reale Baudrate
.equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)  ; Fehler in Promille

.if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))      ; max. +/-10 Promille Fehler
  .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!"
.endif

        ; Stackpointer initialisieren
        ldi temp, LOW(RAMEND)
        out SPL, temp
        ldi temp, HIGH(RAMEND)
        out SPH, temp

        ; Baudrate einstellen
        ldi temp, HIGH(UBRR_VAL)
        out UBRRH, temp
        ldi temp, LOW(UBRR_VAL)
        out UBRRL, temp

        ; Frame-Format: 8 Bit
        ldi temp, (1<<URSEL)|(3<<UCSZ0)
        out UCSRC, temp

        sbi UCSRB,TXEN                    ; TX aktivieren

loop:  ldi temp, 'T'
        rcall serout                      ; Unterprogramm aufrufen
        ldi temp, 'e'
        rcall serout                      ; Unterprogramm aufrufen
        ldi temp, 's'
        rcall serout                      ; ...
        ldi temp, 't'
        rcall serout
        ldi temp, '!'
        rcall serout
        ldi temp, 10
        rcall serout
        ldi temp, 13
        rcall serout
        rjmp loop

serout:
        sbis UCSRA,UDRE                  ; Warten bis UDR für das nächste
                                          ; Byte bereit ist
        rjmp serout
        out UDR, temp
        ret                              ; zurück zum Hauptprogramm

Leider kam nichts an!
muss ich den Rechner jedes mal neu starten wenn ich am com port was neues anschließe?
ich habe nämlich nur einen und wechsel immer zwischen ISP und UART...
Vlt. liegt das daran ich meine rs232 unterstützt kein plug and play oder? :D


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am November 18, 2007, 22:34:50
was ist denn ISP? Nein ein Comport interessiert eigneltich nicht ob an ihm was angeschlossen ist oder nicht. Afaik prüft entsprechende Hard- und Software über eigene Steuersignale nach ob das richtige Gerät angeschlossen ist. Bei deinem Terminal ist das nicht der fall. Welches Terminalprogramm benutzt du denn?

mfg PoWl


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am November 19, 2007, 11:22:33
Die häufigste Fehlerursache beim UART hat immer was mit dem Takt zu tun. Was für eine Taktquelle hast du denn momentan?


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 19, 2007, 15:08:55
Mein ISP wird auch über rs232 augesteuert und ich muss halt immer zwischen dem ISP und dem MIkrocontrolelr wechseln...

Ich benutze als Taktquelle ein 8 Mhz Quarz.
Als Terminal Programm habe ich Hyperterminal.


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am November 19, 2007, 15:13:54
ach ISP.. ja jetzt hab ichs gerafft..
also mal abgesehen von der Problematik, probier doch mal HTerm, finde das isn super programm!

lg PoWl


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 22, 2007, 15:51:32
Geil. Erstmal danke für das programm. ich hab mir schon seit längerem gedacht das es doch auch was moderneres als Hyperterminal geben muss... :D
Vor allendingen kann man damit auch senden oder? Also zumindest habe ich meiner minung nach direkt verstanden wie :P

Ach damit euch nicht langweilig wird hab ich mal ein paar Bilder gemacht:

(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/aufbau9.JPG)
Mein kleiner Arbeitsplatz :D

(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/aufbau10.JPG)
Die Hauptplatine

(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/aufbau11.JPG)
Das ist die Platine an die die Taster angeschlossen sind welche dann per Flachbandkabel mit dem µC verbunden sind - Was man eigentlich auch sehen kann :D

Ich mache euch jetzt auch nochmal ein kleines Bilderbuchbild um das mit dem ISp nochmal zu erläutern...

EDIT:
Da fehlt natürlich noch die Relaisplatine. Aber ich will euch ja nicht schon alles zeigen.. außerdem hab ich die Kamera gerade wieder eingepackt :D

Hier mein kleines Bildchen ich hoffe ihr wisst nun was ich meinte. Sorry für die Schelchte Pain bearbeitung...

(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/aufbau12.JPG)


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am November 22, 2007, 15:59:10
Krasse Schaltung :-D

Bleiben die kleinen Tasterchen bei dir im Steckboard? Meine Springen immer raus, hab dazu die beinchen um 90° gedreht (gebogen)


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 22, 2007, 16:01:57
Danke danke :D
Ja mittlerweile schon. Also die Beinchen waren ja von beginn an ein bischen gekrümmt. Ich vermute damit sie sich in die eigentliche Platine einhaken. Ich hab die Beine dann einfach gerade gemacht und nun blieben sie Stecken. Aber auch nur wenn man sie sanft dazu zwingt...


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 22, 2007, 16:09:05
So nochmal danke für HTERm. Damit empfängt mein PC nämlich was.
Wie darf man denn das Prgramm verstehen?

Ich habe das folgende Bild folgendermaßen interpretiert:
(http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/bild1.JPG)
Diese 12 Fächer(Welche so ein bischen aussehen wie eine Tabelle) zeigen die letzten 12 empfangenen bytes an richtig?

Pro byte sind die werte in Ascci, Hex, Dec, und Bin angegeben(deswegen auch die verschiedenfarbigen Zeilen) richtig?


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am November 22, 2007, 16:21:56
richtig Ich nehme an du sendest ASCII an deinen PC, dann mach alle häkchen bis auf das bei Ascii weg dann hast du nicht mehr die farbigen Balken. Dann machst noch bei new line at [CR] dann wird immer n zeilenumbruch gemacht wenn du ascii 13 an den PC schickst. Dann noch das häkchen bei show newline chars wegmachen.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 22, 2007, 22:04:17
Soooo... um mal zu meinem UART Problem zurück zu kommen... Dank HTerm weis ich nun das mein µC zwar sendet aber immer nur zwei Werte. Entweder den Wert 0 oder 128 :D
Die Folge ist relativ willkürlich... bimmelt bei irgendwem da ein total offensichtlicher fehler?

EDIT:
Problem gelöst. bzw. ein neuer µC löste das Problem :D

EDIT2:
Also entweder schrotte ich die µC's andauernd aus einem unerklärlichem Grund oder es liegt nicht am µC weil der neue welche rgerade noch funktioniert hat funktioniert nun auch nicht mehr. Er sendet nur noch den Wert 10000000
Er sendet zwar jedes mal dann wenn er soll aber nur diesen Wert. auch wenn ich das Register mit einem eindeutigen Wert belege!

EDIT3: Verdammt ich kann dieses dumme € Zeichen nicht mehr sehen! :D dafür funktioniert der Empfang schonmal provisorisch...


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am November 23, 2007, 13:04:19
Zitat von: Fabeulous $txt[176] November 22, 2007, 22:04:17
... bimmelt bei irgendwem da ein total offensichtlicher fehler?

Ja, falsche Taktquelle! Der interne Oszillator ist für UART viel zu ungenau.


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am November 23, 2007, 13:16:00
sicher dass mit den fusebits alles in ordnung is?


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 23, 2007, 17:06:37
Hey ihr seit gut! :D Ne ich hab natürlich nach dem Wechsel des µC's vergessen die FuseBits zu setzen...
Danke!

EDIT:

So ich habe wieder meine Probleme mit den Fuse Bits.
Ich habe ein 8 Mhz Quarz. Ist ja ein External Crystal richtig?
Also müsste CKSEl auf 1111 aber ich weis nicht mehr was dieses Sut bedeutet und welchen Wert es haben muss? Wäre nett wenn ihr mir das nochmal erklären könntet... :-[

EDIT2:
So ich habe mich etzt für CKSEL 1111 und SUT(hab gerade gelernt das bedeutet Start Up Time) 00
Also der µC läuft
aber nun blinken alle LED's willkürlich vor sich hin und ich weis mal wieder nicht warum sie das tun...

EDIT3:
Also ich bin schonmal soweit das ich weis das es am Quelltext liegen muss...

EDIT4:
Also heute reize ich die Editier funktion aus...
War wohl die richtige Einstellung. Wobei der Empfang wohl irgendwie nich beinträchtigt wird.
Ich habe jetzt folgendes Programm als Testprogramm genommen:
Code:
.include "m8def.inc"

.def temp = r16

.equ F_CPU = 8000000        ; Systemtakt in Hz
.equ BAUD  = 9600          ; Baudrate

; Berechnungen
.equ UBRR_VAL  = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden
.equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))      ; Reale Baudrate
.equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)  ; Fehler in Promille

.if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))      ; max. +/-10 Promille Fehler
  .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!"
.endif

        ; Stackpointer initialisieren
        ldi temp, LOW(RAMEND)
        out SPL, temp
        ldi temp, HIGH(RAMEND)
        out SPH, temp

        ; Baudrate einstellen
        ldi temp, HIGH(UBRR_VAL)
        out UBRRH, temp
        ldi temp, LOW(UBRR_VAL)
        out UBRRL, temp

        ; Frame-Format: 8 Bit
        ldi temp, (1<<URSEL)|(3<<UCSZ0)
        out UCSRC, temp

        sbi UCSRB,TXEN                    ; TX aktivieren

loop:  ldi temp, 'T'
        rcall serout                      ; Unterprogramm aufrufen
        ldi temp, 'e'
        rcall serout                      ; Unterprogramm aufrufen
        ldi temp, 's'
        rcall serout                      ; ...
        ldi temp, 't'
        rcall serout
        ldi temp, '!'
        rcall serout
        ldi temp, 10
        rcall serout
        ldi temp, 13
        rcall serout
        rjmp loop

serout:
        sbis UCSRA,UDRE                  ; Warten bis UDR für das nächste
                                          ; Byte bereit ist
        rjmp serout
        out UDR, temp
        ret                              ; zurück zum Hauptprogramm

Das ist das Testprogramm von Microcontroller.net welches einfach das Werto "Test" in einer Endlosschliefe an den PC sendet...

UNd in HTerm bekomme ich das als Ergebnis
Code:
<\0>.W’¨ˆUÍÑ…)5Q•ÍQ•Í…)5Q•ÍÑ…)5Q•ÍÑ…)5Q•ÍÑ…)5Q•ÍÑ…)5Q•åTest!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
TTest!<\n><\r>
Test!<\n><\r>
TTest!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test¡<\n>Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
TTest!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
TesTest!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n>Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n>Test!<\n><\r>
Tµ.UÖ<23>W’¨ˆUÍÑ…)5Q•ÍÑ…)5Q•ÍÑ…)5Q•ÍÑ…) ... 5Q•ÍÑ…)5Q•ÍÑ…)5Q•ÍÑ…)5Q•ÍÑ…)5QeTest!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n><\r>
Test!<\n>

Kann sich jemand von euch erklären warum zwischenzeitlich so zerhackstückelte Wörter dabei sind?

EDIT5:
So nun habe ich mein altes Programm wieder laufen. Aber die LED's gehen willkürlich an und aus. Wenn ich jedoch auf interne Taktquelle stelle(also Standardeinstellung) läuft der Code problemlos)
Außerdem wird per UART die ganze Zeit ein byte mit dem Wert 255 gesendet!

EDIT6:
So nochmal sorry das das ganze sich hier so ausbnreitet. Aber ich will euch ja nur auf dem neusten Stand halten... :-[
Also das mit den LED's liegt an meinen schleifen. Also die Schleifen die pürfen ob eine Taste geprüft wurde und welche dann den Zustand der betreffenden LED umdrehen.

Ich poste euch mal meinen aktuellen Code. (Bitte die Dateiendung durch .asm ersetzen)
Die "Schleife1" bis "Schleife7" sind das Problem aber ich weis nicht warum weil den ist es doch eigentlich egal mit welchem Takt die laufen oder nicht?


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 24, 2007, 18:30:16
Also ich habe heute nochmal geschaut.
Selbst wenn ich den Code drastisch dezimiere bliebt das Problem.
Ich hab nun den folgenden Code ausprobiert:
Code:
.include "m8def.inc"
.def temp1      = r16
.def temp2  = r17
.def tast_neu  = r18
.def tast_alt  = r19
.def temp_send  = r20
.def alter_taster_status= r21



ldi    temp1, 0b00111111  ;PORTC -> Ausgang
out    DDRC, temp1

ldi    temp1, 0b00011111 ;PORTB -> Pull-Up Widerstände ein
out    PORTB, temp1

ldi    temp1, 0b00001100 ;PORTD -> Ausgang und Eingang
out    DDRD, temp1

ldi    temp1, 0b11100000 ;PORTD -> Pull-Up Widerstände ein
out    PORTD, temp1





haupt:



sbic PIND, 7 ; Wenn aktuelles Bit=0  springe zur Sprungmarke schleife_1
rjmp haupt


pruefen_0:
sbis PORTD, 2 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_0 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_0 ; Wenn es 1 ist tu das(Ausschalten)

an_0:
sbi PORTD, 2 ; Einschalten :P
rjmp haupt


aus_0:
cbi PORTD, 2 ; Ausschalten :P

      rjmp  haupt


Dieser Code soll halt auf ein "LOW" an PinD 7 warten. Wenn dieses "da ist" soll halt der Zustand an PORTD 2 invertiert werden(LED aus oder an(je nach dem wie der vorherige Zustand war)). Aber stattdessen geht die LED willkürlich an und aus. Wenn ich allerdings wieder die Standard taktquelle einstelle dann funktioniert der Code problemlos.
Ich weis echt nicht woran das liegen kann weil ich ja garkeine Stellen im Code habe welche vom Takt abhängig sind. Und wenn ich die falsche Taktquelle hätte dürfte der µC doch garnicht mehr programmierbar sein oder?
Bitte helft mir. Ich weis echt nicht woran das noch liegen kann! Ist eventuell der µC kaputt?
Danke schonmal!

EDIT:
Kann es sein das ich auch noch CKOPT=1 setzen muss?


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am November 25, 2007, 01:05:49
wir müssten uns jetzt intensiver mit dem problemchen beschäftigen, ich persönlich hab dazu keine zeit. Wenn du mit µCs arbeiten willst musst du damit rechnen dass es öfter mal passiert dass da irgendwelche kuriosen fehler auftreten die man erstmal aufspüren muss. Am besten ist immer das programm auf das nötigste reduzieren, das mit diesem fehler zu tun hat und gucken ob er dann immernoch auftritt. Das hast du ja gemacht. Hab mir den code nicht angeschaut.

Ich empfehl dir dass du im Datenblatt mal guckst was es mit CKOPT, SUT und CKSEL bits auf sich hat. Das könnten wir dir zwar auch erklären aber du solltest lernen selbst mit dem Datenblatt zurecht zu kommen. :-)

mfg PoWl


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 26, 2007, 23:25:23
So ich wollte mich mal kurz melden. Dank Google Datenblatt und Co bin ich nun zu dem Schluss gekommen das CKOPT aktiviert bzw. gesetzt werden muss. Wenn ich das richtig verstanden hatte und mein Englisch ausreicht dann aktiviert das wohl eine Art verstärker welchen man für ein Quarz benötigt. Stimmt das?

Ich habe mich natürlich direkt ans Programmieren gesetzt bzw. saß bis gerade noch dran.
Nun funktioniert die Ausgabe des aktuellen LED Statuses an den PC. Also der PC bekommt ca. 2 mal in der Sekunde gesagt welche LED's an sind und welche aus sind.

Und das schalten der LED's über den PC funktioniert auch.

Leider hat der erhöhte Takt meine etwas provisorische und unasgereifte Tasterentprellung zerhauen. Ich werde mir da nun was vernünftiges überlegen. habe mich gerade durch Timer und deren Interrupts gekampft und ich hab da schon ein paar Ideen. Aber nun werde ich erstmal ins Bett gehen. Denn in 5 Stunden und 40 minutenb muss ich wieder aufstehen! In diesem Sinne gute Nacht! :P

EDIT:
So hier mal der von mir gestern gebastelte Code.
Wie man sieht habe ich das ganze Nun mit Interrupts gelöst. Durch einen Timer Overflow wird ca. 2 mal in der Sekunde der aktuelle Status der LED's an den PC übertragen.

Das Empfangen funktioniert auch mit einem Interrupt. Ich denke hier ist (euch sowieso) klar wie das geht! :D
Code:
.include "m8def.inc"
.def temp1      = r16
.def temp2  = r17
.def temp_send  = r18
.def temp_empfangen = r19
.def alter_taster_status= r20
.def timer0_zaehler = r21


.equ F_CPU = 8000000        ; Systemtakt in Hz
.equ BAUD  = 9600           ; Baudrate

; Berechnungen
.equ UBRR_VAL   = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden
.equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))      ; Reale Baudrate
.equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)  ; Fehler in Promille

.if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))       ; max. +/-10 Promille Fehler
  .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!"
.endif

.org 0x0000
        rjmp    main                  ; Reset Handler

.org OVF0addr
        rjmp    timer0_overflow       ; Timer Overflow Handler

.org URXCaddr                             ; Interruptvektor für UART-Empfang
        rjmp int_rxc



main:
ldi    temp1, 0b00111111  ;PORTC -> Ausgang
out    DDRC, temp1
ldi    temp1, 0b00011111 ;PORTB -> Pull-Up Widerstände ein
out    PORTB, temp1
ldi    temp1, 0b00001100 ;PORTD -> Ausgang und Eingang
out    DDRD, temp1
ldi    temp1, 0b11100000 ;PORTD -> Pull-Up Widerstände ein
out    PORTD, temp1
;Timer Einstelungen -----------------------------------------------------
ldi     temp1, 0b00000101      ; CS00 setzen: Teiler 1024
        out     TCCR0, temp1
        ldi     temp1, 0b00000001      ; TOIE0: Interrupt bei Timer Overflow
        out     TIMSK, temp1

ldi timer0_zaehler, 0
;Timer Einstelungen -----------------------------------------------------
       
ldi     temp1, LOW(RAMEND)     ; Stackpointer initialisieren
        out     SPL, temp1
        ldi     temp1, HIGH(RAMEND)
        out     SPH, temp1

;UART Einstelungen -----------------------------------------------------
; Baudrate einstellen
        ldi temp1, HIGH(UBRR_VAL)
        out UBRRH, temp1
        ldi temp1, LOW(UBRR_VAL)
        out UBRRL, temp1

; Frame-Format: 8 Bit
        ldi temp1, (1<<URSEL)|(3<<UCSZ0)
        out UCSRC, temp1


        sbi UCSRB, RXCIE                  ; Interrupt bei Empfang
        sbi UCSRB,TXEN   ; TX (Senden) aktivieren
sbi UCSRB, RXEN                   ; RX (Empfang) aktivieren
;UART Einstelungen -----------------------------------------------------

sei
warten:



ldi  temp1, $FF             ; ein bisschen warten ...
wait1:
      ldi  temp2, $FF
wait2:

      dec  temp2
      brne wait2
      dec  temp1
      brne wait1



haupt:






      rjmp  haupt

;Senden ----------------------------------------------------

timer0_overflow:
cpi timer0_zaehler, 15 ; 2 Mal pro (ca. 1) Sekunde wird der aktuelle Status an den PC gesendet

brne timer0_weiter

ldi  temp_send, 0
        in   temp_send, PIND            ; PINB -> temp2 (00011111)
swap temp_send
        andi temp_send, 0b11000000

sbic PORTC, 0
ori temp_send, 0b00100000
sbic PORTC, 1
ori temp_send, 0b00010000
sbic PORTC, 2
ori temp_send, 0b00001000
sbic PORTC, 3
ori temp_send, 0b00000100
sbic PORTC, 4
ori temp_send, 0b00000010
sbic PORTC, 5
ori temp_send, 0b00000001
                     ; Timer 0 Overflow Handler
serout:
        sbis UCSRA,UDRE                   ; Warten bis UDR für das nächste
                                          ; Byte bereit ist
        rjmp serout
        out UDR, temp_send
ldi timer0_zaehler, 0

rjmp timer0_weiter1

timer0_weiter:
inc timer0_zaehler
timer0_weiter1:

        reti

;Senden ----------------------------------------------------



;Empfangen -------------------------------------------------

int_rxc:
        in temp_empfangen, UDR ;Einlesen des empfangenen bytes in temp_empfangen

sbrs temp_empfangen, 6 ; Wenn aktuelles bit 7 = 1 übersrpinge den nächsten befehl
rjmp schleife_UART_1

sbis PORTD, 2 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_UART_0 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_UART_0 ; Wenn es 1 ist tu das(Ausschalten)

an_UART_0:
sbi PORTD, 2 ; Einschalten :P
rjmp schleife_UART_1


aus_UART_0:
cbi PORTD, 2 ; Ausschalten :P


schleife_UART_1:
sbrs temp_empfangen, 7 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp schleife_UART_2

sbis PORTD, 3 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_UART_1 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_UART_1 ; Wenn es 1 ist tu das(Ausschalten)

an_UART_1:
sbi PORTD, 3 ; Einschalten :P
rjmp schleife_UART_2

aus_UART_1:
cbi PORTD, 3 ; Ausschalten :P

schleife_UART_2:
sbrs temp_empfangen, 5 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp schleife_UART_3

sbis PORTC, 0 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_UART_2 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_UART_2 ; Wenn es 1 ist tu das(Ausschalten)

an_UART_2:
sbi PORTC, 0 ; Einschalten :P
rjmp schleife_UART_3

aus_UART_2:
cbi PORTC, 0 ; Ausschalten :P

schleife_UART_3:
sbrs temp_empfangen, 4 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp schleife_UART_4

sbis PORTC, 1 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_UART_3 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_UART_3 ; Wenn es 1 ist tu das(Ausschalten)

an_UART_3:
sbi PORTC, 1 ; Einschalten :P
rjmp schleife_UART_4
aus_UART_3:
cbi PORTC, 1 ; Ausschalten :P

schleife_UART_4:
sbrs temp_empfangen, 3 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp schleife_UART_5

sbis PORTC, 2 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_UART_4 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_UART_4 ; Wenn es 1 ist tu das(Ausschalten)

an_UART_4:
sbi PORTC, 2 ; Einschalten :P
rjmp schleife_UART_5

aus_UART_4:
cbi PORTC, 2 ; Ausschalten :P

schleife_UART_5:
sbrs temp_empfangen, 2 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp schleife_UART_6

sbis PORTC, 3 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_UART_5 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_UART_5 ; Wenn es 1 ist tu das(Ausschalten)

an_UART_5:
sbi PORTC, 3 ; Einschalten :P
rjmp schleife_UART_6

aus_UART_5:
cbi PORTC, 3 ; Ausschalten :P

schleife_UART_6:
sbrs temp_empfangen, 1 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp schleife_UART_7

sbis PORTC, 4 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_UART_6 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_UART_6 ; Wenn es 1 ist tu das(Ausschalten)

an_UART_6:
sbi PORTC, 4 ; Einschalten :P
rjmp schleife_UART_7

aus_UART_6:
cbi PORTC, 4 ; Ausschalten :P


schleife_UART_7:
sbrs temp_empfangen, 0 ; Wenn aktuelles Bit=0  springe zur Sprungmarke weiter_D
rjmp ende

sbis PORTC, 5 ; Prüfe ob das aktuelle(index=zaehler) Bit am PORTD 1 ist
rjmp an_UART_7 ; Wenn es 0 ist tu das(Einschalten)
rjmp aus_UART_7 ; Wenn es 1 ist tu das(Ausschalten)

an_UART_7:
sbi PORTC, 5 ; Einschalten :P
rjmp ende

aus_UART_7:
cbi PORTC, 5 ; Ausschalten :P




ende:
        reti                              ; Interrupt beenden

;Empfangen -------------------------------------------------

An den teilen aus "haupt" und "warten" arbeite ich nun...


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 27, 2007, 23:11:47
So ich hab ein problem(mal wieder) :D
Google war auch nciht sehr aussagekräftig bzw. unverständlich.
Ich habe hier sonne Interrupr Vektortabelle:

Code:
.org 0x0000
        rjmp    main                  ; Reset Handler

.org OC1Aaddr
        rjmp timer1_compare      ; Timer Compare Handler

.org OVF0addr
        rjmp    timer0_overflow      ; Timer Overflow Handler

.org URXCaddr                          ; Interruptvektor für UART-Empfang
        rjmp int_rxc

Wenn ich das so schreibe klappt das assemblieren. Jedoch wird der Overflow INterrupt vom Timer0 ignoriert. Wenn ich das ganze so schreibe:

Code:
.org 0x0000
        rjmp    main                  ; Reset Handler

.org OVF0addr
        rjmp    timer0_overflow      ; Timer Overflow Handler

.org URXCaddr                          ; Interruptvektor für UART-Empfang
        rjmp int_rxc

.org OC1Aaddr
        rjmp timer1_compare      ; Timer Compare Handler

Klappt das assemblieren garnicht. Ich hab zwar eine erklärung dafür gefunden. Jedoch war die recht bescheiden und mir wurde auch keien Lösung ersichtlich... Kann man keine zwei Timer gleichzeitig laufen lassen?

P.S.: Die Tasterentprellung ist auch fertig. Ich bin also bis auf diese Sache mit dem µC Quelltext durch...



Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am November 28, 2007, 06:55:16
springst du danach auch schön ans ende der interrupt vektoren? wenn du die adressen durcheinander belegst und am ende eine, die am anfang, vor nachfolgenden steht, und dein programmcode beginnt, dann würde dieser ja die anderen vektoren überschreiben.

//Edit: was hab ich da bitte geschrieben, das kappiert ja kein Schwein :-D, gemeint ist dass wenn der programmcode schon am anfang des  interruptvektorbereich anfängt und man dann einen späteren interruptvektor belegen möchte, es hier einen konflikt gibt, da dieser dann doppelt belegt/überschrieben würde.

ist der ovf0 interrupt überhaupt aktiviert?

ausserdem wärs nett wenn du uns sagst was für ne fehlermeldung der ausspuckt. :-)


Titel: Re: Taster als Schalter via AVR
Beitrag von: OlafSt am November 28, 2007, 06:58:45
Außerdem zerstört irgendwas an deinen Posts oder deiner Signatur nachhaltig das Layout hier... Wirf doch bitte mal einen kritischen Blick darauf


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 28, 2007, 16:38:49
Erstmal Sorry wenn meine größeren Quelltextpostings hier doof aussehen. ICh versuche das in Zukunft zu vermeiden.

Also das mit dem Fehler hat sich erledigt. Ich habe aber immernoch das Problem das ich nicht Timer0 und Timer1 gleichzeitig benutzen kann.
Timer0 ist bei mir für das Senden des aktuellen Statuses zuständig. Bei jedem Overflow von Timer0 wird das register "timer0_zaehler" um eins erhöht. Wenn das register dann den Wert 15 erreicht hat wird der Status der LED's ermittelt und per UART an den PC übertragen. Das register "timer0_zaehler" wird wieder gleich null gesetzt und alles beginnt von vorne. Dies hat bei einem Takt von 8 Mhz die Folge das etwa zwei mal in der Sekunde der Status an den PC gesendet wird.
Das funktioniert auch.

Nun habe ich ja mit der Tasterentprellung angefangen bzw. auch fertigggestellt.
Dazu habe ich statt der primitiven Warteschleife vorher. Nach einem Tastendruck den Timer1 im CTC Modus gestartet. Bei dem Wert 39999 wird der CTC Interrupt ausgelöst. Bei jedem CTC Interrupt wird das register "timer1_zaehler" um eins erhöht.
Gleichzeitig befindet sich das Hauptprogramm in einer Zählschleife. Diese wird erst verlassen wenn das register "timer1_zaehler" den Wert 25 hat. Dies bedeutet das der µC nach jedem Tastendruck für ca. 1/8 Sekunde nicht auf Tastendrücke reagiert.
Erst nachdem diese Schleife verlassen wurde ist der µC wieder in der Lage auf Tastendrücke zu reagieren.

Nun zu meinem Problem. Vlt. hängt es auch mit dem vorrangegangenen Zusammen.
Wenn ich den CTC Modus beim Timer0 aktiviere. Dann reagiert der Timer0 nicht mehr auf seinen Overflow Interrupt. ICh weis aber nicht Wieso?!

Im Anhang ist nochmal der .asm Code als .gif also einfach die Dateiendung .gif gegen .asm tauschen!
Ach und danke für den Tip mit der Vektortabelle! Das hätte ich nicht rausbekommen :D

EDIT:
Okay ich hab den Fehler gefunden. Es funktioniert.
Undzwar folgendes:
Meine "Timerdefintion":
Code:
;Timer0 Einstelungen -----------------------------------------------------
ldi    temp1, 0b00000101      ; CS00 setzen: Teiler 1024
        out    TCCR0, temp1
        ldi    temp1, 0b00000001      ; TOIE0: Interrupt bei Timer Overflow
        out    TIMSK, temp1

ldi timer0_zaehler, 0
;Timer0 Einstelungen -----------------------------------------------------
;Timer1 Einstelungen -----------------------------------------------------

ldi    temp1, high( 40000 - 1 )
          out    OCR1AH, temp1
          ldi    temp1, low( 40000 - 1 )
          out    OCR1AL, temp1
                                      ; CTC Modus einschalten
                                      ; Vorteiler auf 1
          ldi    temp1, ( 1 << WGM12 )
  out    TCCR1B, temp1

          ldi    temp1, 1 << OCIE1A  ; OCIE1A: Interrupt bei Timer Compare
          out    TIMSK, temp1

  ldi timer1_zaehler, 0

;Timer1 Einstelungen -----------------------------------------------------

Wie man sehen kann beschreibe ich zweimal das register "TIMSK".
Einmal im Teil des Timer0 undzwar setze ich es dort gleich"0b00000001".
Dies aktiviert den Timer Overflow von Timer0.

Dann bearbeite ich dies nochmal im Teil von Timer1.
Da aktiviere ich den CTC Modus. Dadurch wird das erste bzw. "nullte" Bit aber wieder deaktiviert. Wodurch der Timer0 nicht mehr auf einen Overflow reagiert. ICh hoffe ich hab es einigermaßen richtig erklärt :D
Aufjedenfall war die Lösung halt das ich das Register "TIMSK" in einem durchlauf bearbeite.
Nun funktioniert alles!
Danke für die vielen Tips.
Als nächstes werde ich nun die Relais Platine zu Ende löten. Das ganze in das leere CD-ROM Laufwerksgehäuse einbauen und dann bekommt ihr ein Paar fotos. Ach so und parrallel werde ich mich daran machen Die Steuerungssoftware für den PC zu schreiben. Habt ihr(bzw. du PoWl) da auch Ahnung von? Sonst lass ich das Fragen stellen hier direkt! :D
Aufjedenfall danke für die vielen Tips! Ohne eure Hilfe hätte ich das ncith hinbekommen!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am November 28, 2007, 19:31:40
Zitat von: Fabeulous $txt[176] November 28, 2007, 16:38:49
Gleichzeitig befindet sich das Hauptprogramm in einer Zählschleife. Diese wird erst verlassen wenn das register "timer1_zaehler" den Wert 25 hat.
??? Anscheinend hast du den eigentlichen Vorteil von Interrupts noch nicht begriffen. Normalerweise setzt man die ein, damit das Hauptprogramm eben nicht in einer Schleife hängt. So nutzt du den eigentlichen Vorteil der Interruptmethode gar nicht aus.

Unabhängig davon, warum hast du in den Timer ISRs noch zusätzliche Zähler drinn? Es bietet sich doch an, die Timer gleich entsprechend zu initialisieren. Die werden doch eh nur für diese eine Funktion genutzt.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 28, 2007, 21:58:43
Zitat von: Reisi $txt[176] November 28, 2007, 19:31:40
Zitat von: Fabeulous $txt[176] November 28, 2007, 16:38:49
Gleichzeitig befindet sich das Hauptprogramm in einer Zählschleife. Diese wird erst verlassen wenn das register "timer1_zaehler" den Wert 25 hat.
??? Anscheinend hast du den eigentlichen Vorteil von Interrupts noch nicht begriffen. Normalerweise setzt man die ein, damit das Hauptprogramm eben nicht in einer Schleife hängt. So nutzt du den eigentlichen Vorteil der Interruptmethode gar nicht aus.

Unabhängig davon, warum hast du in den Timer ISRs noch zusätzliche Zähler drinn? Es bietet sich doch an, die Timer gleich entsprechend zu initialisieren. Die werden doch eh nur für diese eine Funktion genutzt.


Aber gerade das ist doch der Sinn einer Warteschleife oder? Also zumindest brauchte ich jetzte eine Möglichkeit den Ablauf des Hauptprogramms zu verzögern. Und dies habe ich nun so realisiert.
Die anderen beiden Interrupts(UART Empfang und timer0 Overflow) habe ich ja so "Vorteilhaft" benutzt.

Diese zusätzlichen Zähler in den Timer Interrupts habe ich weil der Zahlenraum des normalen Timers nicht ausreicht bzw. alleine nicht genug Zeit verbrauchte. Ich habe den 16 Bit nun im CTC Modus so eingestellt das er bei 40000 einen Interrupt auslöst. Ich bräuchte aber eigentlich einen Timer der bei einem Stand von 100000 einen Interrupt auslöst. Da ich aber maximal etwas von 69000 einstellen kann muss ich das ganze mit einem zweiten Zaehler realisieren. Timer und Zaehler können dann zusammen bei einem Wert von 100000 Taktzyklen einen "Interrupt" auslösen.(40000*25=100000)
Ich hoffe ich habe das einigermaßen verständlich beschrieben :P

EDIT:
So ich habe gerade eben noch ein gimik hinzugefügt. Der Letzte Stand der LED's wird nun im EEPROM abgespeichert. Das heist auch anch einem NEu Start des µC's ist der aktuelle Stand noch da.


Titel: Re: Taster als Schalter via AVR
Beitrag von: OlafSt am November 29, 2007, 07:07:01
Erstmal danke für das reparierte Layout  :bestens: Crawler@edit: Gern geschehen!  ;)

BTT: Warum so umständlich ?

- Timer so programmieren, das er nach 10.000 einen Interrupt auslöst
- in der ISR einen Zähler hochzählen (+1)
- Hat der Zähler "10" erreicht, sind 100.000 Ticks vergangen und du rufst einfach deine Routine auf (Ja, man darf aus einer ISR andere Routinen aufrufen ;)). Zähler zurückstellen nicht vergessen !

Das ist viel simpler als die genickbrechenden Verrenkungen, die du da machst ;)


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am November 29, 2007, 08:23:32
Zitat von: Fabeulous $txt[176] November 28, 2007, 21:58:43
Aber gerade das ist doch der Sinn einer Warteschleife oder? Also zumindest brauchte ich jetzte eine Möglichkeit den Ablauf des Hauptprogramms zu verzögern. Und dies habe ich nun so realisiert.
Die anderen beiden Interrupts(UART Empfang und timer0 Overflow) habe ich ja so "Vorteilhaft" benutzt.
Nein, die Warteschleife soll nur dafür sorgen, dass die Prellende Taste nicht ausgelesen wird. Bei komplexeren Programmen befindet sich in der Main Schleife noch deutlich mehr Code, welcher bei dieser Methode eben auch unnötigerweise ausgebremst wird.
Zitat von: Fabeulous $txt[176] November 28, 2007, 21:58:43
Diese zusätzlichen Zähler in den Timer Interrupts habe ich weil der Zahlenraum des normalen Timers nicht ausreicht bzw. alleine nicht genug Zeit verbrauchte. Ich habe den 16 Bit nun im CTC Modus so eingestellt das er bei 40000 einen Interrupt auslöst. Ich bräuchte aber eigentlich einen Timer der bei einem Stand von 100000 einen Interrupt auslöst. Da ich aber maximal etwas von 69000 einstellen kann muss ich das ganze mit einem zweiten Zaehler realisieren. Timer und Zaehler können dann zusammen bei einem Wert von 100000 Taktzyklen einen "Interrupt" auslösen.(40000*25=100000)
Ich hoffe ich habe das einigermaßen verständlich beschrieben :P
Schon mal was von den Prescalern gehört (oder besser gelesen)?
Zitat von: Fabeulous $txt[176] November 28, 2007, 21:58:43
EDIT:
So ich habe gerade eben noch ein gimik hinzugefügt. Der Letzte Stand der LED's wird nun im EEPROM abgespeichert. Das heist auch anch einem NEu Start des µC's ist der aktuelle Stand noch da.
WWie oft machst du das? Der EEPROM hat nur ca. 100000 Schreibzyklen.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 29, 2007, 15:20:29
Zitat von: Reisi $txt[176] November 29, 2007, 08:23:32
Zitat von: Fabeulous $txt[176] November 28, 2007, 21:58:43
Aber gerade das ist doch der Sinn einer Warteschleife oder? Also zumindest brauchte ich jetzte eine Möglichkeit den Ablauf des Hauptprogramms zu verzögern. Und dies habe ich nun so realisiert.
Die anderen beiden Interrupts(UART Empfang und timer0 Overflow) habe ich ja so "Vorteilhaft" benutzt.
Nein, die Warteschleife soll nur dafür sorgen, dass die Prellende Taste nicht ausgelesen wird. Bei komplexeren Programmen befindet sich in der Main Schleife noch deutlich mehr Code, welcher bei dieser Methode eben auch unnötigerweise ausgebremst wird.


Aber dadurch das gewartet wird wird doch der prellende Taster nicht ausgelesen?! :P
Zitat von: Reisi $txt[176] November 29, 2007, 08:23:32
Zitat von: Fabeulous $txt[176] November 28, 2007, 21:58:43
Diese zusätzlichen Zähler in den Timer Interrupts habe ich weil der Zahlenraum des normalen Timers nicht ausreicht bzw. alleine nicht genug Zeit verbrauchte. Ich habe den 16 Bit nun im CTC Modus so eingestellt das er bei 40000 einen Interrupt auslöst. Ich bräuchte aber eigentlich einen Timer der bei einem Stand von 100000 einen Interrupt auslöst. Da ich aber maximal etwas von 69000 einstellen kann muss ich das ganze mit einem zweiten Zaehler realisieren. Timer und Zaehler können dann zusammen bei einem Wert von 100000 Taktzyklen einen "Interrupt" auslösen.(40000*25=100000)
Ich hoffe ich habe das einigermaßen verständlich beschrieben :P
Schon mal was von den Prescalern gehört (oder besser gelesen)?

Nein bisher nicht...
Zitat von: Reisi $txt[176] November 29, 2007, 08:23:32
Zitat von: Fabeulous $txt[176] November 28, 2007, 21:58:43
EDIT:
So ich habe gerade eben noch ein gimik hinzugefügt. Der Letzte Stand der LED's wird nun im EEPROM abgespeichert. Das heist auch anch einem NEu Start des µC's ist der aktuelle Stand noch da.
WWie oft machst du das? Der EEPROM hat nur ca. 100000 Schreibzyklen.


Ich machae das jedes mal wenn sich der Status der LED's verändert. Sprich wenn ein befehl über UART reinkommt oder eine Taste gedrückt wird.


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am November 29, 2007, 15:46:41
du solltest dich echt  n bissel besser informieren, sonst machst dus dir unnötig schwer. Les mal das datenblatt oder anleitungen im Internet.

Wie lange wir jetzt für eine so relativ einfache Aufgabe schon rummachen ist schon beachtlich. Und meistens postest du irgendwas und korrigierst dich selbst hinterher also du krigst das auch alleine hin du musst dich damit nur beschäftigen :-)

Mit Prescalern kannst du den Oszillatortakt teilen so dass der Timer langsamer läuft ;-) Guck mal im Datenblatt.

gruß, Powl


Titel: Re: Taster als Schalter via AVR
Beitrag von: Reisi am November 29, 2007, 15:57:05
Zitat von: Fabeulous $txt[176] November 29, 2007, 15:20:29
Aber dadurch das gewartet wird wird doch der prellende Taster nicht ausgelesen?! :P
Ja, das schon, aber dafür "hängt" auch der Rest. OK, ich hab mal deinen Quelltext überflogen, bei dir gibts keinen Rest, so dass das jetzt keinen Unterschied machen würde. Aber ums zu verdeutlichen stell dir einfach mal vor du hättest noch eine aufwändige Berechnung in der Main Schleife, die würde dann bei jeden Tastendruck auch unnötigerweise mit ausgebremst.
Zitat von: Fabeulous $txt[176] November 29, 2007, 15:20:29
Nein bisher nicht...
Faszinierend, wenn deine Kommentare stimmen benutzt du den beim Timer0 aber.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am November 29, 2007, 17:57:14
Ach lol mir wird auch gerade eben erst klar das Prescaler Vorteiler bedeutet... Sorry dann kenne ich es doch

EDIT:
So das erste Programm zur ansteuerung läuft. Ich werde es noch mit ein paar Gimiks ausstatten und dann stell ich es hier mal rein! :P


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Dezember 16, 2007, 18:39:12
So ich hab das Programm quasi bis auf ein paar Luxusfunktionen fertig. Gibt es leute die das mal testen würden? Wenn ja dann würde ich es ohne die Funktionen schonmal online stellen. Wenn nicht dann mach ich es erst ganz fertig!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Stukaa am Dezember 16, 2007, 22:41:08
hat du denn nen schaltplan für die benötigte hartware parat?


Titel: Re: Taster als Schalter via AVR
Beitrag von: Caseschrauber15 am Dezember 16, 2007, 23:34:47
Wenn du nen Schaltplan hast , dann bewerbe ich mich mal als Tester ;)


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Dezember 17, 2007, 09:19:07
Ja hier ist der vorläufige Schaltplan
http://fabeulousde.h198298.serverkompetenz.net/Schaltplan3.png

Vorläufig weil: Ich habe einen Taster eingang anstatt auf SCK auf PD5 gelegt. Wenn ich gleich Zeit habe dann mache ich eben einen neuen Schaltplan.
Dann werde ich mich mit der Software mal beeilen! :P


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Dezember 20, 2007, 18:44:54
Ach so ich schrieb mal eben auf was meine Software bisher alles kann und was sie noch können soll.

Sie kann:
-natürlich die einzelnen Verbraucher ein und ausschalten

-alle Verbraucher ausschalten

-alle verbraucher einschalten

-für die oben genannten Funktionen lassen sich globale Hotkeys definieren(finde ich besonders wenn man eine G15 Tastatu hat sehr praktisch da man dann quasi auf tastendruck die sachen betätigen kann)

-Automatisch erkennen ob ein AVR angeschlossen ist und kommuniziert

-automatisch erkennen ob eine andere Anwendung im vollbildmodus läuft und darauf reagieren(z.b. wird alles ausgeschaltet wenn ihr euch einen Kinofilm in Vollbild reinzieht. Optional wird nach dem verlassen des vollbildmoduses der alte Zustand wiederhergestellt)

-bei einer Aktion per Balon Tip darauf hinweisen was gerade passiert ist(z.b. Ihr schaltet Verbraucher 1 aus und im Balon Tip steht "Verbraucher 1 ausgeschaltet"

-den einzelnen Verbrauchern lassen sich auch Namen zuweisen(Somit würde in einem eventuellem Balon Tip z.b. "Lampe ausgeschaltet" stehen)

-minimiert gestartet werden

-mittels autostart gestartet werden

-ein TrayIcon ist auch vorhanden(kann deaktiviert werden)

-natürlich lassen sich Com Port, Baudrate, Stopbits, Datenbits und die Parität einstellen. Wobei ich noch überprüfen muss ob das alles so sinnvoll ist! :D

Funktionen welche ich gerade noch entwickle:
-Einstellbar auf "Bit" und "Byte" Modus. Im Bit Modus kann man 8 Relais steuern. Im Byte Modus 255

-Eigene Profile definieren. z.b. wenn anwendung XY startet schalten sich 3 Verbraucher ein und 4 aus(beliebig einstellbar)

-Ein Status Monitor welches als andockbares Fenster ständig im Vordergrund steht und über den aktuellen Schaltstatus der Verbraucher informiert. Außerdem sollen sich die Verbraucher darüber auch schalten lassen

-Eine Steuerung mittels Netzwerk. Das heist ihr könnt von einem anderen PC die Verbraucher steuern

-Übermittlung des aktuellen Statuses per POST oder GET an CGI/PHP Scripts

-Automatische Updates

-Logging funktion


So das war es erstmal. Ich hoffe da sind ein paar nützliche funktionen dabei und das sich aufgrund dessen vlt. noch ein paar mehr tester melden?!
Habt ihr noch vorschläge was man noch so für Funktionen einbauen sollte?
Ich werde für den ganzen Hardwareteil jetzt auch mal eine Schaltplan zum ätzen anfertigen und mir dann mal einen "Prototyp" mittels Ebay-Händler ätzen lassen.
Kann mir irgendwer einen guten "Ätz-Service" empfehlen?
Vielen dank im vorraus!


Titel: Re: Taster als Schalter via AVR
Beitrag von: raDon am Januar 5, 2008, 01:14:35
Das Projekt wird seeeeeeehr interessant.

würde das auch gerne mal testen wollen.

BTW: Verrätst du (grob) wie dein Programm auf die Serielle Schnittstelle zugreift?
weil: Ich hab mir eine (Zimmer) Licht Steuerung gebaut, und die wollte ich über den RS 232 konfigurieren können. Bisher muss ich änderungen im ASM Code vornehmen und neu brennen.

Und: Wenn der Mega8 weiter auf 8 Mhz läuft, kannst du doch den internen Takt verwenden (der sich bis 8 Mhz einstellen lässt).


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Januar 5, 2008, 12:46:28
Also auf die serielle Schnittstelle habe ich erst mit hilfe einer port.dll zugegriffen. Diese kann man im INternet umsonst runterladen und man stößt zeimlich schnell auf sie wenn man danach googelt.
Mittlerweile bin ich aber auf die cport Bibliothek umgestiegen da sie ein paar zusätzliche Funktionen hat, meiner Meinung nach flüssiger läuft und ich komme so natürlich auch ohne dll's aus.

Die Funktionsweise der eigentlichen kommunikation ist im Bit Modus(ein Byte Modus ist auch noch geplant und die unterscheide stehen weiter oben) recht einfach.

Der µC sendet in einer endloschleife ein byte an den PC. Dieses Byte bzw. die einzelnen zustände der bits dieses bytes stehen für die jeweiligen Zustände der verbraucher. z.b.:
Wir haben 8 Verbraucher davon sind die zwei ersten und die zwei letzten "eingeschaltet" dann sendet der µC ein byte mit dem binären wert 11000011 an den PC.

Das schalten der einzelnen Verbraucher läuft ähnlich. Man sendet ein byte. Das erste Bit dieses byte's ist True also wird der erste Verbraucher geschaltet. Also immer da wo ein bit in dem gesendeten byte true ist wird der zustand des jeweiligen verbrauchers umgeschaltet.

Programmieren lässt sich das recht einfach. Zumindest nachdem man diverse Funktionen zum umformen von binär zu dezimal zahlen und so weiter und sofort geschrieben hat :D

Das mit dem internen Takt würde vermutlich auch funktionieren. Nur ist der interne Quarzoszilator temperaturabhängig. Und da ich will das die Schaltung auch im Sommer noch funktioniert mache ich es lieber mit einem externem Quarz!

Was soll deine Zimmer Licht steuerung denn genau machen? Einfach nur ne größere Relaiskarte?

Kann ich dich quasi auch als potentiellen Tester meines Programms einplanen? :D


Titel: Re: Taster als Schalter via AVR
Beitrag von: OlafSt am Januar 5, 2008, 17:57:23
Seid ihr sicher, das ihr von einer seriellen Schnittstelle redet ? Für die sind solche Häßlichkeiten wie Port-DLL's nämlich absolut unnötig...


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Januar 6, 2008, 13:18:24
Ja ich bin mir sicher das ich von der seriellen Schnittstelle rede :P Und ich verwende die port.dll ja auch nicht mehr. ich war nur anfänger in sachen serielle schnittstelle und deswegen bin ich erst später auf die meiner Meinung nach bessere cport Lib umgestiegen...


Titel: Re: Taster als Schalter via AVR
Beitrag von: raDon am Januar 7, 2008, 21:11:42
Ja, kannst mich als Potentiellen Tester mit einplanen  :)

Achso, wegen der blöden temperatur der externe quarz. :idee:

Die Zimmerlichtsteuerung ist eine kleine Lichtsteuerung, die PC unabhängig arbeitet.
Ich hab da einen 4 Bit codierten eingang für taster und 8 parallele ausgänge, die 8 Power MosFETs ansteuern, womit ich entweder Relais für 230V Verbraucher oder LED's bzw CCs direkt schalten kann. Zusätzlich hab ich in der Steuerung eine IR-Empfänger Schaltung verbaut, die RC5 Codes in Schaltsignale umwandelt. Die ist ebenfalls an den 4-Bit-Codierten eingang angeschlossen.
Schalten kann ich dann die einzelnen Verbraucher oder auch "Beleuchtungsprogramme" für z.B. Filme gucken.

Und danke für die hinweise mit der Port ansteuerung  :bestens:


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Januar 7, 2008, 22:04:24
Okay nun hab ich es verstanden. Ist ja quasi sowas ähnliches wie das was ich vor habe bzw. gemacht habe nur etwas größer :D
Kein problem wenn du noch irgendwelche tips wegen der ansteuerung brauchst oder irgendwelche funktionen wie z.b. bytetostr etc... dann sag bescheid!

EDIT:
Heute kam meine erste selbst entwickelte Platine :D
Jetzt werde ich das mal zusammenbauen udn schauen ob meine eagle kenntnisse und verdrahtungen ausreichend richtig waren :D


Titel: Re: Taster als Schalter via AVR
Beitrag von: raDon am Januar 9, 2008, 00:09:05
Sieht schon sehr gut aus die Platine  :bestens:

Aber:
90° Winkel sind Böse. Lieber zwei 45° Winkel draus machen.
Das beugt Unterätzungen vor.

Tipp:
Wenn die Pads einem "dünnen Ring" ähneln:
"Datei" > "ULP ausführen" > "drill-aid.ulp" anklicken > "Öffnen" > neuen (kleineren) Bohrdurchmesser einstellen > Fertig  8)
Das Ding füllt alle Bohröcher automatisch aus, und lässt nur ein kleines Loch als Zentrierhilfe offen.

Dadurch lassen sich störende Platinenreste IM Pad vermeiden = bequemeres bestückern der slebst-geätzten Platine.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Januar 9, 2008, 15:13:34
Okay danke für die tips. Angefertigt habe ich die Platine ja nicht aber das mit den dünnen Ringen ist mir auch aufgefallen das werde ich das nächste mal ändern. Wenn die Platine funktioniert kriegt ihr auch die .brd Datei


EDIT:
So die erste Platine ist leider etwas verunglückt. Nachdem ich zwei µC's geschrottet habe hab ich gemerkt das die µC'S als versorgungsspannung 12 Volt ab bekamen was denen garnicht gefiel. Das hatte ich dann korrigiert und es funktionierte auch erst. NUr das programmieren ging nicht. das lesen jedoch schon. Nach 2 Minuten habe ich mir dann aber auch wieder die Finger am ULN2308 und dem µC verbrannt... Also irgendwas habe ich da falsch gemacht! :D


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Januar 12, 2008, 14:37:30
So bitte helft mir mal. Ich weis nicht was ich bei diesem Schaltplan abgesehen von der falschen verkabelung des Strómsteckers falsch gemacht habe.

http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/Schaltplan_falsch.png[/url]

Fehler waren folgende:
Bevor ich die Stromzufuhr korrigiert hatte brannte der µC immer durch. Danach lief es eigentlich erst. Aber nach Zwei Minuten war der ULN2308 Sehr heiß(zu heiß) und der µC auch. Beide sind nun kaputt. Ich weis aber einfach nicht warum...
Habe ich einen typischen Eagle anfängerfehler gemacht?


EDIT: Ach hier noch die .brd:

[url]http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/Board_falsch.png

Bitte helft mir für mich ist das absolutes Nueland und ich hab echt keine Ahnung warum das nicht läuft....


Titel: Re: Taster als Schalter via AVR
Beitrag von: Ast am Januar 12, 2008, 17:47:57
Das einzige das ich sehe ist, dass der Anschluss des µCs links an 5V keinen Verbindungsknoten hat.
Also keinen Punkt auf der Verbindungsstelle zur 5V-Leitung.
Es könnte also sein, dass Eagle da keine Verbindung gemacht hat.

Außerdem frage ich mich, wieso du die LEDs mit 12V betreibst.
Das ist doch Energieverschwendung.

Un das Wirrwar links vom µC ist ziemlich unübersichtlich.
Du solltest vermeiden, dass zwei Leitungen vom selben Signal parallel verlaufen.
Wenn du nur eine "Hauptleitung" hast, von der Seitlich Leitungen abgehen, ist es viel einfach dem Signalverlauf zu folgen.

Die Brd-Datei habe ich jetzt nich kontrolliert, aber du solltest doch auch selbst in der Lage sein zu überprüfen, ob sie auch wirklich mit dem Schaltplan, wie du ihn dir gedacht hast, übereinstimmt.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Januar 12, 2008, 18:38:02
Okay danke das mit den LED's ist ein guter Tips werde ich mal bearbeiten.

Doch der µC hat Strom.

Ne andere Sache. Ich habe bevor ich die Platine geroutet habe ja die Ratsnest Funktion genutzt. Kann es sein das die Stromzufuhr inklusive Resteschaltung so krank verkabelt wurde das dadurch eine Überhitzung entsteht? Ich vermute jetzt einfach mal nein. Weil ja eigentlich nur die Positionen der einzelnen Verbindungen verändert wird oder?

Ich habe auch drauf geachtet die Bauteile wie Kondensatoren, Quarze und Widerstände recht nah am µC zu haben aber es läuft trotzdem nicht.

Die .brd Datei muss doch identisch mit dem Schaltplan sein oder? Die .brd Datei wurde doch daraus erzeugt. Ich hab die nur gepostet weil ich gedacht hab das der fehler vlt. an der positionierung der Bauteile liegt...

Aber danke für deine Tips!


Titel: Re: Taster als Schalter via AVR
Beitrag von: raDon am Januar 14, 2008, 00:05:57
Was mir da auffällt: Der Pin 10 vom ULN kann Unbeschaltet bleiben.
Bei dem Pin sind alle Ausgänge über eine Dioden zusammengeschaltet.
Der sollte nicht auf VCC liegen, sondern unbeschaltet sein.

Sonst find ich nichts merkwürdiges :)

Die Positionierung der Bauteile ist bei solchen Anwendungen unwichtig.
Das muss erst beachtet werden, wenn es um Hochfrequente Anwendugneg geht. Funksysteme oder Datenübertragung. Da können parallele Leiterbahnen Probleme machen.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Januar 14, 2008, 07:31:35
Aber muss Pin 10 nicht angeschlossen sein damit die Dioden des ULN als Löschdioden für die Relais fungieren?


Titel: Re: Taster als Schalter via AVR
Beitrag von: raDon am Januar 17, 2008, 22:22:04
Da haste recht.

Hab mich im Datenblatt verguckt  ::)


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Januar 19, 2008, 23:45:31
macht ja nix! so ich muss die schaltung demnaechst nochmal testen. ich hab mir naemlich einen neuen isp gekauft und ich habe erst vorgestern rausgefunden wie der funktioniert.

ich hab nun auch noch eine zusaetzliche funktion fuer die software bzw. eher zwei.
einmal werde ich versuchen eine art zeitschaltuhr einzubauen und dann versuche ich noch was zu basteln das man die relais auch per handy ueber bluetooth steuern kann...
mal gucken ob ich das hinbekomme...


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Februar 27, 2008, 14:51:59
So ich wollte mal fragen ob irgendwer in der Zwischenzeit die Hardware nachgebaut hat. Würde nämlich gerne mal das Programm zum testen rumschicken!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Caseschrauber15 am Februar 27, 2008, 15:04:40
Ich hab es noch nicht nachgebaut , ist dein schaltplan jetzt so korrekt ?

Bitte adde mich im icq dann mal , hätt da noch ein paar fragen wegen der bestellung  ;)
icq nummer ist im Profil


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Februar 27, 2008, 16:00:30
Also ich hab den aktuellen Schaltplan und die .hex file für den MC nochmal dran gehängt! Die dateianedung von Relaiskarte.jpg bitte in .hex ändern (Kann man hex dateien nicht auch uploadbar machen?)!
Ich adde dich gleich mal!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am September 16, 2009, 17:52:29
Hola!
Okay es hat zwar etwas gedauert aber ich habe endlich etwas Zeit gefunden und es ist vollbracht!

Also die Hardware ist fertig. Habe zwei verschiedene Schaltpläne entworfen.
Einmal für einen Steckkartenhalter und für den Einbau in einen PC.
Die Schaltpläne sind im Anhang.

Die Software bzw. Firmware habe ich in Bascom geschrieben.
Die Taster werden darüber, also Softwaremäßig, entprellt und steuern so die 8 Ausgänge am ULN2803 an. Dieser schaltet dann die Status LED’s(welche sich mit einem Jumper auch abstellen lassen) und ggf. die Relais oder anderer „Betriebsmittel“. Diese können dann über einen 10 Pol Wannenstecker angeschlossen werden.
Natürlich kann der ULN2803 auch direkt schalten. Dabei sollte man allerdings drauf achten das pro Ausgang nur 500mA fließen dürfen und ggf. ein Kühlkörper verwendet werden sollte…

Außerdem lassen sich die Ausgänge auch noch über den UART steuern.
Dazu habe ich vier Befehle einprogrammiert:

„U1“=(Unset1)= Setzt den Wert des 1. Ausgangs auf 0V bzw. logisch 0
„S1“=(Set1)=Setzt den Wert des 1. Ausgangs auf 5V bzw. logisch 1
„T1“=(Toggle1)=Invertiert den Wert des 1. Ausgangs also aus logisch 1 wird logisch 0 oder andersherum
„H1“=(How is 1)=Gibt den Wert des 1. Ausgangs zurück. Logisch 1 gibt „An“ zurück. Logisch 0 gibt „Aus“ zurück

Das ganze läuft bei einer Baudrate von 9600 Baud

Außerdem sendet der µC bei einem Tasterdruck also wenn sich einer der Ausgänge verändert hat ein „NS“=(Neuer Status).

Wenn der µC auf Befehle wartet (also quasi immer) sendet er „BD“=(Bin noch da!).

So im Anhang habe ich dann die versprochenen Schaltpläne, Materialliste, Software als Hex und als .bas Datei und noch ein paar Bilder.

Ich selbst habe die Schaltung nur passend für einen Steckkartenhalter aufgebaut.
Würde aber den Aufbauplan für die PC Version auch noch routen wenn Interesse besteht.

Ich hätte auch nichts dagegen wenn man daraus ein Tutorial machen würde. Dazu müsste ich nur noch wissen was dazu noch benötigt wird?


MFG
Fabeulous

Anhang:

http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/FRC.rar

EDIT:

Ach so eine Software zum ansteuern muss ich erst noch schreiben. Die Funktionen die diese haben soll stehen irgendwo weiter vorne im Thread :D

Aber abgesehen davon denke ich das jeder Mensch der Softwaremäßig begabt ist eigentlich relativ schnell eine Software dafür schreiben können!

Bisher habe ich die Karte also nur per Hterm bzw Hyperterminal getestet...


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am September 28, 2009, 13:00:39
So ich habe mich mal an die Software gemacht. Bräuchte aber jetzt etwas hilfe von den Programmierprofis unter uns...
Das schalten funktioniert Soweit. Hotkeys können auch definiert werden. Außerdem kann man auch aus der Taskbar die Programme schalten.
Allerdings habe ich ein Problem: Wie kann man das Senden der Daten vom µC zum PC "syncroniseren". Im moment ist es so das sobald der PC sich mit dem µC verbindet er die Daten ampfängt. Nun passiert es aber manchmal das das Empfangen direkt in einem Byte beginnt.
Das heißt es werden ganz andere Werte übertragen als eigentlich gesendet wurden.
Beispiel: wenn man 11110000 als Byte übertragen möchte und der PC genau in der mitte der Übertragung anfängt zu empfangen dann empfängt er immer nur 00001111 00001111 ... Ich hoffe man versteht was ich meine.


Ich hab mir gedacht das geht irgendwie mit den Stopbits aber da hakts bei mir mit der umsetzzung.

Wäre cool wenn mir irgendwer ein Paar tipps geben könnte wie man das ganze realisieren kann.

Schon mal vielen
Schonmal vielen Dank
MFG
Fabeulous


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am September 28, 2009, 13:18:13
Sollte doch kein Problem sein. Entweder du machst es so, dass der PC dem µC bescheid sagt, ab wann er bereit ist daten zu empfangen, oder du sendest halt ein synchronisations-Befehl vom µC zum PC. Der PC wartet dann, bis er das erste mal "sync" empfängt und fängt dann erst an die Daten zu empfangen.

Wozu muss der µC dem PC überhaupt sätndig daten senden? Wenn man manuell einen Taster bedient kann man das ja auch direkt machen. Die Steuerungssoftware muss nur am Anfang einmal den aktuellen Status der Schalter auslesen und wird dann in Zukunft nur noch direkt wenn man einen Taster drückt vom µC informiert.


Titel: Re: Taster als Schalter via AVR
Beitrag von: OlafSt am September 28, 2009, 13:40:15
Üblicherweise sichert man seine Datenübertragung wie folgt:


  • Der µC sagt erstmal gar nix und geht außerdem davon aus, das kein PC "da" ist.
  • Der PC schickt irgendein "Magic Byte/Word/DWord/Whatever" an den µC
  • Der µC antwortet darauf. Der PC weiß nun, da ist ein µC und der µC weiß, da ist ein PC.
  • Der µC schickt dann nach belieben Daten, wenn welche anstehen
  • Idealerweise sendet der PC beim Abschalten wieder ein Magic Byte, mit dem er seine Abwesenheit bekanntgibt. Kann man nutzen um den µC schlafenzulegen oder sowas.


Polling (also dauerndes Abfragen) der SIO ist ganz mieser Anfänger-Stil, weil es unnütz CPU-Zeit verheizt und absolut unnötig ist.

[Edit: Absichtlich harsch formuliert, damit du es gleich richtig machst  ;)]


Titel: Re: Taster als Schalter via AVR
Beitrag von: TheSkorpion am September 28, 2009, 16:54:26
ich sach nur eins

handshake

die serielle Schnittstelle hat ja nicht ohne Grund mehr als zwei Adern.


Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am September 28, 2009, 18:51:35
naja.. irgendwie overkill wenns auch ganz einfach in soft geht


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am September 28, 2009, 20:21:54
Okay also erstmal danke für die Tips.
Also im Moment ist es so, dass pro Programmablauf immer der String „BD“ gesendet wird.
Wenn jetzt eine Taste gedrückt wird. Also ein neuer Status existiert wird außerdem einmalig der String „NS“ gesendet auf welchen der PC dann reagieren soll indem er die einzelnen Statusse/Staten(Wie ist der Plural von Status?  :D ) der Taster erfragt.

Erst wollte ich es auch so realisieren das der µC nur auf Anfrage sendet.

Komischerweise konnte ich aber dann nie mit dem µC kommunizieren.
Das heißt wenn ich bei jedem Programmdurchlauf auf dem µC ein beliebiges Byte vom µC an den PC sende kann ich auch befehle an den µC zurück senden.
Sobald ich den µC aber so programmiere das er nur "hört" und nichts sendet empfängt er keine Befehle mehr.

Kann sich da jemand einen Reim drauf machen wieso er das macht? bzw. nicht macht?

Das mit dem Handshake finde ich auch etwas übertrieben vor allem weil ich dann nochmal an der Hardware rumlöten müsste. Und das würde bei meinem Layout auf jeden fall zu Luftverdrahtung führen...

Aber schon mal vielen Dank für die Tips...
Hat eigentlich irgendwer hier Interesse daran die Schaltung auch mal aufzubauen? Weil dann könnte derjenige auch mal die Software testen(wenn sie dann soweit ist)?



Titel: Re: Taster als Schalter via AVR
Beitrag von: PoWl am September 28, 2009, 21:03:32
Naja dann setze die Tipps die wir dir die letzten Posts gegeben haben erstmal um und dann sehen wir weiter. Der µC muss dem PC nicht permanent bescheid sagen "hallo ääh nur zur info, BD - bin noch da!!! hähähähää".

Bau doch erstmal schritt für schritt ne kommunikation zu deinem µC vom PC aus auf. Ganz einfach nochmal von 0 anfangen und schrittweise das Programm erweitern. Wenns schon von Anfang an nicht läuft muss die Ursache ja irgendwas triviales sein. Ansonsten kann ich mir da jetzt auch keinen Reim drauf machen.


Titel: Re: Taster als Schalter via AVR
Beitrag von: OlafSt am September 28, 2009, 21:33:05
Klingt für mich danach, als wenn die serielle des µC nicht richtig oder gar nicht initialisiert / korrekt programmiert wurde.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am September 29, 2009, 15:31:19
Ja danke! Es ist ja nicht so als hätte ich das nicht schon alles versucht.

Also mal rein nach dem ausschlussverfahren:

Hardwareseitig funktioniert das Senden und das Empfangen. Denn das Senden an den µC und das Emfpngen vom µC hat beides schon geklappt.
--> Also kann es an der Hardware nicht liegen

Okay dann hätte ich Softwaremäßig was falsch machen können.
Deswegen habe ich mir folgenden Mini Code gebastelt:

Code:
'004.BAS:  UART-Empfänger ohne Interrupt
'Hardware:  MAX232 an PD0/PD1, Nullmodemkabel zum PC
'---------------------------------------------------
$regfile = "m8def.dat"                                   
$crystal = 8000000                                       
$Baud    = 9600        'Baudrate der UART: 9600 Baud

Dim i As Byte

Do
  If USR.RXC = 1 Then  'Wenn Byte empfangen...
    i = UDR            'Byte aus UART auslesen
    Select Case i
    Case "H"
      Print "Hallo AVR"
    Case "h"
      Print "hallo avr"
    Case Else
      Print "Unbekannter Befehl"
    End Select
  End If
Loop
End

Funktioniert leider nicht.
Und ab hier weis ich nicht weiter.
Am AVR kann es auch nicht liegen. Habe bereits mehrere ausprobiert.
Noch jemand eine Idee?
Trotzdem schon mal vielen Dank!

EDIT:
Okay hat sich erledigt!
Es lag daran das ich vergessen habe den MAX232 an GND anzuschließen!
Nun läuft es perfekt!
Trotzdem Danke!

P.S.: Hat nun denn nun jemand Interesse an der Software?


Titel: Re: Taster als Schalter via AVR
Beitrag von: mak am September 29, 2009, 17:56:18
Zitat von: Fabeulous $txt[176] September 29, 2009, 15:31:19
Hat nun denn nun jemand Interesse an der Software?


Da kannst du dir sicher sein, das kann man immer brauchen.


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Januar 23, 2010, 11:10:34
So ich habe die letzten Tage dann mal an dem Programm gebastelt.
Es ist soweit fertig obwohl es nicht so ganz Funktionsreich ist ich es erst angekündigt hatte. Ich denke das kann man im Laufe der Zeit immer noch integrieren.

Aktuell sind folgende Funktionen integriert:
- Balontips werden angezeigt, wenn ein Verbraucher geschaltet wird(Abschaltbar)
- Den Verbrauchern können Namen zugewisen werden
- Für die Schaltaktionen der Verbraucher können globale Hotkeys definiert werden (Ist meiner Meinung nach besonders praktisch wenn man eine G15 oder ähnliches hat. Dann kann man die Verbraucher direkt über die G-Tasten schalten)
- Die software kann automatisch gestartet werden
- ...und sich auf wunsch auch automatisch verbinden, sodass man direkt nach dem Systemstart darauf zugreifen kann
- Das Programm kann in den Systemtray minimiert werden


Ich bin nicht unbedingt der begnadeste Programmierer, deswegen gehe ich davon aus das sich auch noch der eine oder andere Fehler im Programm versteckt.
Falls jemand das Programm testet, und dabei irgendwelche Fehler entdeckt, sagt mir bitte eben bescheid.

MFG
Fabeulous

Anhang:
http://fabeulousde.h198298.serverkompetenz.net/moddingfaq/FRS.exe

Edit: Sry hab den Link aktualisiert


Titel: Re: Taster als Schalter via AVR
Beitrag von: Crawler am Januar 23, 2010, 12:29:55
Link funktioniet bei mir nicht!


Titel: Re: Taster als Schalter via AVR
Beitrag von: Fabeulous am Februar 13, 2010, 12:51:26
So ich wollte nur mal nachfragen ob irgendwer schonmal in das Programm reingeschaut hat?
Bzw. die Platine nachgebaut hat...
Wie sieht das aus besteht interesse das man das ganze zu einem Tutorial aufpeppt?
MFG
Fabeulous


Titel: Re: Taster als Schalter via AVR
Beitrag von: TT_Kreischwurst am Februar 13, 2010, 13:21:24
Zitat von: Fabeulous $txt[176] Februar 13, 2010, 12:51:26
Wie sieht das aus besteht interesse das man das ganze zu einem Tutorial aufpeppt?


Naja das ist was.

Also ich bin ja ein Fan der vielen M-FAQ Tutorials und kann es daher nur befürworten aber pass mal auf: Hier läuft so ziemlich alles auf Lochraster ohne µC. Und das hat seinen Grund. Diese Schaltungen kann jeder zum Bauteilpreis sich selbst hinbrutzeln.
Bei µC ist das ja eeetwas anders. Die wenigsten haben nen STK500 oder ein ISP daheim in Opas Werkstatt liegen ;)

Ich persönlich sehne mich ja schon eine Weile nach einem vernünftigen, ausführlichen stepbystep AVR-Tutorial um den blutigen Anfänger diese wunderbare Technik näher zu legen.


Was ich mir SUPER vorstelle wäre ein Tutorial für AVRs wo die Basics erklärt werden. Bsp. programmiern in C, µC flashen blablabla und und und.
Dann könnte ich mir dein "Fabelous'schen Relais Switcher" (Anm: super Name ;D ) als erstes "Anwendungsbeispiel"/"Praxisverweis" wunderbar vorstellen.

Quasi ein theoretisches µC-Tut mit dem Tut zum Bau / programming (+Programmerklärung) deiner schönen Idee.

Das AVR-Tut könnten dann ambitionierte User in die fortgeschrittenen-Ebene anheben...

Also ergeben sich folgende Fragen:

-Hast du evtl Lust ein solches Tut zu verfassen (oder MIT zu verfassen)?
-was halten die "alten" Hasen davon?
-wo sind meine Autoschlüssel?
-jemand andere Vorschläge?
-jemand der Meinung ein AVR-Tut macht sich gut ohne AVR-Grundlagen-Tut?

und einiges mehr.


Rege Diskussion zu dieser Zukunftsmusik ist natürlich erwünscht :-*

lG,TT


Titel: Re: Taster als Schalter via AVR
Beitrag von: Crawler am Februar 13, 2010, 18:16:30
So, dein Programmm habe ich mir mal angesehen. Sieht auch ganz übersichtlich aus.
Aber: Das Einstellungsfenster öffnet sich an solch merkwürdigen Positionen, dass man nicht alles vom Fenster sehen kann. Das wäre ja prinzipiell nicht weiter schlimm, es nervt nur, dass man das Einstellungsfenster nicht verschieben kann. Oder ist das systembedingt? Hier unter Win7 64bit gehts jedenfalls nicht.
Zu den Optionen im Einstellungsfenster: Neben einigen Schreibfehlern ("balon" statt "Balloon") und hässlichen Apostrophen (Seit wann ist die Pluralform von "key" "key's"?) und unmöglichen Leerzeichen ("Taster Namen", im Deutschen entweder als Genitivform "Namen der Taster" oder als zusammengesetztes Substantiv "Tasternamen", von mir aus auch gerade noch so mit Bindestrich "Taster-Namen") ist mir folgendes aufgefallen: Wieso kann man die serielle Schnittstelle konfigurieren? Klar, der Com-Port muss angegeben weredn, dass dein Programm weiß, über welchen Port es kommunizieren soll. Aber man legt doch im µC-Programm fest, welche Parität, welche Baudrate genutzt werden soll. Warum soll man vom PC-seitigen Programm das einstellen können? Das ist doch nur eine zusätzliche Fehlerquelle.
Und dann wundert mich, wie eine Verbindung hergestellt werden kann , wo doch kein Gerät am Port hängt: Die Verbindung sollte nur dann hergestellt werden können, wenn der µC antwortet.
Dann sind bei mir die Balloon Tips standardmäßig im Programm deaktiviert, kommen aber trotzdem. Da steht übrigends "Nr. x Eingeschaltet", "eingeschaltet" wird nach wie vor klein geschrieben. Und die Tips kommen auch, wenn kein µC am seriellen Port hängt...
Noch eine Sache: Ich kann durchaus verstehen, dass man stolz auf sein Programm ist, Mir ist die "Werbung" aber eindeutig zu groß geraten. Ich denke, ein klassisches Menü tut es auch, wo man unter dem Punkt "Hilfe" ein "Über FRS" unterbringen kann. In diesem Menü könnte man auch die Einstellungen unterbringen, die sind mir im Hauptfenster einfach zu dominant.


Titel: Re: Taster als Schalter via AVR
Beitrag von: TT_Kreischwurst am Februar 13, 2010, 18:22:16
Win Vista x64 und Win XP x86 gleiches Spiel. Fenster an sich mittig bei allen Auflösungen und Einstellungsfenster zu 90% weg. Unverschiebbar, nur Alt+Strg+Entf hilft.


Titel: Re: Taster als Schalter via AVR
Beitrag von: TheSkorpion am Februar 13, 2010, 19:05:14
sehr merkwürdig ist auch das man die Geräte nur einschalten kann, aber nicht ausschalten. (ich mein jetzt die Einzelbutton)

es sei denn es muss ein Board angeschlossen sein, damit sich die Buttonbeschriftung und Funktion ändert. Dann ist das hier nicht von Bedeutung


© 2001-2022 MODDING-FAQ FORUM | SMF
Alle Rechte vorbehalten.