Ich habe folgendes programm erstellt und komme nicht weiter; kann mir da jemand helfen?
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
An Pin 6 hab ich eine weisse Led mit Vorwiderstand und einen Widerstand von Plus auf Pin 1! lg LS
|
Anzeige
|
LED-Blitzer mit Bascom und ATtiny13Ich habe folgendes programm erstellt und komme nicht weiter; kann mir da jemand helfen?
An Pin 6 hab ich eine weisse Led mit Vorwiderstand und einen Widerstand von Plus auf Pin 1! lg LS
Gast
#1333797
was ist jetzt deine frage? der tiny 14 kann doch gar kein 1Mhz, zumindest nicht ohne externen Quarz. intern hat der 9,6(default) oder 4,8 dies kannst du wahlweise noch teilen lassen (default: 8) der standardtakt ist also 1,2Mhz. wird aber nicht dein Problem sen.
selbst gar keine Kommentare sind besser als falsche kommentare Das mit den Kommentaren tut mir leid. Ich wollte ein einfaches Bascom Programm mit dem ich mit einem Attiny13 od. 15 auf Pin6 (Portb.1) eine Led alle Minuten für 1 Sekunde zum Leuchten bringe. Stromversorgung ist 4,2V Kondensator zwischen Plus u. Minus Vorwiderstand 100 Ohm mit weisser LED-minus auf Pin6, Plus der Led auf Versorgungsplus 47k Widerstand von Plus zu Pin 1(Reset) lg LS hallo Leopold Schilling, ich hatte mit bascom und tiny13 auch schonmal probleme mit einem portpin als ausgang. irgendwie schein bascom da die spi-schnittstelle nicht richtig zu verwalten. versuch das ganze mal mit nem anderen pin. z.b. pb4. das programm sieht doch sonst gut aus. gruss klaus Was ist denn das Problem? gehts gar nicht, gehts falsch? das Prgrammieren geht? >Vorwiderstand 100 Ohm mit weisser LED-minus auf Pin6, Plus der Led auf Versorgungsplus Das heißt deine LED ist low-Aktiv. sprich sie leuchtet, wenn dein Port auf Low ( LED = 0) ist und wenn High (LED=1) geht die LED aus. Der vorwiderstand ist für ne weiße LED, die typischerweise eine Durchlasspannung von ~3V haben recht hoch, sollte aber passen. Der Pullup am reset ist auch ok. edit: > Waitms 150 > Waitms 5000 'Pin >Ich wollte [...] eine Led alle Minuten für 1 Sekunde zum Leuchten bringe. ??? du kennst die umrechnungfaktoren von ms -> s -> min? Der Attiny macht nichts. Wie rechnet man die Waitms in sek um? Der interne Takt ist ja 1MHZ??? lg
Gast
#1334164
millisekunde, kilogramm, dezimeter. Waitms 5000 ist dasselbe wie ... Wait 5 Auf mcselec.com gibt es einen Bericht der bestätigt, dass die attiny13.dat Datei fehlerhaft ist : http://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=1409&highlight=attiny13 Daniel W. schrieb: > Auf mcselec.com gibt es einen Bericht der bestätigt, dass die > attiny13.dat Datei fehlerhaft ist : > > http://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=1409&highlight=attiny13 Ähm. Von 2006 stammt die Meldung, dass dieses mitlerweile gefixt ist. Schnellschuss: Du hast aber schon ausprobiert, ob die LED nicht verpolt eingebaut wurde. Sowas kann schon mal passieren. Hallo! Hab jetzt alles weggeschmissen und fange HW u. SW neu an zu bauen! lg LS Karl heinz Buchegger schrieb: > Schnellschuss: > Du hast aber schon ausprobiert, ob die LED nicht verpolt eingebaut > wurde. Sowas kann schon mal passieren. lol. Das wärs aber. Leider hat sich der TO ja trotz aufforderung nicht überreden lassen das Fehlerbild geanuer zu beschreiben. Hallo! Ich verwende: zum Brennen das Mysmartusb MK2,mit MyAvrWorkpad Plus Bascom zum programmieren ATtiny13 u. 15 mit Reset-Widerstand 100nF auf Versorgungsspannung weisse LED mit 100 Ohm Vorwiderstand auf einer Lochrasterplatine aufgebaut mit IC-Sockel Spannungsversorgung ist ein LiIon Akku mit 4,1Volt Die LED funktioniert einwandfrei wenn ich Spannung darauf anlege. Wenn ich an die Schaltung eine Spannung anlege passiert nichts. Fusebits hab ich bei Bodlev und Suto u. CKSEL0 gesetzt. lg LS 'Bascom Projekt 'von Leopold Schilling '************************************* 'Alarmatrappe mit Led-Flasher ' mittels Attiny13 ' weisse LED mit 100Ohm Vorwiderstand ' Widerstand 47k an Pin1 '************************************* $regfile = "ATtiny13.dat" $crystal = 1000000 Config Portb.4 = Output 'Ein Pin wird aus Ausgang konfiguriert Led Alias Portb.1 Do Led = 1 'Pin wird auf Low, also 0V geschaltet-LED leuchtet Waitms 100 'für 0,1 Sekunden Led = 0 'LED aus Waitms 5000 'für 50 Sekunden Loop End --------------------------------------------------------------- Das ist der Programmstand; nicht ganz klar ist für mich die Cristalanweisung da ich den internen Quarz verwenden will und unsicher bin ich mir mit den Waitmsanweisungen. lg LS
Gast
#1335109
Du definierst PB4 als Ausgang, haengst aber mit der LED an PB1. Waitms 5000 wartet 5000ms d.h. 5 Sekunden. Wait 50 wartet 50 Sekunden. "Crystal" bedeutet allgemein: die Taktfrequenz. MfG Paul Hallo! Danke für den Hinweis Ich hab es vorher mit portb.1 propiert und dann auf portb.4 umgestellt und auf diese Änderung vergessen. Warum muß ich eine $cristalanweisung schreiben wenn ich den internen Takt verwenden will??? lg LS
Gast
#1335127
Damit Waitms die richtige Zeit berechnen kann.
Gast
#1335129
Die Hilfe in Bascom zu lesen währe auch nicht schlecht. Nur mal so als Hinweis. Gruß
Gast
#1335133
Man kann dir hier im Forum schon helfen, aber die eigentliche Arbeit mußt du schon selbst machen. >>der tiny 14 kann doch gar kein 1 Mhz, zumindest >>nicht ohne externen Quarz. Intern hat der 9,6 ... Hallo, wenn der ATtiny intern 9,6 MHz hat, kommt man bei einem Teiler von acht auf 1,2 MHz. Wenn ich $crystal= 1000000 setze, versagt der ATtiny dann seinen Betrieb, oder schwingt er neben der Frequenz? Daniel W. schrieb: >>>der tiny 14 kann doch gar kein 1 Mhz, zumindest >>>nicht ohne externen Quarz. Intern hat der 9,6 ... > > > Hallo, > > wenn der ATtiny intern 9,6 MHz hat, kommt man bei einem Teiler von acht > auf 1,2 MHz. > > Wenn ich $crystal= 1000000 setze, versagt der ATtiny dann seinen > Betrieb, oder schwingt er neben der Frequenz? Schau bitte in die BASCOM Hilfe. Da ist jeder Befehl ziemlich gut beschrieben. $CRYSTAL teilt BASCOM mit, mit welcher Frequenz dein AVR arbeitet. Aber: ES VERÄNDERT NICHT WIE SCHNELL DER AVR TATSÄCHLICH ARBEITET. Das ist reine Information für den BASCOM Compiler, damit der die Warteschleifen richtig berechnen kann. mensch Autor: Leopold Schilling (leopold) , was ist denn mit dir los, dass du so oberflächlich bist. wenn du ein problem hast, musst du es lokalisieren und dann ändern. ... also erst analysieren und dann friemeln. du hast ja meinen vorschlag befolgt mal den pb4 zu verwenden. leider hast du dann wieder vergessen, das programm anzupassen. wenn du unsicher mit alias bist, dann lass ihn doch weg. ... das heisst dann du vereinfachst dein problem: also... config portb.4 = output und dann später portb.4 = 1 oder port.4 = 0 das mit den waits sollte doch für sich genommen auch einleuchten: 1uS = 10hoch minus 6 sekunden ist so ähnlich wie mikrogramm brauchst du halt 1000 mikrogramm um ein gramm zu haben. danach kommt dann das gramm (milli-kilogramm) oder die millisekunde .. sind halt 10hoch minus 3 sekunden ... also brauchte 1000 davon (also von den ms) dann haste 1 sekunde dann kannste schreiben wait 1 für die sekunde. und nun nochmal zum crystal: der bascomgeist rechnet durch die angabe von crystal aus, was er machen soll, wenn du wait 1 eingibst. du willst also einen wait 1 (sekunde) ... und der denkt sich aus, wieviele systemtakte (abhängig vom takt) er nun warten muss , um ungefähr deinen wünschen nachjzukommen. .. und deshalb ist die angabe nicht unwichtig, obwohl zwischen 1000000 und 1200000 nfür deine anwendung erstmal nicht viel passiert ... ausser dass deine sekunde um 20% kürzer oder länger wird. ich könnte ja mal vorschlagen, dass du mal sowas in das prog schreibst: do wait 2 portb.4=1 wait 2 portb.4=0 loop wenn dein crystal falsch ist, kann es ja durchaus einige minuten dauern, bis sich was tut.. aber es sollte sich schon was tun. die wartezeit ist aber doch besser investiert als in die ganzen texte hier. ............ also .............. streng dich an gruss >>$CRYSTAL teilt BASCOM mit, mit welcher Frequenz dein AVR arbeitet. Aber: >>ES VERÄNDERT NICHT WIE SCHNELL DER AVR TATSÄCHLICH ARBEITET. Aha! -Wenn man ... $crystal = 1000000 statt $crystal = 1200000 ... eingibt, würde der AVR also nicht den Dienst 100% quittieren, sondern der AVR würde funktionieren, und die Sekunde, die man mit Wait 1 angibt, wäre bloss um 20% kürzer oder um 20% länger. Hallo! Ihr habt natürlich recht. Ich hab in der Vergangenheit sowas mit einem NE555 gemacht. Jetzt hab ich mir ein mysmartusb zugelegt, ein Buch gekauft, das ich leider noch nicht studieren konnte und wollte schnell einen Attiny zum Blitzen bringen(den Attiny deswegen weil der weniger Strom verbraucht). In Zukunft werd ich mir ein ordentliches Bascom-Tool zulegen (dzt. hab ich eine Demoversion wo z.B. die Hilfe fehlt). Ich hoffe das ich heute das Projekt positiv beenden kann. lg und Danke für die Hilfen LS Leopold Schilling schrieb: > In Zukunft werd ich mir ein ordentliches Bascom-Tool zulegen > (dzt. hab ich eine Demoversion wo z.B. die Hilfe fehlt). Die Hilfe gibts auch online. Auf genau derselben Web-Site von der du auch die Demo hast. Und ja. Man kann sich die Hilfe von dort auch downloaden. .... huh und vor allem ist natürlich die preiswerte vollversion von bascom auch nicht schlecht. was ich nicht verschweigen will, ist natürlich, dass die vollversion // diese hab ich jetzt seit etwa 2 jahren // auch nicht mehr wirklich mitwächst. die kostenlosen updates sind prima .. aber bei neueren prozessoren als vor zwei jahren .. wird es doch immer wieder sehr merkwürdig, was da passiert. als neuere prozessoren fällt mir z.b. schon der mega88 im vergleich zum mega8 ein. da gibs manchmal sachen, wobei ich an mir zweifele. im ende lese ich dann den teil des datenblattes , der relevant ist und programmier die nötigen register in inline assembler. trotzden... schön dass es bascom gibt und schön, dass amn sich dann nach der eingeöhnungszeit einfach nicht mehr wundert .. sondern das problem analysiert und es // man ist ja auch selber gewachsen // einfach anders lösen kann. ohne bascom hätte ich wohl garnicht damit angefangen gruss klaus >>(dzt. hab ich eine Demoversion wo z.B. die Hilfe fehlt).
habe ebenfalls eine Demoversion (Version 1.11.9.1).
-Die Bascom-AVR Hilfe ist dabei!
ich kann nur nicht nachvollziehen warum man sich von einer Minderheitensprache wie bascom abhängig macht. zum einen hast du das Problem, mit neuer Hardware. Zum anderen hast du ein totales Problem mit anderer Hardware. (Dazu kommt der Preis) Wenn du irgendwann mal nen anderen µC verwenden muss, musst du die ganzen Bascom-Programme umschreiben. Wenn man es direkt in C schreibt, muss man nur die Hardwareabstraktion anpassen. hallo vlad, lass das doch lieber ! dadurch kommt doch das ganze thema durcheinander. deine erfahrung sollte dir gezeigt haben, dass jetzt alle auf den zug aufspringen. ja ja .. ich meine diese merkwürdigen c-ler. gruss klaus ich wollt ihm nur einen Rat geben, der ihm eventuell etwas Geld spart und zum anderen möglicherweise Arbeit. außerdem ist es nie verkehrt, wenn man ein wenig c kann. Bascom ist von recht eingeschränktem Nutzen. (weiß ja nicht, was er beruflich macht, bzw. vor hat berufllich zu machen) Aber ich gebe dir recht! das ist OT. und sollte woanders diskutiert werden. Gruß, Vlad
Gast
#1335960
>> Bascom ist von recht eingeschränktem Nutzen.
Eine reichlich unqualifizierte Aussage.
Denke ich kann C ein wenig und dennoch schätze ich die unkomplizierte
Programmierung mit Bascom. Versteh' wirklich nicht woher die abschätzige
Meinung kommt.
Das wirklich Wesentliche ist nicht das Werkzeug, sondern der mehr oder
weniger intelligente Kopf dahinter. Wenn ich mir manche Posts hier im
Forum anschaue, auch die unter C geschriebenen, kommen mir Zweifel, ob
diese zu Ersteren zählen sind.
Und ansonsten scheint mir Bascom Neuanfängern den Einstieg in diese
Materie sehr zu erleichtern. Daß da manches Merkwürdige rauskommt ist
auch klar und natürlich.
Wie steht's übrigens mit dem Programm des OP's ?
Gast
#1335974
>Fusebits hab ich bei Bodlev und Suto u. CKSEL0 gesetzt.
Da würde mich mal interessieren wie, was gesetzt wurde.
Bodlevel auf 4.3V bei 4.1V Betriebsspannung bedeutet
Dauerreset. Am besten mal Bodlevel auf 2.7V setzen
oder auch mal ganz deaktivieren.
MWS schrieb: >>> Bascom ist von recht eingeschränktem Nutzen. > > Eine reichlich unqualifizierte Aussage. Danke. > > Denke ich kann C ein wenig und dennoch schätze ich die unkomplizierte > Programmierung mit Bascom. Versteh' wirklich nicht woher die abschätzige > Meinung kommt. Ich meinte außerhalb des AVR-Hobbybastelerbereichs wirds dir nicht viel bringen. C ist universell. für nahezu jede Hardware/Os gibts c compiler. Einnicht zu unterschätzendenr Faktor ist auch: Wenn du Programmierkenntnisse in C im Lebenslauf vorweisen kannst wiegt das mit sicherheit mehr als Bascom Erfahrungen. > > Das wirklich Wesentliche ist nicht das Werkzeug, sondern der mehr oder > weniger intelligente Kopf dahinter. Das Werkzeug spielt eine ganz entscheidene Rolle! Es ist etwas anderes, ob du ein Produkt in C entwickeslt, was mit geringem Anpassungsaufwand auf den verschiedensten Harswareplatformen lauffähig ist, oder ob du für jede Hardwareplatform in einer speziellen Programmiersprache/Toolchain alles neu schreiben muss. > Wenn ich mir manche Posts hier im > Forum anschaue, auch die unter C geschriebenen, kommen mir Zweifel, ob > diese zu Ersteren zählen sind. wer sind erstere? und wer sind letztere? > > Und ansonsten scheint mir Bascom Neuanfängern den Einstieg in diese > Materie sehr zu erleichtern. Daß da manches Merkwürdige rauskommt ist > auch klar und natürlich. Was auf jeden Fall sehr gut ist, dass die Geräteinitialisierungen recht unkomplizirt gekapselt werden. Bei C ist da die ewige Register-Bit-Schuppserrei. Aber da könnte man sich auch nette Abstraktions-Header basteln. >>als neuere prozessoren fällt mir z.b. schon der mega88 im vergleich zum >>mega8 ein. da gibs manchmal sachen, wobei ich an mir zweifele. woher soll ein anfänger dawissen, ob er was falsch gemacht hat, oder der Compiler das pasiert bei c nicht, das ist (nahezu) immer der Programmierer schuld, da die compiler sehr ausgereift sind. und die AVR header sind auch sehr gut. > > Wie steht's übrigens mit dem Programm des OP's ? Richtig: Zurück zu Thema Hallo! Ich hab jetzt alles neu aufgenaut mit Attiny2313. Hab auf Portd.5 den Vorwiderstand zur LED welche permanent 4,1V Plus hat. ------------------------------------------------------ 'Bascom Projekt 'von Leopold Schilling '************************************* 'Alarmatrappe mit Led-Flasher ' mittels Attiny2313 ' weisse LED mit 67 Ohm Vorwiderstand ' Widerstand 10k an Pin1 '************************************* $regfile = "ATtiny2313.dat" $crystal = 3686400 $sim Config Pind.5 = Output Do Portd.5 = 1 Waitms 200 Portd.5 = 0 Waitms 2000 Loop End ------------------------------------------------------------- Hab die Fusebits auf Standard und alles bleibt finster. Ich weis keinen Rat mehr warum??? lg LS Hi, könnte es sein, das Du mit $sim das Waitms ausser kraft setzt? Wigbert Das $sim hab ich nur zum Testen gesetzt und wieder auskommentiert. Die LED hab ich Minus auf Minus permanent und Plus der LED mit Vorwiderstand auf das Portd.5 (oben hab ich das verwechselt geschrieben). lg LS Wenn ich simuliere geht der Zeiger zum 1. wait und bleibt dort stehen. Meine CPU vom PC geht auf 100% Auslastung? Ich kenn bascom nicht, aber das kommt mir komisch for: Config Pind.5 = Output sicher dass es Pind.5 und nicht Portd.5 oder Ddrd.5 heißen muss? AVR hat für IO-Ports jeweils 3 register: DDR[A|B|C|D] - hier stellt man ein , ob ausgang oder eingang (standard: eingang) PIN[A|B|C|D] - hier ließt man werte von auf eingang konfigurierten Pins aus auf Output konfigurierte Pins können meist getoggelt werden, indem man hier ne 1 an das entsprechende Bit reinschreibt. PORT[A|B|C|D] - hier schreibt man rein, ob ein auf ausgang konfigurerter Pin an oder aus sein soll. wenn ein Pin auf eingang steht, schaltet man hier die Pullups ein, oder aus. was heißt: $sim ? OK, Na dann zeig mal die Fusebits Wigbert Hallo! $sim heisst das beim Simulieren die wartezeiten übersprungen werden. lg LS schau mal hier: http://www.dieelektronikerseite.de/uC%20Ecke/Lections/Ports%20-%20Wenn%20der%20AVR%20steuert.htm da gibts ein Beispiel mit initialiserung: $regfile "m8def.dat" $crystal = 1000000 Config Portd = Output Portd.0 = 1 Stop Da steht PortD, nicht PinD. Edit: die Seite ist an sich auch recht interessant: http://www.dieelektronikerseite.de
Gast
#1337184
Remarks Simulation of a WAIT statement can take a long time especially when memory view windows are opened. The $SIM compiler directive instructs the compiler to not generate code for WAITMS and WAIT. This will of course allows faster simulation. When your application is ready you must remark the $SIM directive or otherwise the WAIT and WAITMS statements will not work as expected. When you forget to remove the $SIM option and you try to program a chip you will receive a warning that $SIM was used. Die FuseBits Low High Extended Lockbits 01100010 11011111 11111111 11111111 lg LS Ja, nee is klar, ein Destop-Bild mit den Fusebits sollte es schon sein nicht das ich Dir nicht glauben würde... Hast Du aus PinD.5 PortD.5 gemacht ? Wigbert
Gast
#1337196
Wenn Du Fuses auf Standard hast, dann läuft der 2313 mit Voreinstellung 1 MHz. Da der Compiler den $crystal = 3686400 Wert für die Vorberechnung der Wait.. verwendet, ergäbe sich so eine Verzögerung von 0.74 Sek auf High und 7.4 Sek auf Low. Deshalb wäre $crystal = 1000000 richtig. Das Programm scheint bis auf $sim richtig zu sein, $sim erzeugt anderen Code wie schon richtig erwähnt, ist nur für den Bascom Simulator zu verwenden. Zum flashen muss ohne $sim kompiliert werden ! Die Verwendung des Config für einzelne Bits eine Ports ist mit: Config Pind.5 = Output auch richtig, das steht alles in der Hilfe Datei. Aus Deiner Beschreibung geht nicht hervor, wie die Led angeschlossen ist, ein Pin der Led auf Minus, dann Widerstand, Widerstand an PinD.5 ? Leuchtet die Led wenn der Widerstand statt am Pin direkt an Minus angeschlossen wird ? Mit der $sim Anweisung drin sollte die Led halb so hell wie normal leuchten, aber scheinbar dauernd, da die entstehende Frequenz zu schnell für`s Auge ist.
Gast
#1337198
Korrektur: Leuchtet die Led wenn der Widerstand statt am Pin direkt an PLUS angeschlossen wird ? >Die Verwendung des Config für einzelne Bits eine Ports ist mit: >Config Pind.5 = Output >auch richtig, das steht alles in der Hilfe Datei. Bist du sicher? Meiner meinung nach beschreibt er hier das falsche register. Versuchs doch einfach mal mit Config Portd.5 = Output Hi, laut Hilfe kann wohl Pin als auch Port mit Output definiert werden. Da gibt es nur ja nur 2 Möglichkeiten. Aber es ist ein "krummer" Quarz definiert, und wenn der Takt intern erzeugt wird, deshalb mal die orginal Fuses, haben wir ein Konflikt Wigbert
Gast
#1337209
Ja, bin mir sicher, Beschreibung in der Bascom Hilfe: "You can also set a single port pin with the CONFIG PIN = state, statement." und auch als Beispiel in der Hilfe:
Aber im Zweifel: DDRD = &H20 oder DDRD = &B00100000 ach ja, eine Schaltung wäre echt hilfreich Wigbert Hab versucht etwas zu zeichnen lg.LS @Leopold Schilling (leopold) hm, stellt sich die frage: woher hast Du "$crystal = 3686400" , in der Schaltung kann ich kein Quarz erkennen. Wigbert
Gast
#1337279
Schaltung ist ok. Ist die Polung der Led richtig ? Leuchtet die Led wenn der Widerstand statt an Pin 9 an Plus gelegt wird ? Wenn Du bei den Angaben für die Fuses keinen Fehler reingehaut hast: > Low High Extended Lockbits > 01100010 11011111 11111111 11111111 dann läuft Dein 2313 mit internem R/C Oszillator 4MHz, da die DIV8 Fuse aktiv ist, hast Du eine tatsächliche Taktfrequenz von 500kHz, 3,68MHz wäre also ganz falsch. http://www.engbedded.com/fusecalc/ Das ist somit nicht mehr der Auslieferungszustand, denn der wäre 1MHz. Du musst dann: $crystal = 500000 in den Quelltext schreiben. Du kannst das Hex-File posten, dann schau' ich Dir auf Assemblerebene an, ob's wenigsten SW-seitig passt. Hallo Hab das Flasher.hex File angehängt! Wenn ich plus zum Vorwiderstand halte leuchtet die LED! Hab jetzt schon mit 1x Attiny13 2x Attiny15L und 3xAttiny2313 probiert! lg LS meine Geduld ist schon ziemlich am Ende Mein neuester Code; geht auch nicht! 'Bascom Projekt 'von Leopold Schilling '************************************* 'Alarmatrappe mit Led-Flasher ' mittels Attiny2313 ' weisse LED mit 67 Ohm Vorwiderstand ' Widerstand 10k an Pin1 '************************************* $regfile = "ATtiny2313.dat" '$crystal = 1000000 $crystal = 500000 $hwstack = 32 $swstack = 10 $framesize = 40 Config PortD = Output Dim Warten as Byte Dim Zuwarten as Byte Warten = 150 Zuwarten = 250 Do PortD = &B0010000 Waitms Warten PortD = &B0000000 Waitms Zuwarten . Loop End
Gast
#1337302
PortD = &B0010000 Na, dann häng die LED doch mal an PORTD.4. Hallo, um das Bascom-Programm zu kompilieren muss man so vorgehen: 1) Kompilieren (F7) 2) Programm auf den Chip schreiben (F4) Bist du sicher, dass dein Programm korrekt auf den Chip geschrieben wird? Hallo Ich verwende Bascom-AVR Demo Prüfe Syntax Compiliere(F7) Program chip(F4) dann gehen 2 Fenster auf in denen der Balken läuft während des Brennens das wars lg LS Als Programmieradapter verwende ich mysmartusb MK2 Ich kann die Fusebits auslesen Es wird der Progger und der Attiny erkannt
Gast
#1337338
>Wenn ich plus zum Vorwiderstand halte leuchtet die LED! Wenn Du das getan hast, als der Kontroller noch mit dem Vorwiderstand der LED verbunden war, dann hast Du die Betriebsspannung auf einen AUSGANGS-PIN gegeben. Das vertraegt der Kollege Kontroller nicht. Aendere mal die Zeile: PortD = &B0010000 in PortD = &B11111111 und schliesse die LED an einen anderen Ausgang an, um zu testen, ob der Portd.4 von und gegangen ist. MfG Paul
Gast
#1337347
Um dem Elend endlich mal auf die Spur zu kommen versuch die LED doch einfach nur mal einzuschalten. Am besten gleich alle Portd Pins schalten: $regfile = "ATtiny2313.dat" '$crystal = 1000000 $crystal = 500000 $hwstack = 32 $swstack = 10 $framesize = 40 Config PortD = Output Do DDRD = &B11111111 'Vorsichtshalber. Später evtl. wieder entfernen PortD = &B11111111 Loop End So, leuchtet das Ding jetzt endlich?
Gast
#1337356
Leopold, Dein Hexfile ist unbrauchbar, Grund ist daß Du in Bascom Einstellungen geändert hast und zwar so wie sie nicht gehören. Geh mal unter "Optionen -> Compiler -> Output" und nimm den Haken aus "Swap Words" raus. Denn damit werden Lower Byte und Higher Byte eines Words im Hexfile vertauscht, damit kann der Atmel dann nix mehr anfangen. Probier auch anhängendes Hexfile aus, ist auf 500kHz konfiguriert und sollte laufen.
Gast
#1337367
Hier noch der korrigierte Quellcode basierend auf Deinen Einstellungen der Fuses:
Und aufpassen bei den Pin-Zuweisungen und den Anschlüssen des Atmel, Portpins beginnen immer bei 0 und enden bei 7, wobei PinX.0 der erste und PinX.7 der achte Anschluss ist. Ein Beinchen daneben und Du kannst lange warten, bis etwas passiert. :D Hallo! Super das mit dem Swap Word war sichtlich die Ursache! Wenn ich jetzt die waitms von 2000 auf 50000 umstelle schreibt er mir Checksummenfehler! Wie krieg ich das in Griff. Ich möchte 1x aufblitzen und dann ca. 1 Minute bis zum nächsten Blitz warten! lg LS
Gast
#1337544
Na, dann ist's ja gut. Checksummenfehler ? Schau mal auf welche Zeile verwiesen wird, ob der Wert 50000 die Ursache ist. Bis 65535 sollte gehen. Bei mir kompiliert das ohne Probleme. Ansonsten nimm eine For/Next Schleife mit einem Waitms 1000 drin. warum benutzt du statt waitms nicht wait? wie jemand weiter oben schon angemerkt hat?
Gast
#1337552
> warum benutzt du statt waitms nicht wait?
He, he, stimmt, nicht aufgefallen, Bäume und Wald halt.
Hallo! Hab ein Erase gemacht und neu gebrannt; geht jetzt mit waitms 52000; die Wartezeit sind ca. 70 Sekunden! Das ist ok. Freu mich das es funzt! Schönen Abend und gute Nacht! Mir ist ein Stein vom Herzen gefallen! lg LS
Gast
#1337559
Danke. Wünsch' ich auch. Wobei 52000mS eigentlich 52 Sek sein sollten... >Wobei 52000mS eigentlich 52 Sek sein sollten...
jep, das heißt das die Compilerkonstante $crystal nicht mit der
tatsächlichen Taktrate übereinstimmt.
sie ist rnd ein viertel niedriger als der tatsächliche Takt.
Anschlüsse (siehe beigefügtes Bild): orange: UB (+) gelb: Miso grün: Reset blau: Sck violett: Mosi schwarz: Masse Hallo, habe heute eine Experimentier-Platine mit ATtiny13 gebaut (siehe Bild). -Der LED-Blitzer funktioniert ohne Probleme. -Hier der Bascom-Code: = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
ANHANG: ATtiny13 -Pinout. ANHANG: Parallelport SP12-Programmer (simple) verwendete Bauteile: 1 Schottkydiode "BAT43" mit nur 0.3 Volt Spannungsabfall in Durchlassrichtung 2 Widerstände 220 Ohm 1 Elko 22uF sehr haltbar sieht das aber nicht aus. geht aber auch noch einfacher mit nur 3 widerständen: http://www.dieelektronikerseite.de/uC%20Ecke/Lections/SPI-Kabel%20-%202%20Welten%20treffen%20aufeinander.htm Damit hab ich den Mega für meinen selbstgebastelten usb-ISP-Programmer programmiert. Hallo! Ich hätte noch eine kleine Zusatzfrage. Wieviel Stromverbrauch habe ich mit dem Attiny2313 und der weissen LED; bzw. wielange wird ein LiIonenakku mit 800mA reichen? lg LS dafür gibts datenblätter, schau da rein. Hallo Leopold, >>Wieviel Stromverbrauch habe ich mit dem At ... also der ATtiny13 (siehe mein Posting vom: 16.07.2009 23:14) hat folgenden Stromverbrauch: Stromverbrauch bei 5V: 2,6 mA wenn LED aus 3,4 mA wenn LED ein Dein Akku mit 800mAh würde (bei einem Durchschnitts-Strom von 3mA) 11 Tage und 2 Stunden halten. wie kommst du auf 0,8mA für die LED? >2,6 mA wenn LED aus Das ganze geht viel sparsamer (ein paar µA) das Haupt Programm besteht nur aus: Watchdog auf maximale Zeit (8sec) initialisieren und Interupt mode configurieren. (Datenblatt abschnitt 8.4) leere endlosschleife, Die Watchdog-ISR: die mitzählt und alle 7-8 mal eine sec. lang den Pin anschalten am ende der Routine in den power-down modus gehen Um das ganze noch sparsamer zu machen, den internen Takt auf 128 kHz fusen (und den CPU-Prescaler in der Main am anfang auf 256 stellen - weiß nicht ob das wirklich Strom spart). Vorsicht ich bin mir nicht sicher, ob man den mit 128kHz noch per isp programmieren kann. Edit : Den Strom im Power-Down kannst du fast vernachlässigen wichtig ist also nur noch der "An"-strom Ne normale LED braucht ca 20mA, der AVR mit 128kHz 0,2 + WDT. macht großzügig 21mA großzügig 25, da er ja zwischendurch für ein paar Takte aufwacht und auch im Schlaf ein wenig verbraucht 25 * 1/60 Dutycycle = 0,42 mA -> 800/0,42 -> 1900h = 79 Tage Wenn ich Fehler gemacht habe korrigiert mich bitte Edit: so funktioniert es doch nicht: der Power down muss raus aus der ISR in die mainloop hab das ganze mal aufgebaut. im anhang der Code. Mein Messgerät misst 5µA in der Zeit wo die LED aus ist. Wobei das das unterste Ende der kleinsten Scala (2000µA) meines 5€ Baumarktmessgerätes ist. Betrieben war er mit 5V, die FUses sind auf 4,8Mhz gestellt intern der höchste Prescaler eingestellt. Macht eine resultierende Frequenz von 18,750kHz -> das sollte im Tool als CPU-Frequenz eingestellt werden, damit die 1000ms Wartezeit funktionieren. Der Watchdogtimerfrequenz ist spannungsabhänig. Das heißt bei geringeren Spannungen muss man gegebeennfalls ein wenig experimientieren bis man eine Blinkfrequenz erreicht hat, die einem gefällt. Ich habe eine frage Ich habe mit dem Attiny13 ein lauflicht gebaut möchte aber mit einen Porti die Takt erhöhen wie geht das Das Ganze unter Bascom Ich bitte um Antwort Was ist Porti am Attiny13 ? Ich kenne nur portb.0 bis portb.5 Was ist die Takt erhöhen? Schneller durchlauf,mehr Pause ,etc. Nur bei konkr.Fragen kann man auch konkret antworten. Wie viele einzelne nacheinander leuchtente LEDs sollen angeschlossen werden? 4 oder 8 oder 10 oder 12Leds.
Gast
#4335129
Eberhard B. schrieb: > Ich habe eine frage > > Ich habe mit dem Attiny13 ein lauflicht gebaut möchte aber mit einen > Porti die Takt erhöhen wie geht das > > Das Ganze unter Bascom > > Ich bitte um Antwort Dann fang einen neunen Thread an und fladere nicht einen 6 Jahre alten. Und ansonsten: RTFM steht alles in der Hilfe vom Bascom Grüße MiWi Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|