Ein kurzer linksammel und schnell drüberlaern thread,.. g Also ich möchte mit einem ATmega32, einen ENC28j60 IC, einer SD-card ein kleines system zusammenbasteln,.. Da ich mit einem Bootloader nix zu tun hatte, kommt hier die frÄg: Bootloader loaded den kernel,.. wie muss nun der kernel aussehen (aufgebaut sein) das ich ein ,in einem speicherbereich abglegten, prog aufrufen und ausführen kann,.. gibts dazu irgendwo n link wie ich das aufzubauen hab?? wie sehen die schnittstelle zwischen programm und vom kernel verwaltete peripherie aus etc?? grüüüße
Will mir den keiner antworten?? sooowas wie: "hmm es gibt doch schon Nut/OS" oder "probiers doch mal pico]OS, das filesystem musste dir bei Ulrich radig abgucken,.." oder soooo??? andere frage, klingt zwar a bissl blöde aber kann mir jemand sagen wodurch sich die einzelnen kernel gänzlich unterscheiden? mfg
klingt fuer mich irgendwie so: soll ich in mein fahrrad besser diesel oder super tanken?
@Kai: Meinst Du mit "kernel" ein (RT-)OS ? Bitte versuche Deine Gedanken so auszuformulieren, daß logische Einheiten entstehen, die einem erkennbaren roten Faden folgen (denn ich werde aus Deinem Gebrabbel partout nicht schlau).
hmm sry @all wenn ich mich undeutlich ausgedrückt habe,.. @antworter: ja @veloist: wasserstoff ;) mit system meine ich ein eingebettetes system, mit rs232, und speicher,.. meine erste frage(n) bezog sich auf die software: welches RT OS? kann ich das selber schreiben? welche kommponenten beinhaltet ein (dieses) OS? wenn der kernel (RT-OS) läuft, wie ruft ein programm auf und führt es aus? wie kommunitiert OS und prog?
Wozu brauchst Du denn einen Kernel ? Beschreib mal, was Du mit dem AVR eigentlich machen willst. Die übliche Programmierung eines MC ist ne Main-Loop ganz ohne irgendwelchen Schnullifax. Dazu ist in 32kB auch nicht so richtig Platz, wenn daneben ja noch eine Applikation mit rein soll. Peter
@Kai Scheddin Hey... das kann man ja lesen ;-) Ein RTOS wird typischerweise benutzt, wenn man so viele nebenläufige Aufgaben benutzt, daß ein manuelles "anspringen" der Funktionen zu aufwändig wird. Mit einem RTOS gibt es die Möglichkeit der Task-/Thread-Wechsel - es wird also (sofern time-slicing benutzt wird), laufend zwischen den Aufgaben hin-und-her-gesprungen (mit Registersicherung, Stack-Frames usw.), so daß jede mal rankommt. Bei mir bestand noch nicht die Notwendigkeit, ein solches zu benutzen, obwohl ich schon durchaus größere Projekte gestemmt habe... ...bevor Du eines einsetzt, solltest Du genau überlegen, ob es mit Interrupts allein nicht doch zu lösen ist... http://www.freertos.org/ http://barello.net/avrx/ Nut/OS RTOS
@ peda & GAST: auf dem ATMEga32 soll als webserver dienen zusätzlich soll der Webserver eine/mehrere Application (á la compiled CGI) aufrufen können, die auch zugriff auf die perepherie/PORTS haben, die CGI's sollen via POST uploadbar sein wegen dem Fehlenden Platz: da dachte ich an eine SD Speicherkarte (Ulrich Radig &CO) gibt es da schon andere lösungen ? danke g
Beim AVR ist es unmöglich Programmcode aus einem externen (oder internen RAM EEPROM) Speicher zu laden und aus zuführen.
Das stimmt nun hinwieder nicht. Der Bootloader kann das. Allerdings nicht unendlich oft. Fuer'n CGI wuerde man's nicht machen. Pflorz
@Michael & Pflorz:
Also mit SPM kann ich ausführbaren Code ausm datensegment auslesen und
in den flash legen,..
>Beitrag "SPM AVR"
Das währen dann bei 1000x zugriffe pro Tag gerade mal eine Lebensdauer
von 100 Tagen,..
dann gäbe es doch noch die interpreter variante?
also man interpretiert den 16bit opcode
á la
1111 01kk kkkk ksss =>brbc s,k
wobei dann ja k relative pos vom offset, dann springt der dateizeiger
dahin,...
wenn ich mich nicht verzählt habe gibt 110 befehle für den ATmega32,...
das wären rund 6 zeilen pro befehl,.. is zwar heftig aber dürfte doche
gehen oder?
mfg
Also wenn ich mir schon einen Interpreter bauen müsste, dann würde dessen Sprache ganz anders aussehen als der Maschinencode eines AVR.
Klar geht das mit dem Interpretar, aber warum möchtest Du den AVR Befehlssatz interpretieren? Bau Dir doch Deinen eigenen. Gruß, Feadi
ich denke es ist schwieriger ein klartextinterpreter zu basteln als den/ einen precompiled code zu lesen und auszuführen, da der befehlssatz ja eindeutig ist. Ausserdem dürfte ein klartextinterpreter ziemlich groß sein (für den ATmega). Aber zu dieser art interpreter (wenn man das an dieser stelle sagen darf) kann man noch zusätzlich kontrollstrukturen einbauen z.B.: darf das prog auf diesen register zugreifen? u.Ä. eine virtuelle speicher zuweisung wäre auch möglich, das prog denkt dieser greift gerade auf $60 zu,. da dieser, im jetzigen beispiel, aber von einem anderen prog reserviert wär, hat er in wirklichkeit einen anderen speicherbereich,.. ich glaube tatsächlich wir kommen in die nähe eines eigenen OS freu morgen abend fange ich mal damit an das grob zu strukturieren,.. grüüße
"Multitasking" und Virtuelle Speicherverwaltung auf dem ATMega32? Bei 32kByte Flash und 2kByte RAM? Ist das nicht wie mit Kanonen auf Spatzen zu schießen? o_O Hast Du eigentlich schon mal das Datenblatt vom ATMega32 angeschaut? * Thema Bootloader, Auszug aus dem Datenblatt, erste Seite: – Optional Boot Code Section with Independent Lock Bits In-System Programming by On-chip Boot Program True Read-While-Write Operation Der Bootloader ist somit ein ->optionaler<- Code. Man sollte allerdings bedenken, daß die Operation "SPM" ausschließlich aus dem Boot Segment funktioniert. Bei Deinem Vorhaben müßte somit irgendwie sichergestellt werden, daß jedes gewünschte Update einen Reset auslöst damit der Bootloader überhaupt gestartet werden kann. * Thema Kernel: Wie schon Peter Dannegger geschrieben hat. Wozu? Der ATMega ist ein kleiner Mikrocontroller, da braucht man kein vollständiges Betriebssystem und/oder Applikationen. Der AVR kann bedingt durch seine Architektur nur Code aus dem Flash ausführen, nicht aus dem RAM. Will man das, so sollte man eine andere Controllerfamilie verwenden. Es gibt eine Main-Schleife, die "Applikationen"/"Programme" sind als Unterfunktionen ausgeführt. Man bedient sich der Timer und Interrupts zur Triggerung der Aufgaben. * Thema Webserver und ENC28j60: Schon mal gesucht? Beitrag "winziger Webserver mit enc28j60+mega32" Viele Grüße
Kai möchtest Du etwa die 'Nachteile' des AVR's umgehen, indem Du einen virtuellen AVR in den (echten) AVR programmierst? Das hätte dann den Vorteil, dass man den virtuellen AVR z.B. mit WinAVR, in C, programmieren kann. Aber interpretierter Maschinencode ist um den Faktor 100-500 langsamer als direkt ausgeführter Code. Dann wünsche ich Dir noch viel Erfolg, und halte uns auf dem laufenden.
Kai Scheddin wrote: > ich denke es ist schwieriger ein klartextinterpreter zu basteln als den/ > einen precompiled code zu lesen und auszuführen, da der befehlssatz ja > eindeutig ist. Ausserdem dürfte ein klartextinterpreter ziemlich groß > sein (für den ATmega). Oh. Klartext würde ich nicht machen. Virtuelle CPU definieren, Compiler dafür schreiben. Virtuelle CPU als Stackmaschine ausführen. Ev. würde ich sogar reinbeissen und Forth lernen. Kommt drauf an wie weit du das CGI treiben möchtest.
@nop & Peter: >Wozu? Ich habe hier schon mehrmals in verschiedenen threads gesehen das leute code ausm sram aus den unterschiedlichsten gründen ausführen möchten,.. @nop: >webserver enc Jo habe ich mir schon angeschaut,.. sind ein paar coole projekte dabei,.. @Feadi: >Vorteil das man den virtuellen AVR in C proggen kann Jo und auch in ASM und bascom,.. >100->500 mal langsamer Ja,.. wenn die cmp routinen aller befehlsätze direkt hintereinander ausgeführt werden schon,. Ich denke man kann das aber mit Optimierung den teiler auf ca. 50 reduzieren (so grob geschätzt 7 bit zu vergleichen mal (compare + brne max cycle)=7*(1+2)=21 dann noch den source rund 50) d.h.: ein ATmega32 mit 16MHz wäre dann ca.: 0.32MHz 'schnell' @Karl heinz: >Virtuelle CPU definieren jo,. da könnte man noch zusätzliche 17 asm befehle einführen (der AVR hat ja 110?) die das ganze dann ein bisschen schneller machen als 0.32MHz,.. das könnte sich zum beispiel um spezial befehle für die peripherie handeln >compiler dafür schreiben jaaaa,.. für asm währ das machbar,. oder per macro ein zwei neue befehle zaubern,.. (z.b.: .MACRO kai .db 0b1111,@0,@1 .endmacro kai 0xf,1) > wie weit du das CGI trieben möchtest naja meine bisherigen cgi's waren mit c compiliert,... ich schreib euch heute nachmittag nochmal wie die virtuelle cpu ungefähr aussehen soll,.. etc danke und grüüße an euch
Wenn man unbedingt externen Programmcode ausführen möchte, sollte man in den saueren Apfel beissen, und sage-und-schreibe +5€ für einen ARM7 ausgeben... Der kann Code direkt aus dem RAM ausführen, und erspart einem oben angedachte Arbeit für eine virtuelle Maschine. ...meine 0.02€
Kai Scheddin wrote: > Ich habe hier schon mehrmals in verschiedenen threads gesehen das leute > code ausm sram aus den unterschiedlichsten gründen ausführen möchten,.. Ich kann mich nicht erinnern, daß dieses Ansinnen hier mit relevanter Häufigkeit gepostet wurde. Und daß dafür auch sinnvolle und nachvollziehbare Gründe genannt wurden. Eher, daß vor dem Posten wenig über den Sinn nachgedacht wurde, also mehr so als lustiges Feature ohne praktischer Notwendigkeit. Ein Programmloader für SRAM ist aber überhaupt nichts, was einen Kernel oder OS benötigt. Dann sollte man aber auch Architekturen nehmen, die Code-SRAM unterstützen. Z.B. der DS80C410 ist dafür gedacht (interner Ethernet-Loader): http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3609 Peter
gut ich habe mir einen sample vom ds80c400 bestellt,.. mal gucken wann dieser hier ist,.. solange mach ich mal weiter g nett ist vor allem die keil c libary, die sehr umpfangreich ist,..
http://www.jogis-roehrenbude.de/Leserbriefe/Erhards_Scope-Clock/HS_ScopeClock.htm#Programmierung ich habe leider ansonsten keine minimalschaltbilder für den ds80c400 gefunden, hier ist das aber gut für den 80c420 aufgeführt,... >Ein Programmloader für SRAM ist aber überhaupt nichts, was einen Kernel >oder OS benötigt. ne das nicht aber der nächste schritt wäre doch gleich ein memory management und software interruptmanagment(bios) reinzubasteln, da rückt doch ein os sehr nahe,.. >Dann sollte man aber auch Architekturen nehmen, die Code-SRAM >unterstützen. Z.B. der DS80C410 ist dafür gedacht (interner >Ethernet-Loader): ja gut, das hat man ja nicht gleich zur hand g
Wie dynamisch soll der Server sein? >Das währen dann bei 1000x zugriffe pro Tag gerade mal eine Lebensdauer >von 100 Tagen,.. Alle paar Stunden eine neue Software reinbrennen? Warum?
die idee war ja programme die extern gespeichert sind zur ausführung zu bringen, da war einmal die methode des selbst flashen, aber nach obiger rechnung hält dann das ganze nicht mal ein jahr,... also interpreter,...
>die idee war ja programme die extern gespeichert sind zur ausführung zu >bringen, da war einmal die methode des selbst flashen, aber nach obiger >rechnung hält dann das ganze nicht mal ein jahr,... >also interpreter,... Da müssen die Programme ja mächtig komplex sein, dass sie so groß sind. Im Regelfall ist ein µC-basierter Webserver ein Sklave, der sich mit irgendwelchen simplen Aufgaben beschäftigt. Diese Aufgaben sind in der Regel auch noch mit der Hardware um den Controller herum vorgegeben. Ein Mikrocontroller ansich ist ein recht dynamisches Gebilde, aber sobald er in eine bestimmten Hardwareumgebung eingebunden ist, ist er bis auf eine Parametrierung ziemlich festgelegt. Wieso können die Programme nicht gleichzeitig im Controller-Flash liegen? Man muß sie ja nicht alle benutzen. Ein Befehlsinterpreter wird dir vermutlich auch nicht die Butter vom Brot in Sachen Geschwindigkeit nehmen (da gab es mal eine JAVA-Portierung auf den AVR... schön, dass es sie gibt...). Vielleicht sehe ich das zu "schwarz-weiß", aber µC-basierte Webserver ändert man nicht 100000 Mal.
jo, der code zur generierung des dynamischen html ist nicht gerade klein,... allein eine 'roh' cgi ist 9kb groß,...
>allein eine 'roh' cgi ist 9kb groß,... Und warum willst du mit sowas einen AVR quälen? Hast denn schon einen AVR-Webserver zum Laufen gebracht? So mit TCP-Stack und so? Das kommt mir irgendwie wie der Zweitprüfer bei mein Kolloquium vor: Der wollte auch nicht glauben, dass es Webserver in der Grösse eines 2-Euro-Stücks gibt. Die natürlich sehr undynamisch sind, aber ihre Aufgabe sehr schön erledigen. Damit will ich eigentlich nur das Gleiche wie oben ausdrücken: Son Quatsch!
>Und warum willst du mit sowas einen AVR quälen? naja,.. einen anderen µC hatten wir hier noch net zur hand,.. da dieser flexibel ist, und es schon ein paar projekte wobei avr'S als webserver, und an avr's sd memory cards angeschlossen wurden,.. ergab halt eins plus eins zwo,.. die alternative wie zum ds80c410 ist mir bis heute ja auch noch unbekannt gewesen schäm hier nochmal eine os die auch auf 8-bit µC's läuft,.. http://www.nilsenelektronikk.no/neproc.html ich bastele mal weiter am interpreter,... grüüüße
jo,.. ich habe hier mal groben asm satz wie ich mir das ungefähr vorstelle,, muss jetzt los,.. ich bin morgen wieder doa,.. greetz
habe jetzt über die paar funkt. jeweils eine beschreibung eingefügt,.. hier eine davon: ;in r16,r17 is the executable code stored, VPC points to it (relativ) ;example hex code 0F 70 is 00001111 01110000 swaped 01110000 00001111 ;andi opcode is 0111 KKKK dddd KKKK K-> 00001111=> 128 d-> 0000 =>r16 ; ==> andi r16,0x0f oh bei ein paar routinen hatte ich vergessen das die regs ja erst ab r16 anfangen, das habe ich ausgebessert ich habe den source noch um ORI,SBR ergänzt, bei rjmp bin ich hängen geblieben da ich mir gerade nicht sicher bin wie das mit dem wertebereich -2k<=K<=2K war,.. ich habe das noch so im kopf das -1=0xFFFFFD ist die sortierung (eine übersichtskizze als jpeg beigelegt) braucht maximal 20 cycles (die ersten 4 bit) die emulation eines cpi befehls dauert 14 cycles, mit VPC, VSP, VSREG, VREG braucht 38 cycles (bitte dazu source code ansehen) das sind schon mal 58 kommt das laden des 2byte großen code's ausm sram oder eeprom dazu werden's nochmal ca. 40 also sind wir jetzt bei ca 100 cylces es wär nett wenn ihr mich auf semantische fehler hinweisen würdet,.. mehr augen sehen mehr,.. grüüüße
Beschreib einfach mal verbal (mit Worten), was der Code überhaupt machen soll und wozu das nütze sein soll. Hast Du schon mal den IJMP-Befehl gesehen (wegen dieser komischen RJMP-erei) ? Peter
ijmp ; Jump to routine pointed to by r31:r30 sagt ja schon allet,.. rjmp ist aber ein relativer jmp der von der momentanen position +- k springt,.. rjmp-erei, meinst du bei der sortierung/auswahl? >Beschreib einfach mal verbal (mit Worten), was der Code überhaupt machen >soll und wozu das nütze sein soll. Ich wiederhole es gerne g virtualisierung des AVR befehlsatzes,.. der code gleicht den hexcode mit dem gängigen befehlssatz ab, und führt diesen virtuell aus. ich habe einen virtuellen SREG, einen virtuellen PC und einen virtuellen stack pointer sowie virtuelle register die alle im sram liegen ----- zitat feadi: >Kai möchtest Du etwa die 'Nachteile' des AVR's umgehen, indem Du einen >virtuellen AVR in den (echten) AVR programmierst? >Das hätte dann den Vorteil, dass man den virtuellen AVR z.B. mit WinAVR, >in C, programmieren kann. ---- das sortierungs verfahren ist zwei beiträge über diesen im anhang skiziert. Hier ein beispiel der virtualisierung: >.equ Vsegment=$80 Virtuelles segment ist hier in dem beispiel statisch, das ist der offset im sram ab welchem der head anfängt >;offset head >; 0-1 VSTACKPOINTER HIGH-LOW >; 2 VSREG >; 3-5 VPC max prog size 16Mb >; 6-38 Virtual registers >;ANDI & cbr statement >low14151607: ;0111 sprungmarke, wenn die ersten 4 bit 0111 sind, dann ist der auszuführende befehl ANDI oder CBR >;example: >;r16=70 ,r17=0F >;hex code: 0F 70 is 00001111 01110000 swaped 01110000 00001111 >;andi opcode is 0111 KKKK dddd KKKK K-> 00001111=> 128 d-> 0000 =>r16 >; ==> andi r16,0x0f (andi Rd,k) das beispiel erläutert grob wie der hexcode zu interpretieren ist >ldi r19,$00 >mov r18,r17 >andi r18,0xf0 >swap r18 in r18 liegt nun der wert des zielregisters (z.b. 0000 für r16) >;register starts @ r16 so r18+16(15)+6offset >ldi r20,0x15 >add r18,r20 wie da steht und im obigen beispiel aufgeführt, ist dddd=0000 so ist der register 16 gemeint, da ich die position der virtuellen register berechnen muss addiere ich 0x0f + 0x05 zu >addw r27,r26,r19,r18 ; calculate relative pos, Rd in XL und XH liegt das offset vom header, auf diesen wird nun die register startaddresse und die registernummer addiert >mov r19,r17 >mov r18,r16 >andi r19,0x0f >andi r18,0x0f >swap r18 >and r19,r18 die low bit von r17 werden zu highbits geswappt und mit den lowbits von r16 kombiniert und in r19 gesichert nun hat man k. >push r16 im realen stack sichern >ld r16,X >and r16,r19 ;->andi >st X,r16 hier wird der wert k und der wert aus dem register ge'and'et (doofes wort), und wieder auf die virtuelle register addresse zurückgesichert >ldi r26,low(Vsegment+2) >ldi r27,high(Vsegment+2) >ldi r16,SREG >st X,r16 sicherung des sreg ins virtuelle sreg >ldi r26,Vsegment+5 >ldi r27,Vsegment+4 >ld r16,X >ldi r17,1 >add r16,r17 >st X,r16 sowie incrementierung des virtuellen programm counters >pop r16 >jmp ende >;ENDANDI&CBR gut durch diese beschreibung sind mir auch ein paar kleine fehler aufgefallen die ich hier gleich beseitigt habe,( ins prog muss es aber noch rein) grüüße
Kai Scheddin wrote:
> rjmp-erei, meinst du bei der sortierung/auswahl?
Ja genau.
Mit IJMP + Sprungtabelle ist das codesparender und vor allem viel
übersichtlicher.
Peter
ich habe darüber ein bisschen gegrübelt,.. wegen der übersichtlichkeit, ja aber das ganze würde dann aber bis zu 4 cycles mehr verbrauchen oder? bei mir springt er von einer entscheidungsmöglichkeit zur anderen bis dieser in 4 schritte am ziel ist,..
Kai Scheddin wrote: > ich habe darüber ein bisschen gegrübelt,.. wegen der übersichtlichkeit, > ja aber das ganze würde dann aber bis zu 4 cycles mehr verbrauchen oder? Naja man könnte tricksen, indem man die Sprungtabelle aligned. Dann ist man in 7 Zyklen fertig. Mit Deiner Variante sind es aber 12..16 Zyklen.
1 | .nolist |
2 | .include "m16def.inc" |
3 | .list |
4 | |
5 | ;input: index = zl.7 ... zl.4 ;upper 4 bits |
6 | |
7 | jumper: |
8 | swap zl |
9 | andi zl, 0x0F |
10 | ldi zh, high(jumptable) |
11 | ijmp |
12 | |
13 | .org (pc + 0xff) & 0xFF00 ;table alignment |
14 | |
15 | jumptable: |
16 | rjmp m0 |
17 | rjmp m1 |
18 | |
19 | |
20 | m0: |
21 | m1: |
Peter
mit mov r30,r17 sinds 8 g danke peter freu das mit dem pc+0xff bring mich bloß gerade ein bisschen zum grübeln,. der programm counter ist doch dynamisch? .org weißt doch statische addressen zu? grüüße
Kai Scheddin wrote: > das mit dem pc+0xff bring mich bloß gerade ein bisschen zum grübeln,. > der programm counter ist doch dynamisch? .org weißt doch statische > addressen zu? Implizit ist immer ein ".org 0x0000" am Anfang, d.h. nach dem Assemblieren hat jeder Befehl eine bestimmte Adresse und ist nicht mehr verschiebbar. Peter
jo das mit dem .org 0x00 kenn ich ja,..
was mir unklar ist das :
>pc + ..
wieso >pc?
mfg
PC is der PROGRAM COUNTER des Assemblers beim assemblieren, NICHT das gleichnamige Prozessorregister! Sozusagen die laufende Adresse, in die die einzelenen Befehle geschrieben werden. Kommt nun der Assembler an die Stelle .org (pc + 0xff) & 0xFF00 ;table alignment macht er genau das, was dort steht. Damit ist das Ganze dahin gehend automatisiert (=dynamisch), als dass man sich nicht per Hand um die Adresse kümmern muss, wenn man vor dem Label noch Code einfügt. Das macht der Assembler bei jedem neuen Durchlauf allein. MFG Falk
ok jetzt habe ich kapiert wieso noch ein .org dazu muss,.. sonst liegt
bei
>ldi r31,high(jumperlabel)
r31 nur der offset 0x00
k,..
Wenn Dir noch 2 Zyklen mehr nichts ausmachen, geht auch ne 16 Bit Subtraktion und die .org Anweisung entfällt. Peter
Hi @ all, im anhang findet ihr eine funktionstüchtige asm file, die ich mit dem avr studio debuger (cooles teil muss ich mal sagen) zewcks simulation durchlaufen lassen habe. es funktioniert: (mit 64 cycles) ANDI CBR RJMP SUBI SBR ORI TST wär nett wenn ihr noch ein statement dazu da lasst,.. grüüße
heute habe ich die sec sez sen sev ses seh set sei clc clz cln clv cls clh clt cli befehle dazu gepackt,.. sie anhang grüüüße
sooo,. da ich so guter laune war habe ich noch
mov,and,eor,or,ldi
dazu gepackt,
das Vsegment nun dynamisch in r14,r15 gelegt, und die register r18,r19
für die 32bit obcode schon mal definiert
es enthält also nun folgende befehle:
mov,and,eor,or,ldi,sec,sez,sen,sev,ses,seh,set,sei,clc,clz,cln,clv,cls,c
lh,
clt,cli,andi,cbr,rjmp,subi,sbr,ori,tst
ca 78 cycles habe ich bei mov gemessen,..
diese version ist noch ungetestet,.. daher wär es net schlecht wenn ihr
etwas dazu sagt,..
grüüße
>edit:
ich habe mal nachgezählt, direkter source ist 448 bytes groß,..
Kai Scheddin wrote: > diese version ist noch ungetestet,.. daher wär es net schlecht wenn ihr > etwas dazu sagt,.. Tja, was soll man bloß dazu sagen. Wenns Dir halt Spaß macht, dann machs eben. Für mich hat sowas überhaupt keinen Sinn. Ich programmiere in C, dann jag ichs per Bootloader in den Flash und gut is. Daher nicht böse sein, wenn ichs mir nicht weiter angucke. Peter P.S.: Mich würde eher interessieren, wenn jemand das Programmieren per Debugwire rauskriegt und dokumentiert. Wäre net, damit dann auch die Clock-Fuses ändern zu können.
Kai Scheddin schrob: > Will mir den keiner antworten?? sooowas wie: "hmm es gibt doch schon > Nut/OS" oder "probiers doch mal pico]OS, das filesystem musste dir bei > Ulrich radig abgucken,.." oder soooo??? > andere frage, klingt zwar a bissl blöde aber kann mir jemand sagen > wodurch sich die einzelnen kernel gänzlich unterscheiden? > mfg probiers doch mal kaOS kaOS is a real-time, multithreaded, preemptive operating system for the ATmega32 microcontroller, which loads and executes programs from a Secure Digital or MMC card. The system waits for you to insert a card and press the Reset button, at which point a program is loaded from the card and executed. The system supports multiple threads, cross-thread messaging, dynamic memory allocation, dynamic thread creation, semaphores and much more. http://www.circuitcellar.com/avr2006/winners/DE/AT3324.htm Wieviel Platz noch übrig ist für einen TCP/IP Stack weiss ich allerdings nicht. Vermutlich nicht mehr genug.
Ich schrob: > Wieviel Platz noch übrig ist für einen TCP/IP Stack weiss ich allerdings > nicht. Vermutlich nicht mehr genug. Was man hier prüfen könnte. Wenn ich mich nicht vertue mit der Interpretation des makelog aus dem Softwarearchiv, sind es ca. 8 KB avrETH1 Webserver You can connect an old cellular phone add-on camera to the Internet using an ATmega32 microcontroller and an ENC28J60 Ethernet controller. The compact system’s hardware can fit in a matchbox (1.25² × 1.88²). http://www.circuitcellar.com/avr2006/winners/DE/AT2616.htm http://avr.auctionant.de/avrETH1/index.html
kaOS mit einem TCP/IP Stack aufblasen... hängt davon ab, ob dann der Trick von kaOS noch funktioniert, mit dem es sich jetzt schon als grösseres Programm in den Bootloaderbereich und spezielle Flash-Regionen quetscht.
sooo: brcs,brlo,breq,brmi,brvs,brlt,brhs,brts,brie,brcc,brsh,brne,brpl,brvc,br ge, brhc,brtc,brid mov,and,eor,or,ldi,sec,sez,sen,sev,ses,seh,set,sei,clc,clz,cln,clv,cls,c lh, clt,cli,andi,cbr,rjmp,subi,sbr,ori,tst,rol,adc das sind 48 von ca. 110 statements,... also faaast die hälfte 654 bytes groß, das kann ich aber noch reduzieren,... @stefan: ich muss noch a bissl warten bis der stuff von segor hier ist,. dann schau ich mir das mal an,.. thx @peter: http://www.ureader.de/message/601099.aspx
sooo,. die ds80c400 samples sind doa,.. hat jemand ne minimalbeschaltungsbild mit übertrager? grüüüße
also aufbau steht,.. nüx läuft, 3,3V, Ponyprog kann beschreiben, Aber uart sagt nüx, fuses:CKopt,cksel3..1 sind gesestzt, 8mhz,.. Bevor ich das isolationsmodul von halo, den flash und den Enc28j60 dazugelötet habe lief der aufbau, betriebsspannung 3V3 ich habe mich an den aufbau von avreth1 orientiert, die kondis der Vdd.. (jeweils 100n gegen gnd) weggelassen, da kein PoE die entsprechende beschaltung auch weggelassen, der aufbau saugt rund 1,7W also rund 500mA,.. kann mir da einer vlt helfen? bitte bitte,.. grüüße
Kai Scheddin wrote:
> kann mir da einer vlt helfen? bitte bitte,..
Wenn Du mal beschreiben würdest, wovon Du da eigentlich redest.
Und vor allem mit nem bischen Satzbau und Beachtung der Schreibweise,
das man es auch lesen und verstehen kann.
Aber mit solchen irgendwie hingekotzten Wortbrocken kann keiner was
anfangen.
Wenn es sich um Fragen zu ner Schaltung handelt, könnte ein Schaltplan
ungemein nützlich sein.
Aber dann bitte so, daß ihn auch jemand lesen kann, der nicht Dein
Spezialschaltplanprogramm hat.
Peter
,..hmm sry das ich mich so unverständlich ausgedrückt habe: (ausserdem habe ich kein spezialschaltprog, ich nutze eagle :P ) also, thema ist bekannt, nun habe ich (endlich): enc28j60, at45DB161d-SU, HALO isolation module TG42 1406N1, und eine stinknormale 8p8c buchse, an folgenden schaltplan habe ich mich orientiert: http://avr.auctionant.de/img/avrETH1_schematic_fullsize.png (avreth1, siehe forum) wie gesagt, da ich kein PoE benutze habe ich die diode D1 und die condensatoren c7-c11 weggelassen, ist das soweit verständlich? grüüße
Kai Scheddin wrote:
> (ausserdem habe ich kein spezialschaltprog, ich nutze eagle :P )
Nun, das ist doch eines.
Ich benutze ein anderes und wenn ich davon was posten will, mach ich
einfach PDF draus.
Es mag vielleicht Deinem Ego streicheln, wenn Du voraussetzt, daß alle
anderen überhaupt nichts anderes zu tun haben, als sich alles zu merken,
was Du in diesem Thread mal geäußert hast, aber wundere Dich nicht, wenn
dem eben nicht so ist.
Ich verliere schnell die Lust, wenn ich erstmal überlegen muß, was die
einzelnen Worte (z.B. "sry") bloß bedeuten sollen.
Wie alt bist Du eigentlich, wenn die Frage erlaubt ist ?
Peter
P.S.:
Einen Schaltplan nachzubauen ist o.k., wenn man keinen eigenen hat.
Aber auf Bauteile zu verzichten, ohne zu wissen warum, würde ich nicht
machen.
>P.S.: >Einen Schaltplan nachzubauen ist o.k., wenn man keinen eigenen hat. >Aber auf Bauteile zu verzichten, ohne zu wissen warum, würde ich nicht >machen. exakt... zumal die schaltung bzw die von Kai "wegoptimierten" Bauteile nix mit poe zu tun haben... guck mal ins Datenblatt vom enc. bzw generell 100nF an jedem Spannungsversorgungspin sind Pflicht... nix
Danke für die schnelle Antwort Herr Dannegger, ich bedaure zutiefst das sie die gegenwärtige Mundsprache nicht beherschen, und bin zukünftig bemüht diese zu umgehen. (sry, engl. von sorry, bedauern; rgds,engl. von regards, empfehlung oder grüße; thx, engl. von thank you, danke; k,engl. von ok bzw. okay, in Ordnung,.... etc etc. ) >>Each VDD and VSS pin pair should have >>a 0.1 μF ceramic bypass capacitor placed as close to >>the pins as possible. >>Relatively high currents are necessary >>to operate the twisted pair interface, so all wires >>should be kept as short as possible and reasonable >>wire widths should be used on power wires to reduce >>resistive loss. in Ordnung, das habe ich übersehen, sie dienen als resonatoren bzgl. der TOUT+- und TIN+- Leitung. Dennoch wundert mich das der ATMega32-16PU nÜx tut, dieses Problem wird ja vlt. durch das anlöten diverser Kapazität von magischer hand gelöst sein g Nein, jetzt mal ernsthaft: Danke leuts, werd ich gleich mal anlöten. @Herr Dannegger: Ne, aber wenn ich einen Thread 'betrete' verschaffe ich mir einen kleinen überblick um was es sich handelt, was geschrieben wurde bzw. was ich selber mal geschrieben habe, ich résumiere sozusagen, ich bin aber für jeden beitrag von Ihnen dankbar, da diese mir öfters geholfen haben. Mein alter ist wahrlich weder Grund noch Lösung des Problems. grüüße und danke :)
Ich hätte nicht gedacht das der Unterschied zwischen MKS und NP0 bzw. X7R so groß ist, denn als die vermutung nahe kam das die MKS (metallisierte polyester kondensatoren) für den hohen stromverbrauch verantwortlich sind, habe ich sie gegen Keramikkondensatoren ausgetauscht, und TATA,... der verbrauch sank enorm, nun stellt sich aber eine einfache frage >WIESO? sind mks für einen so hohen stromfluss verantwortlich? Ich habe mal ein bisschen rumgerechnet und weiß schon mal das es nicht der Isolationswiederstand ist,.. Hier das datenblatt: http://www2.produktinfo.conrad.com/datenblaetter/450000-474999/455008-da-01-ml-WIMA_MKS_02_de-en.pdf grüüße
Kai Scheddin wrote:
>>WIESO? sind mks für einen so hohen stromfluss verantwortlich?
Ich vermute eher einen defekten Kondenator oder ne Zinnbrücke.
Die Folienkondensatoren sind etwas hochwertiger, aber auch größer als
Keramik, gehen tun aber beide.
Man kann auch Tantals nehmen.
Ich versuche auch Kondensatoren immer reichlich zu dimensionieren, also
für 5V mindestens 10V, besser 16V-Typen.
Gerade moderne Kondensatoren haben kaum Reserven.
Peter
P.S.:
Deine Bandwurmsatzmonster ohne Großschreibung machen es einem schon
schwerer, sie zu verstehen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.