Da ist es z.B. wichtig , das Divide clock by 8 auf OFF steht ==> Frequenze 8 Mhz : 8 = 1Mhz Systemtakt Bei Dir nicht der Fall , darum kannst alle Attiny erstmal nur mit 1 Mhz programmieren ==> $crystal = 1000000 Dann das Clock output disable. Da wird immer der interne Takt an einem Pin ausgegeben - unnötig, brauch man nicht Debug Wire , brauch man auch nicht am Pin.
Das ist immer das erste was ich prüfe ob alles richtig eingestellt ist , was mir auch zugleich sagt , das ich Verbindung habe und der Chip funktioniert.
Tja, .... das ist wohl in diesem Linux sehr sehr kompliziert :-(
In Bascom is das ja schon fast ein Kinderspiel ;-) Da ist die Übersicht auch wesentlich besser.
Ich sach mal so .... wenn ich Dir einen Code schreibe , setz ich (wie schon bereits zig mal erwähnt) , im Code den Satz der die Fusebits passend einstellt.
Im Grunde brauchst du eh nur 2 Einstellungen :
1. den jeweiligen Chip der NEU benutzt wird , 1x auf 8Mhz stellen und alle Ports frei geben warum soll man nur die halbe Leistung benutzen wenn ich den Chip ganz bezahlt habe , dann kann ich ne Picaxe nehmen
2. mal einen Chip auf extern Quarz ( 16 Mhz oder 20Mhz ) stellen , was aber eher bei den Atmega 32 und Atmega644 vorkommt oder beim Attiny 2313 wenn ich absolut exakt Frequenzen messen will
Wenn man sich mal doch wirklich vertan hat bei den FuseBits , weil ... ext. Clock , ext. RC Clock , ext. High , ext. Low, int. Clock ,int. RC Clock ,usw ..usw....usw... sollte man immer einen 1Mhz Oszillatorquarz zur Hand haben , dann kann mit diesem an Xtal1 den Chip wieder "zurück holen" und auf standart einstellen. Geht auch dies nicht mehr , gehts nur noch mit einem STK500 Board , was aber um/über 100€ kost. Im Zweifelsfall doch lieber die Finger von lassen :-(
Du hast ja Recht. Um zu testen ob man es verstanden hat und /oder Fehler sich versteckt haben , macht man erst extrem simple Sache. Da bietet sich so eine Blink-Blinki Sache natürlich an.
Auch möchte man sicherlich ein paar Funktionen testen. Nur , ... dann sollte man sich ggf. auch sinnvolle Tests ausdenken.
Ich könnte das derzeitge "Testprogramm" auch mit Proceduren schreiben oder mit Gosub ..... es macht aber keinen Sinn , als Test noch weniger.
Natürlich sollte man so wenig wie möglich mit GOTO arbeiten , das kann den Code oftmals sehr unübersichtlich machen. Aber man muss halt abwägen für welches Ziel ( egal wie simpel die Funktion ist ), welcher Befehl und Struktur am geeignetesten ist ?! Da immer pauschal zu sagen : neee, nur auslagern (Proceduren) is auch nicht immer die beste Idee.
Mit GOTO kann ich eine aktuelle Abarbeitung stoppen und anderweitig verzweigen lassen. Mit Proceduren oder Gosub unterbreche ich nur den aktuellen Vorgang um ihn später wieder aufzunehmen. Mit Timer kann ich zwar etwas aktuelles beeinflussen , habe aber da das Timing problem das es selten zeitnah ist.
Prima Kabelratte. Ich hab die Boards jetzt für 36 € zusammen bestellt , ..... gib mir einfach 15€ per Paypal ( uwe68.zierath@web.de ). Sollten dann ca. 01./02. Januar ankommen.
Da Naubaddi sich nicht zu äußerst , denke ich das er so ein Board nicht brauch. Dann müssen Kabelratte und ich das eben alleine bestellen . Was sagst Du Kabelratte dazu ?
Ich arbeite hauptsächlich mit dem Atmega8 und 8Mhz . Du stehst mehr auf die 8 Pin und den Attiny44 - alle samt mit lediglich 1MHZ ( bedingt weil Du Dich noch nicht mit den Fusebits auskennst )
Ich dachte ja erst das Du auf Grund Deiner Erfahrung ,in der Lage bist den Code eines Atmega8 mit 8Mhz selber in einen lauffähigen Code eines Attiny mit nur 1Mhz umzusetzen ? Wohl falsch gedacht , man irrt nie aus ...
Alle Codes die ich rausgebe , sind von mir vorher geprüft , probiert und 100% ok. (Sonst macht des auch wenig Sinn Codes rauszugeben ) Wenn es dennoch bei anderen Usern mal nicht klappt ist der "Fehler" immer bei den Usern zu finden.
Das mit dem TIMER hätte perfekt bei Dir geklappt wenn nicht Birnen mit Tomaten verglichen hättest.
Aber , Du hast ja jetzt eine lauffähige Version entwickelt und somit geht die Reise ja wohl weiter
Egal was ich mache keins Deiner Beispiel-Programme funktioniert bei mir, habe es auch auf Deiner Testplatine mit einem ATTiny44 versucht. Es wird einfach nicht zuverlässig eingeschaltet oder ausgeschaltet, mit etwas Glück funktioniert es manchmal.
Das ist leider schade , aber ich weiß ja auch schon ma garnicht wie Du die Fusebits hast , bei mir sind die ja alles andere als Werkseinstellung. Wenn ich den Code für 8Mhz (mein standart) schreib , Du aber alles Werkseinstellung hast (1Mhz) , passen die Pausen und das Timing so garnicht.
Ich denke Du mußt Dich erstmal damit beschäftigen was FuseBits sind , was die machen , wie man die einstellen kann. Sonst werden wir sicher nie auf einen Nenner kommen werden :-(
Windows ist auch für mich ein notwendiges Übel. Auch erst ab Win95 wirklich gebrauchsfähig geworden. Ich höre öfters das einige mit Windows so ihre liebe Mühe haben. Gut , andererseits sehe ich dann , das sie so gar keine Ahnung vom System an sich haben, alle Einstellungen noch so wie nach der Installation gelassen haben. Windows ist wie alle System nach der Installation so eingestellt , das mind. 8 Millionen Bürger mit arbeiten können. Is doch klar das so ein System nach erfolgreicher Installation nicht nach jedermanns Wünschen eingestellt ist. Hier fängt die Arbeit doch erst an. Sicher ist viel Balast und unnötig Kram dabei , aber alles ist abstellbar oder änderbar. Ich sach mal so , bis Win7 ist das System wunnebar nach eigenen Wünschen problemlos anpassbar und einstellbar, so das man da wunnebar zurecht kommt . Auch ein Windows brauch natürlich Pflege, wie ein Auto , Kaffeemaschine , Waschmaschine , ect. Wer dies alles strinkt ignoriert ...der muss sich halt mit .... anderen Exoten rumschlagen ;-)
abgesehen vom Wermutstropfen daste alles auf Linux gemacht hast schon schöne Sachen. Mein Bruder ist Programmierer bei Sony , ich hatte aber dazu weniger Lust habe diverse FiBu Software und Tools an den Mann gebracht. Da Gambas ja dem VB ähnelt und Bascom dem VB .... dürfte Dir der Einstieg in den AVR ja doch recht leicht fallen
Gut , Basic is Basic , kannste eins , kannste auch andere , mussu nur die spezifische Syntax bissel erlernen. Dann könn wa ja gespannt sein auf interessante Projekte von Dir
Du , ich will Dir hier ja keine Richtung vorschreiben oder vorgeben , jeder muss seinen Stil finden. Wir backen ja jetzt noch sehr sehr kleine Brötchen . Dadurch das ich schon (meiner Meinug nach ) alles mal gebastelt habe was mit Picaxe , Atmel und Basic so geht , habe ich ja doch ein wenig Erfahrung vorraus , gelle .
Ich denke wir warten ab was Du noch an Projekten vor haben wirst
Kannst ja bei Zeiten mal auf Youtube, Dich auf meinen Kanal umschauen : BoomBoomMagic2010 dann siehst einen Auszug was man noch so alles machen kann ;-)
Wenn ich zwischen jeder If eine Abfrage nach dem Taster mache ist das weit schneller , als wenn ein Timer erst seine Zeit ablaufen muss , seine Reaktion zu einer Aktion ( ein=1) machen , diese von einer fremden Schleife erfassen muss.
Is ja nicht so das die beiden Aktionen synchron laufen , sonder sie müssen sich wie zwei Blinker zufällig mal treffen. Während bei einer IF mit Abfrage KANN garnicht anders reagiert werden als SOFORT ein STOP.
Das is ja wie beim PC . Mein ATARI Falcon , läuft heute noch 10x schneller als ein i7.
Warum ? Ein ATARI ist kein Bausteinsystem wie ein PC. Da ist ein Teil auf das Andere abgestimmt. Man kann ihn nur komplett neu kaufen wenn man es schneller haben will.
Beim PC läuft die CPU mit Takt ' x ' , die Grafikkarte mit Takt ' y ' , der Speicher mit Takt ' z '
verschiedene Takte die dann irgendwann 1x synchron ticken. Darum , is zu langsam ? Kauf ne schnellere Karte , Speicher , CPU ... Sie werden dadurch immer noch nicht synchron , aber die Zeit bis sie synchron laufen is 2% kürzer.
Aber wir sind ja erst am Fuss des Berges, der Aufstieg is ja noch laaaaang
Aber sach mal , Du hast mit Gambas schon was gemacht ? Ich hatte mir auch mal vor Jahren Ubuntu und Gambas installiert um unseren Stefan mal ein bischen auf die Sprünge zu helfen das zu lernen, ...... aber er war leider sehr lernresistent und arg talentfrei in Sachen Programmierung :-( Gambas is ja die kleine Schwester in Linux zu VB unter Windows ;-)
Nungut , ich halt mich dann mal etwas zurück .....
.... aber .... einen kann ich mir nicht verkneifen :
WENN du fragst : If ein=1 then ...
dann ist ein ja 1 ! interessant daste dann noch mal fragst : If ein =1 ... und nochmal : If ein=1 ... und nochmal : If ein=1 ... und nochmal : If ein =1 ... und nochmal : If ein =1 ...
Natürlich geht es hier anfangs noch so üüüüüberhaupt nicht um professionelle ProgrammCodes und suuuper Projekte. Ist ja auch schön das man gern alles mal ausprobieren will. Aber man sollte sich dennoch am Anfang immer fragen , ob man die oder die Funktion wirklich brauch ? Ich mein , der AVR hat noch weit mehr drauf , so gesehen ;-) Aber gleich mit Raketen auf Spatzen schiessen ??
Man läuft da Gefahr sich einen Stil anzugewöhnen , der es einem bei wirklich schweren Sachen arg problematisch macht.
Bestes Beispiel ist : Damals mit dem ATARI programmieren. Da mußte man mit 1-4MB und 10 MB Festplatte Sachen realisieren wo man heute sagt : 1GB ? 2GB ? Kein Problem , packen wa ne Schippe mehr drauf .
Wenn der Code jetzt bei Dir läuft - ok. Ob der jetzt so optimal ist , ist eine andere Sache . Hauptsache du hast den Umgang mit dem AVR Stück für Stück jetzt ein bischen drauf.
Zitat von Naubaddi im Beitrag #47der MF1 ist aus Resten gebaut und das waren alles Reste die in der Kramkiste so rumlagen
Da hat wohl jeder seine eigene Kramkiste aus die er schöpft
Wenn Du mit TIMER arbeitest , kommt es ja extrem auf das Timing an.
Da da die Pausen und das Zusammenspiel genau passen müssen , immerhin laufen 2 Aktionen unabhängig von einander , mal eben ein Beispiel mit TIMER und Mega8 :
' TIMER Zeit auf 200ms eingestellt Config Timer1 = Timer, Prescale = 64
LED1 alias Portb.0 LED2 alias Portb.1 LED3 alias Portb.2
Taster1 alias pinc.3
dim Check as byte dim w as byte Const Timer1_Preload = 40536
Enable Timer1 Timer1 = Timer1_Preload On Timer1 Isr_Timer1 Enable Interrupts
Do
if check=1 then toggle LED1:waitms 100 toggle LED2:waitms 100 toggle LED3:waitms 100 else LED1=0 LED2=0 LED3=0 endif
loop end
Isr_Timer1: Timer1 = Timer1_Preload
if Taster1=1 then waitms 100 if check=0 then check=1 else check=0 endif endif
Return
Kann man machen ..... MACHT man aber nicht - nicht bei sowas.
Da hier der TIMER1 nun (unnötig) beansprucht wird , steht dieser für andere Zwecke z.B nicht mehr zur Verfügung. Das kann IR , Servo , LCD ,Tastatur , I²C,SPI, weiß der Geier noch alles sein . Man hat noch Timer0 und Timer2 , aber dieser Timer1 ist ein 16Bit Timer und ziemlich wichtig.
Is schon gewaltig daste für Dein MF1 3 Stk Picaxe nehmen mußt , das könnte nen mega8 im Standgas ... aber daste jetzt nen Timer nehmen willst .... chuuih , na da bin ich mal gespannt waste da so zusammen bastelst
Also so wie das jetzt hast ist schon ............ mutig, aber jetzt auch noch mit TIMER ???
Hättest auch selbst drauf kommen können , hab das mal eben mit nem Mega8 getestet , ausnahmsweise ... der Taster war nicht entprellt - und schon läufst mit dem Nachbarn ( sag ja , kleiner Gedankenfehler)
Ist aber echt nett das Du mir erklärst wie ich so ein Programm aufbauen muss , danke
Durch den Befehl Gosub Taster_abfrage hast du dein Programm um 10% verlangsammt ! Ist bei dem Projekt nicht wild .......wirst Du ggf. mal später selber feststellen das das ne ganz ordentliche Bremse ist. Aber .... ich programmiere ja noch nicht so lang
Für diesen Popelkram hol ich noch nicht mal nen Board hervor .
Ich mach das alles was ich bisher geschrieben habe an Code lediglich aus dem Kopf , rein imaginär ! Natürlich kann es sein , da ich sowas schon über 5000x gemacht habe das ich aus Flüchtigkeit vielleicht etwas übersehen habe .... kann ich mir eigentlich nicht vorstellen ...
aber ich sach mal so .... ein bischen mitdenken , testen , üben , probieren .... ich geb ja nur die Richtung vor , keine Komplettlösungen , gelle wie heißt es doch so schön : learning by doing
nur wenns gar nicht mehr weiter geht , dann spring ich wieder ein.