-
Thread
DCC Decoder
Hier der einfache Schaltplan für Eagle 4.11. Der L272D kann 1000 mA, das leicht locker für Spur N. Für H0 oder größer müsste man nachrechnen. mfg dxm
Auskommentierung hier bei den letzten beiden Code-Zeilen enfernt [avrasm] RESET: [...] ldi TEMP1, EELongADR ; Lade EELongADR in TEMP1 / Lange Adresse rcall readEEProm ; Springe zu readEEprom bst Temp2, 5 ; Lade aus TEMP2 BIT 5 / Lange Adresse ( CV29 ) bld DCCReg, LongADR
-
Thread
einfaches DIGITAL- Oszilloskop (800 Datenpunkte) Assembler
10bit vom ADC macht der ADC selbst, wenn man ADLAR einschaltet. Hat es eigentlich einen Grund wiso adr_DATEN_SPEICHER Erst bei 0x060 + 100 anfängt ? Wenn man ab 0x60 beginnt, sollten eigentlich auch 1000 Messwerte in den Speicher passen. Dann hat man noch 24 Bytes für den Stack was ausreicht. Das
@Benedikt >Allerdings funktionieren 1000 Messwerte nicht Ich werde nach dem Fehler suchen, nur was mich sehr wundert, dass die 1000 Werte bei mir problemlos empfangen werden. Ich lass mir was einfallen. >Ist die Triggerfunktion schon
-
Thread
Grundlegendes zu SPI
max232, dann auf beiden Seiten, ansonsten reicht auch das nackte 5V-TTL-Signal; bei geschirmter 2-adr. Leitung und guter Terminierung. Das USART im ATTINY2313 hat den Vorteil, daß es die ankommenden Signale sampled und vergleicht, bevor es die Entscheidung 1 oder 0 trifft. Dies trägt einer niedrigen
irgendwo zwischen 100 und 50000 Hz rumliegen hat, der noch einen PWM-Ausgang frei hat. Beispiel für 1000Hz: Puls 100µs = low, Puls 300µs = high, Puls 600µs = Übertragungsende. Aufwand Sender: 1mal pro Timer-Interrupt das OC-Register setzen. Programmieraufwand Tiny: minimal. Hardware: Sender: 75176.
-
Thread
Platine für CAN BUS
für einen CAN BUS Teilnehmer geätzt hat? Platine: AVR Baustein z.B. ATMEGA8 oder ATMEGA8535 + SJA1000(CAN CONTROLLER) Da ich mit CodeVisionAVR programmiere wäre es super, wenn ich auf dieser Platine einen von den oben genannten AVR Bausteine verwenden könnte + SJA1000. Gruß
und kann direkt ueber den usb-port programmiert werden. Direkt hat er kein CAN, da haengt ein sja1000 am Adr/Data Bus ... Irgendwo hab ich für das Parallel-Port Dongle eine Software unter DOS, da ich die Windows-Treiber nicht rausgeben darf. Die DOS-Software ist zwar nicht Interruptfaehig, aber
-
Thread
CPU Selbstbau Gesperrt
man arbeitet. Dann könnte man sich im Zweifelsfall mal organisieren. Auf meine Schule gehen 1000 Schüler und ich kann mir nicht vorstellen, dass ich der einzigste bin, der programmieren kann.
bleibt die Befehlsabarbeitung solange stehen, bis sie eine Erlaubnis bekommt! Gruß Tobi PS: ADR=Adressregister ABL=Ablaufsteuerung
-
Thread
Konvertieren von Binär nach ASCII
speichern mov rBin1H, TimeH mov rBin1L, TimeL ;Z-Pointer initialisieren ldi ZL, LOW(adrNumbers) ldi ZH, HIGH(adrNumbers) ;Konvertieren rcall Bin2ToAsc5 ;LCD leeren ldi Temp, 0b00000001 ldi Temp2, 0b000 rcall LCDSend ldi Temp3, 5 ;5
(10000) mov rBin2L,rmp rcall Bin2ToDigit ; Ermittle 5.Stelle durch Abziehen ldi rmp,HIGH(1000) ; Lade 1.000 in rBin2H:L mov rBin2H,rmp ldi rmp,LOW(1000) mov rBin2L,rmp rcall Bin2ToDigit ; Ermittle 4.Stelle durch Abziehen ldi rmp,HIGH(100) ; Lade 100 in rBin2H:L mov rBin2H,rmp
-
Thread
Neues Terminal-Programm für Windows
Steuerkommandos in der Eingabezeile werden wohl drin sein. Dann sollte man so etwas wie 'abc dtr=1 def wait=1000;dtr=0' eingeben können
Nachricht die Spannungen beinhaltet könnte wie folgt aussehen: 02 04 26 26 01 03 01 86 02 STX LGE ADR CH1 CH2 CH3 Nun könnte man Masken anlegen die z.B. erstmal nach den ersten 3 Byte schauen: 02 04 26 -> werden diese erkannt und können einem Label zugeordnet werden, wird eine zuvor festgelegte
-
Thread
Einfacher und billiger Webserver mit AtMega32
beschäftigen. Beim Preis werde ich wohl auch bei ca.10,-EUR landen. Schliesslich kann ich nicht gleich 1000 Stück fertigen lassen. Die Ethernet-Teile wollte ich aus oben beschriebenen Gründen nicht mit drauf machen. (Dann bietet sich auch das Board von Ulrich mit ATMega128 an) Gruss, Holger
sowohl beim Ausgeben, als auch beim Setzen von Werten). Adressierung: als Word: "wN": Word an 16bit-Adr. N als Byte: "bN": Byte an 8bit-Adr. N als Bit: "bN.M": Bit M von Byte an 8bit-Adr. N Tag-Format in LFO-Dateien: {wN:FORMAT} {bN:FORMAT} {bN.M:TRUE:FALSE} wobei: N,M: Adresse (s. oben)
-
Thread
DS1250 oder ähnlicher Speicher - schon damit gearbeitet?
=i; delay_us(2); adr_countup(); // toggelt den count pin am 74HC4040 und zählt delay_us(2); // so die Adresse hoch } cs_memory=1; delay_us(5); oe_memory=1; we_memory=0; Dann versuch ich das ganze auszulesen mit der folgenden Routine DDRF=0xFF; adr_reset(); //wieder auf den Speicherbeginn setzen DDRC=0x00; // PORTC-> Datenbus ->Eingang PORTC=0xFF; oe_memory=1; cs_memory=0; delay_us(5); we_memory=1; oe_memory=0; for (i=1;i<=254;
-
Thread
Honeywell Rondostat HR20E per AVR steuern und konfigurieren
. CMD=... Param1=... Param2=... Param3=... switch(CMD) { GET_BDS1: // Kommando BDS1 adr? Get_ByteDataSet1(Param1); break; SET_BDS1: // Kommando BDS1 adr, data Set_ByteDataSet1(Param1, Param2); break; GET_BDS2: // Kommando BDS2 adr? Get_ByteDataSet1
1 was könnte die Ursache ein 2 im .eep existiert kein Wert x28. In welchem File finde ich die Adr. x16D mit welchem Offset dann ? (.elf, .hex, oder ... und an welcher Adr. ?) Im .elf steht an Adr. 3B61 = 39f4+16D jedenfalls x28 ...
-
Thread
TI58 TI-58 TI59 TI-59 solid state software modul Programm 20
folgenden code: int datjd( ita,mo,ja ) int ita,mo,ja; { long jd, j, l; if(ja < 1000) ja += 1900; j = -(14-mo)/12; l = ja+j+4800; jd= ita-32075; jd= jd+1461*l/4; jd= jd+367*(mo-2-12*j)/12; jd= jd-3*((l+100)/100)/4; return( (int) (jd) ); }
einfügen, sondern als Dateianhang" noch so gerade eben als 'nicht länger' einzustufen ist): Adr Code Key Bemerkung 000 47 CMS Lösche Speicher 001 05 5 Ausgangswert die Zahl 50.000 002 00 0 003 00 0 004 00 0 005 00 0 006 42 STO
-
Thread
MMC/SD ansteuern mit AVR
die Sectornummer angeben. Wird dann intern auf die Adresse umgerechnet. Hab nochmal ausgelesen ab Adr0 und bekomme ab Adr 512 nur noch Nullen geschickt. Sieht so aus als wäre die Karte nicht bereit oder so? Ich arbeite an der SPI mit 100kHz. Kann doch nicht zu schnell sein, oder?
>Hab nochmal ausgelesen ab Adr0 und bekomme ab Adr 512 nur noch Nullen >geschickt. Ist normal, das sind die "reserved sectors" der Karte, im ersten sektor stehen die Partitionsinformationen, da steht irgendwo ein Eintrag mit
-
Thread
DS1820, DS18B20 in C
// Anzahl der registrierten Sensoren } } messintervall = (ee_read_byte(ADR_MESSINTERVALL) << 8); // high-Byte messintervall += ee_read_byte(ADR_MESSINTERVALL + 1); // low-Byte // wenn == 0xFF, dann default-Wert wählen if (messintervall == 0xFFFF) messintervall = MESSINTERVALL; start_modus = ee_read_byte(ADR_AUTOSTART); } // ---------------------------------------------------------------------------- // wandelt den Messwert, der aus 2 Byte besteht, in einen String (mit einer Nachkommastelle) um. /
-
Thread
Tabellen im PIC auslesen
Gleiche bewirken. 2. Ein Label (Unterprogramm) Next_Char gibt es nicht (in deinem Code). 3. AdrH und AdrL wird in deinem Code nirgendwo geändert. Was soll die Routine eigentlich machen? Dem Name nach die Adresse finden oder was sonst. Steffen
kommt denke ich aufs Selbe raus. 2.&3. Das ist nur ein Auszug des Codes. Next_Char incrementiert AdrL und bei Überlauf auch AdrH. Trotzdem danke für die Antwort. Ich poste wenn ich heim komme mal die gesamte Routine.
-
Thread
Alternativen beim AVR-Vernetzten?
"Kollisionsfest", wenn ein CAN-Controller verwendet wird. Also entweder einen CAN-Controller (SJA1000) und den o.g. Bustreiber verwenden oder CAN in Software umsetzen (ist kompliziert und braucht Rechenzeit). Der CAN-Controller kostet aber erheblich mehr (ca. 5 Euro?) und nimmt zusätzliche Fläche ein
i2c_start((Slave1<<1)+I2C_WRITE); Dementsprechend ist in dem Slave Programm: TWAR=0; TWAR|= (OWN_ADR<<1); // Reciever adress ...da die LSB doch für den "general call" zuständig ist. Die Adressierung oben überschreibt aber den LSB, anstelle die Ziel-Adresse "rechts davon", in den restlichen 7
-
Thread
LED und Eprom 27xx....
hex umgestellt: die erste sequenze aus dem beispiel: links binär= hexzahl rechts neben dem = 1000 0000 = 40 an adresse 0 geschrieben 1100 0000 = C0 an adr 1 geschr. 1110 0000 = E0 an adr 2 1111 0000 = F0 usw. 1111 1000 = F8 1111 1100 = FC 1111 1110 = FE 1111 1111 = FF 0111 1111 =
nach High = 5 volt gesteckt ist das adressebit nicht mehr 0 sondern 1. Das heißt dann adresse : 1000 0000 0000 0000 = adresse in hex 8000 dateninhalt meinetwegen: 0101 1010 1000 0000 0000 0001 = adresse in hex 8001 denke dran: es werden immer 4bit(nibbel) zu einer Hexzahl kodiert. 4x 4bit(nibbel
-
Thread
Mikrocontroller 16 Bit (oder höher)
noch untertrieben). Folgende Dinge halte ich für wichtig: - einfaches Adressmaping, Start bei Adr. 0x0000, dann die Interruptvektoren, dann fast 16MByte frei adressierbar und dann noch ein paar interne Adressen. - Verfügbarkeit eines C++ Compilers (ganz wichtig) - Buszugriff mit 8 und 16 Bit
Multiplikation nun schneller macht oder nicht, ist mir egal. - bei meinen kleinen Stückzahlen, unter 1000 im Jahr, ist der Preis für den Controller auch nicht ganz so wichtig, die Entwicklungs- und Platinenkosten sind entschieden teurer als die evtl. eingesparten 1 bis 2 Euro pro Stück. Zur Zeit baue
-
Thread
Direkt auf Platine drucken....
habt ihr schon mal gecheckt, dass es vom pcb-pool einen service 'next-day-delivery' gibt? das ist 1000x besser als im Keller selbst geätzt und zudem für nen wahnsinns preis. geht allerdings nur in verbindung mit der kostenlosen target 3001 layout version... guckt mal bei www.pcb-pool.de und bei downloads
hab mir so einen Signature Z 1 Thermodrucker gekauft bei ADR http://www.adr-ag.de/ das mit dem Platinendrucken hat aber nicht funktioniert.. Für s CD bedrucken ist das Gerät als reiner CD Drucker aber perfekt. Und für den Preis auch ganz ok.
-
Thread
allgemeiner Programmierstil in ASM?
deine Include-Datei kommt: ; Nur ein Beispiel für ein Unterprogramm .macro mactest1 ldi zh,high(adr) ldi zl,low(adr) lpm ret .endmacro In Deinen Quellcode kommt dann folgende Konstruktion: test1: mactest1 [...] rcall test1 Mit dem Macro-Aufruf mactest1 wird der Macrocode in das Programm
Softwareinterrupt ist wieder auch nur reine Ansichtssache. Ob ich nun einen INT21 aufrufe oder einen CALL 1000h und die entsprechende Routine an 1000h linke, ist vollkommen gleich. Der einzige Unterschied, unter DOS kann ich einen Interrupt verbiegen, aber nur, weil der Kodespeicher im RAM ist. Aber bei
-
Thread
Programmierbeispiele
**************************************** ;Das DÜ-Format: 0A 34 CDEF ...... 7788 ;1. 0A: 1 Byte, Adr. des Gerätes, wohin die Sendung soll (FE=an alle) ;2. 34: 1 Byte, Adresse des Gerätes, von welcher die Sendung kommt ;3. CDEF: 2 Bytes, Zahl aller Bytes dieses Blockes (ab Daten bis CRC-Ende) ;5
abspei. rcall uhr ;schauen, ob nach 23:59, dann Datum korr. ldd temp1,y-RS+lastms ;ist alle 1000*256*125ns = 0 tst temp1 brne mainloop ;branch, wenn noch nicht 32768usek vorbei ;zeitunkritische Funktionen (Aufruf nur alle 32.7ms) mov temp1,mslow ;Int-Counter laden (*33ms)