-
Thread
Wo gibts USB 3.0 ICs? Gesperrt
den Slave FIFO Modus nutzen. Aber anscheinend geht der FIFO Modus (bisher?) nicht mit 32 Bit Busbreite. Wenn das wirklich auf 16 Bit limitiert ist, sinkt die maximale Übertragungsrate auf gerade mal 120 bis 140MB/s. Denn mit 100MHz kann man den kaum fahren, das Timing ist wieder mal grandios
rausholen. Die 320MB/s ist der theoretische Wert am GPIF II, der schafft ja nichtmal die 100MHz im 32 Bit Modus.
-
Thread
[PIC] Assembler Problem Sprungtabelle in Externer ASM Datei
Habe Problem Sprungtabelle in Externer ASM Datei [code] movf STATE,w addwf PCL,f goto ReadBit_01 goto ReadBit_02 goto ReadBit_03 goto ReadBit_04 goto ReadBit_05 [/code] Laut Disassembly beginnt der Code an 44A. Das Programm springt aber immer in einen Adressen Bereich von 000 bis 0FF
Fall müsste das 0x04 sein. [code] movlw 0x04 movwf PCLATH movf STATE,w addwf PCL,f goto ReadBit_01 goto ReadBit_02 goto ReadBit_03 goto ReadBit_04 goto ReadBit_05 [/code] Dann sollte er auch an die Richtige Stelle springen.
-
Thread
Probleme mit free-running ADC
komisch. Freilaufend habe ich's auch noch nie versucht, allerdings initialisiere ich meinen ADC und setze erst dann in einem eigenen letzten Schritt das ADSC-Bit im ADCSR-Register.
Normalerweise kann man die Interrupt Flags nicht manuell setzen, sondern nur löschen (indem man eine 1 hineinschreibt). Oder ist das beim Mega32 anders? In den meisten mir bekannten Da6tenblättern steht da immer 'Writing a logical 0 to the Bit has no effect' oder
-
Thread
If Bedingung
Hallo, ist es in C möglich mehrere UND Bedingungen hintereinander zu setzen? Im Internet finde ich immer nur Beispiele mit zweien. Ich habe mir das wie folgt gedacht: [c]if ((g_counter==ONE_H_WAIT) && (bit_is_clear(PINB,PB5)) &&(bit_is_clear(PINB,PB2))) [/c] {
{ if ((g_counter==ONE_H_WAIT) && (bit_is_clear(PINB,PB5))) { ... } if ((g_counter==DAY_WAIT) && (bit_is_set(PINB,PB5))) { ... } } [/c]
-
Thread
empfangen von Daten im Pic
Das Interupt-Flag wird durch lesen von RCREG gelöscht. Das ist richtig. Das Framing-Error Bit wird beim Lesen auch gelöscht, da lag ich eben falsch. Möglicherweise tritt ein Overrun ein, der muss dann durch die Software gelöscht werden (CREN löschen und wieder setzen). Sonst können keine Daten
Auszug aus dem Datenblatt: "RCIF is a read-only bit, wich is cleared by the hardware. It is cleared when the RCRREG register has been read and is empty." Ich setze den 16F628 ein. Daher kann ich die Richtigkeit bestätigen. Mir ist aber noch etwas
-
Thread
ISR springt nicht mehr raus
Systematischer Fehler der Baudrate grösser 1% und damit zu hoch! #endif #define setbit(P,BIT) ((P) |= (1<<(BIT))) // MAKRO >> Bit setzen #define clearbit(P,BIT) ((P) &= (1<<(BIT))) // MAKRO >> Bit löschen int time = 0; int Zeitlk1,Zeitlk2; int
Zeitlk2 =3; if (Zeitlk1 == time) { setbit(PORTA,0); // Bit für LK 1 setbit(PORTC,0); // setzen hochziehen Stufe 1 _delay_ms(90000); // Zeitverzögerung in ms clearbit(PORTC,0);
-
Thread
1wire BUS Sniffer Tester AVR ATmega8 Assembler
;wird für Simulator gebraucht, um ggf. CY umzudrehen brcc ow_INBIT_NULL SBR rFlag,(1<<fIN_BIT) ;setze gefundenes IN-Bit in Flag-Register ow_INBIT_NULL: rcall ow_Read_Bit ;** hier NICHT-Bit nop ;wird für Simulator gebraucht, um ggf. CY umzudrehen nop ;wird für Simulator gebraucht, um ggf. CY umzudrehen brcc ow_NOTINBIT_NULL SBR rFlag,(1<<fNOT_IN_BIT) ;setze gefundenes NOT-IN-Bit in Flag-Register ;Hier sind 1 oder 2 Bit gesetzt SBRC rFlag,fIN_BIT rjmp ow_Search_noSlave ;hier sind beide Flags gesetzt, somit kein Slave gefunden, Error ow_NOTINBIT_NULL
-
Thread
fehler im lehrheft Gesperrt
seltsames gestoßen. Meiner Meinung nach ist es Unsinn aber vielleicht täusch ich mich da. Beim Setzen von Bits in Registern kommt es immer wieder vor, dass das Bit nicht um 1 geschoben wird sondern um 2, 3, ... Zum Beispiel: Initialisierung eines ADC ADCSRA=(1<<ADEN)|(1<<ADATE)|(1<<ADIE)|(6<<
schüler schrieb im Beitrag #4863515: > Beim Setzen von Bits in Registern kommt es immer wieder vor, dass das > Bit nicht um 1 geschoben wird sondern um 2, 3, ... Und was stört dich daran. So macht man das.
-
Thread
Arduino-C: Unklarheit bei '<< Operator'
beim WARUM klemmt mein Kopf. Wenn mit 'CS22' ODER-verknüpft wird, wieso muss dann CS22 vorher um 1 Bit nach links geschoben werden? Das ist bei fast allen Flag-Operationen auf der Seite so. Beispiel: [code]// Setze CS20, CS21 und CS22 - Clock Select Bit 10,11,12 TCCR2B |= (1 << CS22) | (1 << CS21
mit so einem Ansatz nicht benutzbar, weil du URSEL nicht getrennt von den anderen Bits setzen/löschen kannst (lesen geht damit schon garnicht). Auf anderen Architekturen habe ich solche Hardwarekonstrukte auch schon gesehen. Klar kann man in so einem Fall immer die Union mit dem ganzen
-
Thread
MSP430 ADC sehr merkwürdige Werte
Du must in ADC12CTL2 den ADC auch auf 12Bit umschalten. Dein ADC steht mit 1023 als maximalen Wert wahrscheinlich auf 10Bit. Das geschieht mit den Bits 4 + 5. Bit 5 = 1, Bit 4 = 0 ergibt 12 Bit Aufloesung
Nein mein Maximalwert beträgt 4095 Bit, habe ich auch so mit 3 V auch getestet (Ref. Spg. ist 2,5 V aber ADC verträgt 3,6 V). Also kann man davon ausgehen das der ADC mit 12 Bit arbeitet.
-
Thread
Portausgänge shiften am Atmega 32
nicht mit Atmegas vertraut, aber ich denke >OCR1A |= 675; >wird nicht klappen, da der Atmega nur 8 bit Register hat, also nur Werte >bis 255 annehmen kann. Als 8-Bit-Register heißt das OCR1AL und OCR1AH. OCR1A ist für den Compiler ein 16-Bit-Register. >TCCR1A |= (1<<COM1A0); Dann solltest du aber auch OC1A (PD5) auf Ausgang setzen. MfG Spess
-
Thread
Datentyp bit beim 8051
Egal was vom Port gelesen wird, der 8 Bit Ergebnistyp wird dem 1 Bit bool zugewiesen. Das ist nicht gut, gar nicht gut, ...
Ein Frohes Neues Jahr und auch in 2015 kann man 8 Bit nicht auf 1 Bit schrumpfen. Wenn schon, dann so [c] _sw1 = (P5 & 0x01) != 0; ... usw. [/c]
-
Thread
Fues-Bits
reingeschrieben, damit nix anbrennt (ext. Qaurz und passende Baudrate) /* * Perfekte Baudrate: L-Fuse setzen auf 0xE0 */ Die H-Fuse und den Rest alles so gelassen, nur die L-Fuse geändert.
ich habe: 11001101 are the fuse bits written into an ATtiny2313
-
Thread
Messung von kleinen Widerständen mit großen Vorwiderständen
sehen. Arbeitet mit ca. 3 V über hohe Schutzwiderstände hinweg und misst > mit 1 Ohm Auflösung. 16 Bit ADC verbaut. Wenn du mit einem 16bit ADC 10^-6 auflösen kannst, ist das keine Physik sondern ein Wunder. Du solltest das in einem Forum für Religion oder Esoterik weiterdiskutieren, wahrscheinlich
vorhanden (wie auch in der Norm gefordert), die Schaltung arbeitet mit 3 V, der verwendete MC hat 16 Bit AD Auflösung.
-
Thread
BASCOM AVR Port mit String setzen
der eine Zahl von 0-255 beinhaltet. Diese kannst du in einen Integer umwandeln und damit den Port setzen.
auf einen Port zu schreiben macht auch wenig Sinn, was willst Du damit bezwecken? Der Port ist 8 Bit breit, kann also nur ein "Byte abbilden", bzw. dessen Binärwert, ergo auch nur ein Zeichen, z.B. das &. Portb = &B00110011 ' das geht natürlich. Jede Programmiersprache hat seine Befehle, deren
-
Thread
Takt je Schleife berechnen
TIMER(void) // isr kommt wenn eingestellter wert erreicht { gFlag = 1; clr_timer_run-bit(); timer_reg = 0; // zählt wenn du wieder antriggerst dann bei 0 weg clr_isr_flag(); } void main(void) { ... gFlag = 0; trigger_Timer(); // setze Run-bit while(!gFlag
700 µs auf wenige µs genau geht entweder über einen 16-bit-Zähler oder einen 16-bit-Timer (700*16=11200, abzüglich Overhead für Port setzen und pollen). Was man nimmt, ist Geschmacksache, er pollt ja sowieso. Die Auflösung ist dann 4/32=1/8 µs, das dürfte genügen
-
Thread
Webserver ATmega32/644DIP ENC28J60
void poll_eth (void) { #if USE_ENC28J60 // while( (ENC28J60_INT_PIN & (1<<ENC28J60_INT_PIN_BIT)) == 0) if( (ENC28J60_INT_PIN & (1<<ENC28J60_INT_PIN_BIT)) == 0) { #endif
!!nicht deaktiviert wurde!! Also FuseBit für JTAG deaktivieren.
-
Thread
[AVR] Zwischen einzelnen PCINT-Quellen unterscheiden
ich das PINB Register zwischen und mache die Auswertung dann mit der Variable. Wenn du nur Status-Bits bei steigender Flanke setzt, könntest direkt das PINB Register mit einem Flag-Byte ver-oder-n und ein Flag setzen was im Hauptprogramm eine Änderung ankündigt.
besser? ISR(PCINT1_vect) { // Vergleich alter/neuer Portzustand uint8_t changedBits; uint8_t changedBitsBuffer; changedBitsBuffer = PINB; changedBits = changedBitsBuffer^portHistory; portHistory = changedBitsBuffer; // die restlichen Abfragen }
-
Thread
HD44780 (Pollin DV20208) Zeichenbreite stimmt nicht
handelt, findet sich das zugehörige Konfigurationsbit im DDRC. PORTC - DDRC. Im DDRC muss das Bit 6 auf 1 gesetzt werden, und dann kann durch 1 Setzen in PORTC der Ausgangspin PC6 auch tatsächlich physikalisch auf 1 gesetzt werden. Also: DDRC |= ( 1 << 6 ); PORTC |= ( 1 << 6 ); Ende
DDRB #define BIT_E PB2 [/C] und diese Bezeichnungen setzen wir jetzt mal in den Code ein. Wir machen genau dasselbe, was auch der Präprozessor macht. Dann kommt raus DDRB |= ( 1 << PB2 );
-
Thread
AVR - IDE Festplatte liefert immer Fehler beim lesen
die entsprechende Routine aus wdc_drv_pata.c zusammenzufassen: - AVR-Port auf Output stellen - Setzen PATA_RW_SECTOR_COUNT_REGISTER Datentransfer: Anzahl zu lesende Blöcke - Setzen PATA_RW_SECTOR_NUMBER_REGISTER Datentransfer: niedrigen 8 bit der niedrigen 16 bit des zu lesenden Blocks - Setzen PATA_RW_CYLINDER_LOW_REGISTER Datentransfer: hohen 8 bit der niedrigen 16 bit des zu lesenden Blocks - Setzen PATA_RW_CYLINDER_HIGH_REGISTER Datentransfer: niedrigen 8 bit der hohen 16 bit des zu lesenden Blocks - Setzen PATA_RW_DEVICE_HEAD_REGISTER Datentransfer
-
Thread
Warnung beim verwenden jeweils jeden 7.Portpin als Ausgang
Normalerweise sollte er mit 16bit arbeiten, es gibt allerdings eine Compileroptionen (heißt glaube ich -mint8), mit der man auf 8bit umschalten kann. Schau mal ob diese aktiv ist.
das 'Problem' eigentlich beheben. Das Problem besteht darin, dass in C zunächst aus dem signed 16-Bit ein signed 8_Bit gemacht wird. Damit ist aber 128 nicht mehr darstellbar. Erst danach geht es von signed 8-Bit auf unsigned 8-Bit, womit 128 wieder eine korrekte Darstellung besitzt.
-
Thread
Eingänge am ADC wechseln
auf 1 setzen Register &= ~( 1 << Bit ); // Bit auf 0 löschen [/C] und er lernt auch, dass er so [C] Register |= ( 0 << Bit ); [/C] ein Bit nicht löschen kann. Warum? Weil man eine 0 nach links
auf 1 setzen > Register &= ~( 1 << Bit ); // Bit auf 0 löschen Ich bin der mit dem "lies noch einmal". Ich bin von einem copy & paste Fehler ausgegangen, weil zweimal das selbe code Stück da stand. Ich
-
Thread
AT90CAN128 UART Bug? Atmel rausschmeißen?
Ja, und wieso sind vor und nach dem Lesen von UDR1 in dem Regsiter UCSR1x die Bits verdreht ?
MPCM1 = 1 UCSR1B = 0x00 keine Interrupts an, nichts UCSR1C = 0x26 0b00100110, even parity, 1 stop bit, character size = 8 MPCM Protocol 17.10.1 "If 5- to 8-bit character frames are used, the Transmitter must be set to use two stop bit (USBSn = 1) since the first stop bit is used for indicating the
-
Thread
LCD, kryptische Zeichen, Zeilenumbruch
C-Makros (http://www.mikrocontroller.net/articles/C_Makros ) ist ein Löschmakro vorhanden [C] /* Bit löschen */ #define clear_bit(var, bit) ((var) &= (unsigned)~(1 << (bit))) [/C] Damit ist hinter der den beiden betreffenden Zeilen jeweils diese Zeile einzufügen: clear_bit(PORT_LCD, LCD_RS
der Fehler liegen? Probier mal in der ERSTEN Zeile den Cursor an verschiedene Postitionen zu setzen. Das würde erstmal zeigen, dass das halbwegs funktioniert. Dann soltest du mal verschiedene Zeichen ausgeben, wo jeweils nur ein Bit gesetzt ist. Also 0x01, 0x02, 0x04, 0x08 etc. Das testet deine Verkabelung
-
Thread
Verschlüsselung einer Funkstrecke - Hat jemand einen Tipp?
erinnern wie: "Verschlüsselung XY ist nicht sicher und sollte sofort ersetzt werden. Unsere Server setzen aber selber Verschlüsselung XY ein, und zwar ohne alternative. Aber wir haben Ahnung von Sicherheit und setzen sie konsequent um!" Wie ernst kann man eine staatliche Institution nehmen, die Regeln
Die Kombination "128bit Secret" und "32-bit CRC" sind dabei nur ein Beispiel für eine praktikable Lösung. 16 Byte Overhead würde man m.E. auch noch verkraften. Torsten C. schrieb im Beitrag #3592313: > Und wenn ich gar_nicht
-
Thread
Zähler bis 1 Mio aber wie?
für die Zählerei. Gut, die Zahlen waren in der Anwendung wirklich sehr gross, da haben auch die 32-bit Register aufgegeben in der "traditionellen" Ansteuerung. --> Problem: Zählen bis 1 Mio. mit EINEM 8 bit Register ohne externe HW und ohne Timer. Also zum Vorgehen: - Init: Register auf 0 setzen
man bis 5 zählt und dann auf 0 zurücksetzt. Wie dämlich ist das ? So verschwendest du wertvolle Bits. Denn ideal wäre es dann das Register bis 255 + Überlauf hochzuzählen und dann den Überlauf in ein weiteres Register zu propagieren. Das ist dann nichts anderes als wenn wir einen 24 Bit Zähler aus
-
Thread
FT232 ähnliches USB mit atmega32u4 unter C
mit hterm hast, kann das daran liegen dass Class Requests nicht korrekt arbeiten. Ich würde mal das Bit für den BreakSupport auf 0 setzen. Ansonsten kannst du dein Device auch mal gegen usb2cv bzw usb3cv von usb.org testen. Dort gibts auch Test Routinen für CDC. Die Tools sind allerdings etwas hakelig
hterm hast, kann das daran liegen dass Class > Requests nicht korrekt arbeiten. Ich würde mal das Bit für den > BreakSupport auf 0 setzen. ok. als Baudrate für hterm sollte doch passen was im Gerätemanager eingetragen ist. es ging besser als ich noch eine DTR-Abfrage eingebaut habe die PJRC
-
Thread
Erstes Mal AVR
meinen Programmen -> das ist schon mal viel wert. Eine Frage habe ich allerdings noch: Die Fuse-Bit's, wie erkenne ich, ob ich die noch setzen kann oder nicht? Und sind das einfach die im Anhang? Gehört die Clocksource auch dazu, weil das wäre etwas ungünstig für mein Projekt. MFG Dave
Beitrag #2591868: > Dave Chappelle schrieb: > >> Eine Frage habe ich allerdings noch: Die Fuse-Bit's, wie erkenne ich, ob > >> ich die noch setzen kann oder nicht? Und sind das einfach die im Anhang? > >> Gehört die Clocksource auch dazu, weil das wäre etwas ungünstig für mein > >> Projekt
-
Thread
Dmx senden mit einem 89C52 (8052)
evtl. sinnvoll, zwar bei den 83kbit/s zu bleiben (um MARK gut einzuhalten), aber das Datenformat auf 8bit, 1 Stopbit zu setzen. Das sind dann 8*12µs = 96µs Breakzeit.
{// BREAK + Mark after Break SCON = 0x40 ; // 10000000 = 40 Mode 2 8bit // 11000000 = C0 Mode 3 9-bit -> letztes = 0 RCAP2L = 250 ; // Setze Timer 2 auf 83.333b 250 SBUF = 0x00 ; // sende break gDmxState = STARTB
-
Thread
Portpin setzen bwz. löschen in C
Programm und denke nach was ich falsch mache. Ich möchte z.B.: Pin 2 vom Port 1 definiert auf High setzen und umgedreht. Das Bit habe ich vorher mit sbit LED = P1^2 deklariert. Jetzt will ich in Abhängigkeit einer Auswertung den Wert ändern und zwar so in dieser Art: if ( switch = 0) { LED = 1;
-
Thread
Taschenrechner Kommunikation
Wert setzen OCR1A = 9216-1; [/c]
hat. Um die Kennzeichnung gültig/ungültig im Programm zu vermerken, könnte man sechs einzelne Bits in einer 8-Bit Variablen pro Casio verwenden. Das Setzen würde im SAVE Teil erfolgen und das Prüfen im SEND_DATA Teil. Ist es richtig, dass es pro Casio sechs Datensätze (Variablennamen A,B,C,D,
-
Thread
Toshiba 32-bit CISC Controller
find much more :-(. I'll try to find a demo board manual or starter kit manual, they should explain a bit more, unless is one of those products (closed) that forces you to buy their tools and boards at exorbitant prices (but then all _works_ (ejem)). Gruß Ale
es läuft einwandfrei (allerdings wird die Prorammspeed durch die notwendigen Wait-states und den 8-Bit externen Datenbuszugriff gebremmst). Zurück zum 95FY64: Ich setze diesen Prozessor seit ettlichen Jahren ein und hatte keine Probleme damit. Im letzten halben Jahr sind jedoch einige ausgefallen
-
Thread
"Gruppierung" von Pins
sich die LEDs auf unterschiedlichen PORTS befinden (PORTD & PORTB). "Einfache" Bitmanipulationen (Bit setzen und zuvorgesetzes Bit rücksetzen) in Kombination mit einer Schleife, funktionieren wohl nicht (würden sich alle LEDs auf einem Port befinden hätte es geklappt). Blöde Frage, aber kann man irgendwie
Aber ich bin mega Port-Geizig. Und deshalb ein Fan von Port-Expander für so ein LED-Zeug. Passende Bits setzen und das in 1 Zeile via Libs zum PCF schicken. Einfach und praktisch.
-
Thread
9 bit Nachricht bei SPI-Bus für AVR
>Das zweite Problem ist, das so standartmässig ja nur 8 bit pro Botschaft >übertragen werden. Wie wärs wenn du 2 mal 8 Bit sendest.
); // CS auf High setzen } mfg Florian
-
Thread
Sinuswerte für PWM berechnen
? ich benutzte ein 16-Bit Timer Danke für eure Hilfe Viktor
jetzt soll ich meine Sinuswerte anpassen. wie könnte ich vorgehen? ich ändere ZB die Sinus werte auf 10Bit und gebe als maximalwert in dem Zälregister des ersten Timers 1024 statt 100? Gruß
-
Thread
gemessene Frequenz mit UART verschicken
Zeichen senden könntest. Da sollte doch langsam klar werden das hier konzeptionell was nicht stimmt. Setze das alles in die main Schleife und sende mit TX(UDRE) interrupt und Puffer. Dann wird nämlich das was du jetzt machst nur noch <1% Last bedeuten. und du hast auch kein Problem 16 oder 32 Bit zu senden
verstehen muss was auf beiden Seiten passiert. Ich muss eine zehntausender Zahl verschicken also zwei 8bit-Zeichen und dann wieder zusammen setzen. Ich meld mich nochmal wenn ich besser durchblick.
-
Thread
Viel Information mit wenig Bytes übertragen
Eine Pause von 5ms reicht vollkommen, um in der Timer ISR einen Flag zurückzusetzen (oder zu setzen). Und mit 3 bit für Temp/Wind/Feuchte etc. bleiben dir noch 5 bit übrig für Sensoradresse.
Nimm doch 2 Byte = 16 Bit große Telegramme. In den Obersten zwei Bit kodierst du die Art des Paketes (00 = Temperatur, 01 = Luftfeuchte, 10 = Windgeschwindigkeit, 11 = ?). Dann hast du immer noch 14 Bit (= 8192 Werte) für die
-
Thread
PIC CCS C - Port Ausgang mit 8bit int setzen
gerade nach einer Möglichkeit im CCS Compiler für den PIC184550 die PINs eines Portes direkt zu setzen. Also z.B. [code]PORTB = 11000000[/code] wodurch RB0 und RB1 gesetzt sein sollten. Gibt es irgendeine Möglichkeit dies mit einer 8 bit (oder auch 16 bit falls die direction noch enthalten sein muss
Also: Wenn Sie den Zustand eines Eingang-Pins abfragen möchten, hierzu wäre das zugehörige TRIS-Bit auf 1, dann verwenden Sie PORT! Möchten Sie aber einen Ausgang setzten oder löschen, hierfür muss das TRIS-Bit 0 sein, dann benutzen Sie die LAT Register!
-
Thread
Atmega8 Tmr1 Clear OC1B on Comp Match - Wie setzt man OC1B?
Birne schrieb im Beitrag #2864670: > Mein Problem ist, dass ich es nicht schaffe, den Pin OC1B zu setzen COM-Bits auf "Set on Comapre Match" setzen, und dann ein "Force Compare Match" machen.
#2864873: > TCCR1A |= (1<<FOC1B); //force compare match (to set pin high) Durch das manuelle Setzen des Ausgangs verliert man natürlich wieder den Vorteil des zyklusgenauen Setzens. Die Pulslänge hat also einen Jitter. Ich benutze daher die Force-Bits nicht, sondern triggere mit entsprechendem
-
Thread
<< Zeichen, Bedeutung
der Ausführung von HanneS noch etwas hinzuzufügen: ... mit (1<<URSEL) kannst Du zwar das URSEL Bit setzen, Du kannst aber keine "0" hineinschieben um das URSEL Bit zu löschen. Grüße, Stefan
besonders bei mehr als 1 Bit in einem Register setzen 1. fehleranfaellig 2. nicht selbstdokumentierend ist. Bei 1 << ADMUX
-
Thread
Fuse Bits Mitten im Programm ändern
Taktquelle eines ATTiny88s mitten im Code-Ablauf zu ändern. Also ist es relativ einfach, die Fuse Bits beim Programmieren mit Atmel Studio oder jeglichen anderen Tools zu setzen, und sogar im Code, wie in der fuse.h-Datei in den Kommentaren erklärt, habe ich es schon hingekriegt, was allerdings nur beim
auch einen AVR mit Clock Failure Detection angekündigt: http://www.atmel.com/Images/Atmel-42397-8-bit-AVR-Microcontroller-ATmega328PB_Datasheet.pdf MfG Spess
-
Thread
Negierung von float Wert Gesperrt
> Aus der Doku weiss ich das mein float 32bit, also 4 byte gross ist. > x |= 0x8000; Damit würdest du z.B. das 15. Bit deiner 32-Bit-Zahl setzen... :-o
Lothar Miller schrieb: > Damit würdest du z.B. das 15. Bit deiner 32-Bit-Zahl setzen... :-o Noch schlimmer. Er würde die Gleitkommazahl in eine Ganzzahl umwandeln und deren 15. Bit setzen.
-
Thread
Wie krieg ich meinen ATMega8 programmiert? [Anfängerprobleme]
zur Marke "ende" -> Endlosschleife [/avrasm] 4. bisheriges Vorgehen, aktuelles Problem - Setzen der Fuse-Bits gemäss Forum (siehe Anhang) - Lock Bits sind alle offen - uP lässt sich ansprechen und auslesen - Erstellen der .hex-Datei aus obigem Code. - Die .hex-Datei auf den uP aufspielen
brauchst Du nicht! Nur den 10k an VCC. Was aber noch sein könnte: Schwingt dein Quarz überhaupt? Setz einfach mal die Fuses wieder auf interne Clock. Gruß
-
Thread
Brauche eure Hilfe zum Programmieren
;"Sicherungskopie" 2.Nibble andi AL, 0b11110000 ; unteres Nibble auf Null setzen out PORTA,AL rcall lcd_enable ; Enable-Routine aufrufen pop AL ; 2. Nibble swap AL ; untere 4 bits (Nibble) nach
ret ; Erwartet die Position in AL lcd_cursor: sbr AL, 0b10000000 ; Bit 7 setzen rcall lcd_command rcall wait5ms ret lcd_print: lpm ; Laden tst R0 ; ist Zeichen =0 breq lcd_pend ; gehe zu end mov
-
Thread
Mikrocontroller Aufgabe
---- Für Ausgangspins, die mit Anfangswert "high" initialisiert werden sollen: zuerst die Bits im PORTx-Register setzen anschließend die Datenrichtung auf Ausgang stellen Daraus ergibt sich die Abfolge für einen Pin, der bisher als Eingang mit abgeschaltetem Pull-Up konfiguriert war:
Einschalten auf 1 gehen soll Machst du da dieselbe Reihenfolge, dann ist der Pin zwischen dem Setzen des DDR Registers und dem Ausgeben des 1 Bits kurze Zeit auf 0. Denn das war ja der Default nach dem Einschalten. [c] // bis hier hier ist der Pin im Tri-State DDRB = ( 1 << PB0 ); /
-
Thread
PWM Atmega8 auf dem 2. 8 Bit Timer/Counter
ich mit diesem Hinweis nichts anfangen. Ich verstehe nicht was du meinst, meiner Auffassung nach setzen die 3 Bits die ich aktiviere jeweils unterschiedliche Themenbereiche (PWM, Setmode und Prescaler für die Uhr). Ist dem nicht so? Viele Grüße Carsen
Hi > meiner Auffassung nach setzen die 3 Bits >die ich aktiviere jeweils unterschiedliche Themenbereiche (PWM, Setmode >und Prescaler für die Uhr). Ist dem nicht so? Nein. Mit der zweiten Zuweisung überschreibst du die erste.
-
Thread
mehrere Interrupts beim ATMEGA32
setzen, jedes zehnte mal die Uhr hochzählen und die Tasten entprellen, wenn erforderlich, dann ein Jobflag für Hundertstelsekunde setzen. Braucht man eine Wartezeit, so nimmt man statt eines Jobflags
Dir kann zu jeder Zeit ein Interrupt akzeptiert werden. In der Interruptroutine bei mir könnte das Bit freigegeben werden und damit wären auch weitere Interrupts akzeptierbar. Bei den Rückkehradressen dürfte es keine Probleme geben. Nur für die InterruptEnable Bits gibt es keinen Stack. Nachteil bzw
-
Thread
Seminarprojekt Binäruhr, passenden µC gesucht
unsigned time; int main(){ time = 0; // 0 sekunden bei start DDRA = 0xff; // Ausgänge setzen ( Alle 8 ) DDRB = 0xff; // Ausgänge setzen ( Alle 8 ) DDRC = 0x01; // Ausgänge setzen ( 1 bit ) while(true){ time %= 60*60*24; // Damit timer nicht zu gross wird unsigned char
Sekunden m = (time/60)%60, //Minuten h = (time/60/60)%24; // Stunden // Ausgänge setzen PORTA = s | ( m<<6 ); // 6 bit Sekunde + 2 bit minuten = 8bit PORTB = ( m >> 2 ) | ( h << 4 ); // 4 bit Minuten + 4 bit Stunden PORTC = ( h >> 4 ); // 1 bit Stunden } } [/code
-
Thread
Auslesen und setzen von Fuses per ftisp
Hi, ich setze mich gerade mal mit dem Programm ftisp auseinander. (http://hubbard.engr.scu.edu/avr/ftisp/) (Mein USBProg hat wegen eines Defektes einen neuen Mega32A bekommen und dieser braucht Firmware ;)
mich aus folgendem Grund nicht heran: ftisp liefert mir diesen Fuse Wert: "ftisp: Reading fuse bits => 0x289928" Zunächst verwirrt es mich, dass hier 3 Bytes zu sehen sind Zweitens sind die default-Fuses für den Atmega32A nach Datasheet 0x99E1 Hätte ich diese Werte in dem obigen wiedergefunden
-
Thread
9-Bit Kommunikation
umgestellt. Aber wie setze ich das sogenannte Mode-Bit? Das müsste ja dann das 9.Bit sein. Wie komme ich an dieses Bit ran? Ich habe das gleiche schon mit einer 8Bit-Übertragung und gesetztem Parity Bit ausprobiert. Damit
wie dieser Abschnitt auch immer in deinem Datenblatt heißt. Wieder und immer wieder > Das UCSZ-Bit habe ich auf 9Bit umgestellt. Aber wie setze ich das > sogenannte Mode-Bit? Das müsste ja dann das 9.Bit sein. > Wie komme ich an dieses Bit ran? Beim Mega16 ist das das Bit TXB8 im Register UCSRB