-
Thread
LCD STN 320x240 große Schrift 16x24 / 20x10 ATmega8 Assembler TWI USART inkl. Fontgenerator VBA
Programmiert, I2C/TWI würde gehen. Gibt es eigentlich eine Library für Deine Schaltung bzw. Programm? Oder geht da auch ne Standard Lib? Ich hab das mit dem I2C mit beiden Firmware Versionen probiert. Viele Fragen....aber ich hoffe das nervt nicht so sehr. Erstmal vielen Dank is ne total coole Sache Deine Schaltung
auch treiben können, notfalls Oszi anschließen und Pegel prüfen). Aktivierte Pull-Upps: sbi PORTC,4 ; PULL-UP ein sbi PORTC,5 ; PULL-UP ein Es könnte auch sein, dass die SLAVE-Adresse nicht korrekt ist. Einfach mal einen I2C-Scanner anschließen oder per Hand die einzelnen Adressen
-
Thread
PIC18F45k20 interrup & Serielle Übertragung
OFF, WDTPS = 32768 // CONFIG2H #pragma config MCLRE = OFF, LPT1OSC = OFF, PBADEN = ON, CCP2MX = PORTC // CONFIG3H #pragma config STVREN = ON, LVP = OFF, XINST = OFF // CONFIG4L #pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF // CONFIG5L #pragma config CPB = OFF, CPD = OFF // CONFIG5H
Schmeiss erst mal alle delay raus. RCIE && RCIF ReadUSART() geht nach message[], wofür dann empfang[] ? Dann musst du noch das j managen. Hier lohnt es sich, gleich über Ringpuffer einzulesen. Sendest du irgendwie 'H','a','l','l','o','\0', ' ', Zufallswert
-
Thread
7-Segment Multiplex Library
> Segmente wild verteilt: 8 * Clear Pin, Test Bit, Set Pin = 24 Befehle Wenn es nicht anders geht, muss man da durch. Atmega328: Quarz, UART, ADC und ein bisschen PWM... mfg.
Pin = 24 Befehle > > Muss ja nicht sein. > Mit einer etwas geänderter Tabelle fur Werte 0-9 geht das > auch schneller > ldi zl, low(Table<<1) > ldi zh, high(Table<<1) > clr r15 > add r16, r16 ; r16 ist die anzuzeigende Zahl > add zl, r16 > adc zh, r15 > lpm
-
Thread
AVR bootloader Probleme
nur ein Compilerproblem sein, wenn alle Einstellungen + Programm identisch sind und es beim einen geht, beim anderen nicht, ... ?
Auslesen des Tabelleneintrags wird nur ein lpm verwendet (kein elpm/RAMPZ). Bei einem Bootloader geht das auf Grund seiner besonderen Adresslage in die Hose und es kracht. Ich würde es mit -fno-jump-tables versuchen.
-
Thread
ADC Wandlung, was mache ich Falsch
GGF. die while schleife .... }; .... if ( ADIF == 1 ) { PORTC ^= _BV(PC0); } [/c] Ich bedanke mich für euere Mühen und verbleibe mit freundlichen Grüßen Balou Baer
Das beginnt mit dem gezielten 0 bzw. 1 setzen von Portbits um damit LEDs ein bzw. aus zu schalten; geht über Pin Abfragen um damit die Stellung von Schaltern bzw. Tastendrücke zu detektieren und endet noch lange nicht beim ADC. Bits in einem Byte gezielt manipulieren zu können, ist absolute Basistechnik
-
Thread
C# Serielleschnitstelle Empfang zu viele zeichen
OFF, WDTPS = 32768 // CONFIG2H #pragma config MCLRE = OFF, LPT1OSC = OFF, PBADEN = ON, CCP2MX = PORTC // CONFIG3H #pragma config STVREN = ON, LVP = OFF, XINST = OFF // CONFIG4L #pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF // CONFIG5L #pragma config CPB = OFF, CPD = OFF // CONFIG5H
eine \0 kommt. Dann muss man auch nicht irgendwie mit Sleep arbeiten, was früher oder später schief geht. RS232 kann selber nie ein ende feststellen.
-
Thread
Kapazitive Erdfeuchtemessung
habe einen atmega88 mit folgendem code: [c] DDRC = (1 << DDC0); //Port auf Ausgang setzten PORTC |= (1 << PINC0); /* setzt Bit auf 1 */ _delay_ms(5); // kurz warten bis geladen DDRC &= ~(1 << DDC0); //Port auf Eingang PORTC &= ~(1<<PINC0); //Tristate
Wenn du die dann im Erdreich versenkt hast, musst du eine Kapazitätsmessung durchführen. Das geht GANZ BESTIMMT nicht so, wie in diesem Code-Schnipsel! Wenn du einen funktionierenden Code für die Kapazitätsmessung hast, musst du deinen Messaufbau "kalibrieren": Mach eine Messung bei "pupstrockener
-
Thread
ITG3200 Probleme Bascom
$crystal = 16000000 $hwstack = 50 $swstack = 50 $framesize = 50 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.5 , Db6 = Portc.6 , _ Db7 = Portd.7 , E = Portc.3 , Rs = Portc.4 Config Lcd = 16 * 4 Waitms 10 Initlcd Cls Waitms 50 Cursor Off Noblink $lib "i2c_twi.lbx" Config Scl = Portc
nicht sonderlich toll zu sein, 2000°/s braucht man auch niemals, falss es um ein modell oder roboter geht. gruß, norbert
-
Thread
ATmega644 Timer1 CTC-Mode Timerinterrupt unregelmäßig
ldi r24, Low (HWRD(COUNT)) ldi r25, High(HWRD(COUNT)) ldi r16, 0x00 out PORTC, r16 _Loop32bit: subi r22, 1 sbci r23, 0 sbci r24, 0 sbci r25, 0 nop nop brne _Loop32bit ldi r16, 0xFF out PORTC, r16 _End: rjmp
#3764739: > Das kurriose daran ist, dass die Uhr nun "vorauseilt". Um dieses Nein, ohne LCD geht die Uhr so, wie es sein sollte.
-
Thread
[[C] LCD die 10000ste
Kästchen noch grade so sieht --> erledigt. Das ganze läuft auf einem Mega32, das LCD hängt an PortC und JTAG ist aus. Am Mega hängt ein 16Mhz Quarz, der auch fehlerfrei werkelt. LED blinken geht. Angeschlossen ist es wie folgt: PORT C 0 (22) = RS PORT C 1 (23) = PORT C 2 (24) = E
-
Thread
Anregungen / Fragen / Hinweise zu Wecker
; PORTB.OUTSET=0x81; PORTA.OUTSET=0x80; break; case 0x33: PORTC.OUTSET=0x61; PORTB.OUTSET=0x02; PORTA.OUTSET=0x80; break; case 0x34: PORTC.OUTSET=0x15; PORTB.OUTSET=0xA0; break; case 0x35: PORTC.OUTSET=0x51; PORTB.OUTSET=0x82; PORTA.OUTSET=0x80; break; case 0x36: PORTC.OUTSET=0x51; PORTB.OUTSET=0x83; PORTA.OUTSET=0x80; break; case 0x37: PORTC.OUTSET=0x49; PORTB.OUTSET=0x90; break; case 0x38: PORTC.OUTSET=0x71
-
Thread
Tastercode ATMega8, AVR
weiter geholfen :( if (!(PINB & (1<<PB0))) { PORTB |= (1<<PB0); _delay_ms(2000); PORTC &= ~ (1<<PC2); } else { turnLedOn(BIT_6,1); turnLedOn(BIT_7,1); } habe es jetzt so, wenn ich den Taster drücke, gehen die LED's für 2 sekunden aus
an diesem Pin den Pullup einschalten while( 1 ) { if( !( PINB & (1 << PB0) ) ) PORTC |= ( 1 << PC2 ); else PORTC &= ~( 1 << PC2 ); } } [/c] das ist einfach nur eine Zusammensetzung aus den Elementen der [[Bitoperationen]] und dem Wissen, was man im DDR Register
-
Thread
AVR LEDs mit Taster programmieren ,ATMEGA8
if(led==BIT_1 || led==BIT_4 || led==BIT_5 || led==BIT_6 || led==BIT_7){ if(on==1){ PORTC &= ~led; }else{ PORTC |= led; } return; } if(led==BIT_2 || led==BIT_3){ if(on==1){ PORTB &= ~led; }else{ PORTB |= led; }
dazu. Für die 3 Codezeilen in der Hauptschleife brauchst du wirklich keine eignene Funktionen. Das geht locker alles noch so. Und - ganz wichtig - du kriegst Übung.
-
Thread
Brushless Regler Umbau
nachdem Du feststellen musstest, das dein IC im Eimer ist, hast Du sicher einen neuen eingelötet? gehts denn nun?
ADMUX = 5; hilft nichts. Hat jemand kurz ne Idee? Soll generell Übung sein bevors an PPM geht.
-
Thread
7-Segmentanzeige Multiplexer Schaltung ok?
nicht erreichen. Warum liest Du nicht die Beiträge, denen zu entnehmen ist, dass das so nicht geht. Der µC hat auch ein Datenblatt! Aber mehr darf ich Dir ja nicht schreiben :-(
Baumann schrieb im Beitrag #3754172: > Bau es doch erst mal so auf, damit Du siehst, daß es nicht geht. > ;-) Sie geht ja! Nur die Segmentwiderstände muß man vergrößern, um die Grenzwerte des MC einzuhalten. Und die Basiswiderstände kann man weglassen.
-
Thread
[C] PWM für Ladungspumpe, Versatz realisieren?
******************************** DDRD = 0xff; // PortD Ausgänge DDRC = 0x00; // PortC Eingänge // **** Einrichten von PWM Betrieb *************************************************************** // Der Timer 1 wird im Fast PWM Modus betrieben TCCR1A = 0b10110001;
Hat sich erledigt, habe auf Phase Correct PWM umgestellt, jetzt gehts. Danke :)
-
Thread
(Wahrscheinlich) Pointer Problem
////////////////////////////////////// #define DATA165_PIN PC5 #define DATA165_PORT PORTC #define DATA165_DDR DDRC //////////////////////////// #define CLOCK165_PIN PC4 #define CLOCK165_PORT PORTC #define CLOCK165_DDR DDRC #define CLOCK165_high() (CLOCK165
nen printf bei jedem case hintergehangen damit ich sehe das er die auch wirklich durchführt, das geht aufjedenfall.
-
Thread
Problem mit meinem Projekt (Quadrocopter)
; // use A2 instead of d8[/color] [color=#7E7E7E]//#define OVERRIDE_BUZZERPIN_ON PORTC |= 1<<2 //PORTB |= 1;[/color] [color=#7E7E7E]//#define OVERRIDE_BUZZERPIN_OFF PORTC &= ~(1<<2); //PORTB &= ~1;[/color] [color=#7E7E7E]/*******************************************
#7E7E7E]//#define LANDING_LIGHTS_DDR DDRC[/color] [color=#7E7E7E]//#define LANDING_LIGHTS_PORT PORTC[/color] [color=#7E7E7E]//#define LANDING_LIGHTS_BIT PORTC0[/color] [color=#7E7E7E]//#define LANDING_LIGHTS_INVERT[/color] [color=#7E7E7E]/* altitude above ground (in cm) as reported
-
Thread
MPU-9150 Kompass mit BASCOM auslesen
0x0A (CNTL), address 0x0C 5. Read mag: Read 6 bytes from 0x03 (HXL), address 0x0C Schritt 1-3 geht problemlos, hier wird ja auch noch direkt auf 0x68 zugegriffen, das ist die Adresse meiner MPU. Bei Schritt 4. ist für mich geistig Schluss, hier würde ich mich über Lösungsvorschläge freuen:
..... 'I2C Config Sda = Portc.1 Config Scl = Portc.0 Dim Busaddress As Byte Dim Busaddress_read As Byte Dim Chipaddress As Byte ..... '------------------------------------------------------------------------------ Scanbus:
-
Thread
ATmega32A; 595; 165 Code Hilfe benötigt
RCLOCK_PORT PORTC #define RCLOCK_DDR DDRC /////// #define RCLOCK_high() (RCLOCK_PORT |= _BV(RCLOCK_PIN)) #define RCLOCK_low() (RCLOCK_PORT &= ~_BV(RCLOCK_PIN)) //////////////// #define CLOCK_PIN
RCLOCK_PORT PORTC #define RCLOCK_DDR DDRC /////// #define RCLOCK_high() (RCLOCK_PORT |= _BV(RCLOCK_PIN)) #define RCLOCK_low() (RCLOCK_PORT &= ~_BV(RCLOCK_PIN)) //////////////// #define CLOCK_PIN
-
Thread
Mega32 AnalogComparator Interrupt löst nicht aus
); while(1) { uint8_t i = 0; //um zu sehen, ob etwas passiert i = PORTC; i++; PORTC = i; } } void init(void) { TCCR0 = (1<<WGM00) | (1<<WGM01) | (1<<COM00) | (1<<COM01) | (1<<CS01); //Timer0 init auf FastPWM Inverting Mode, Prescaler
das ACD-bit lösche. So stand es in dem Thread. Aber auch ohne das Aus- und wieder Einschalten geht es nicht.....
-
Thread
HD44780 Display zeigt nichts an
nicht zu kurz. Und ich hoffe das es nur ein "#define F_CPU" im gesammten Projekt gibt. Ansonsten geht man *auch* von einer falschen Verdrahtung bevor man die Software beschuldigt.
Anhang. Das Programm ist nicht mit deiner Lib programmiert sondern was eigenes. Wenns damit nicht geht tip ich auf Hardwareproblem.
-
Thread
Atmega16 PortD
Entweder der Controller ist im Arsch oder die Verbindung die unter dem Controller zu VCC geht ist nicht in Ordnung. Wie hoch sind die Spannungen an PORTB, PORTC?
Martin B. schrieb im Beitrag #3711488: > Wenn jemand sagt wie und ob > es geht, werde ich selbstverständlich die Bilder aus dem ersten Post > noch nacheditieren. a) geht nicht b) haben die Mods das schon erledigt. Das soll aber keine Entschuldigung fürs nächste mal sein
-
Thread
Problem mit ATmega164A und LCD FDCC1601E
LCD_RW_PORT PORTC /**< port for RW line */ #define LCD_RW_PIN 1 /**< pin for RW line */ #define LCD_E_PORT PORTC /**< port for Enable line */ #define LCD_E_PIN
Hallo Uwe, daas mit dem 2 x 8 Zeichen war das Problem! Display geht jetzt danke! Gruß Arne
-
Thread
Atmega48 UART sendet bei TX Abschaltung ein ungültiges Zeichen
Da ich für Inputs (Taster) nur PROTC nutze, wird auch nur dieser von mir konfiguriert. .equ PORTC_DDRC = 0b00001001 ; DDRC (Richtungsregister, 1=Output, 0=Input) .equ PORTC_PORTC = 0b00000000 ; Alle Bits an PORTC0 ausschalten ldi Tmp, PORTC_DDRC ; DDRC (Richtungsregister) setzen out DDRC, Tmp ldi Tmp, PORTC_PORTC ; Bits und Pullup-Widerstände setzen out PORTC, Tmp @Alle anderen: Hmm, nun wenn das Abschalten des TX nicht Usus ist, dann ist das ja in Ordnung. Ich kenne den genauen
-
Thread
Atmega16 und LCD Tutorial
Display an PORTC angeschlossen? Dann JTAG deaktivieren.
externen Quarz ändenr kann. Ich habe in der lcd-routine.h mal als F_CPU 1, 4 und 8 Mhz ausprobiert. geht alles nicht :(
-
Thread
Anfänger fragen zur Programmierung des Atmega32A in C
für was steht? Frage 3: Ist PORTC &= 255-_BV(0); die kurzfassung von PORTC = PORTC & 255-_BV(1); Frage 3.1: Was macht diese Bitmanipulation? Und wie kommt es dazu das dadurch der pin auf 0 gesetzt wird? Frage 3.2: Ist PORTC
Nachschlagewerk was mir erläutert, welche zahl für > was steht? Wie oben beschrieben. Wenn es darum geht eine Dezimalzahl aus einem Port auszugeben, musst du immer Binär denken. [c] // Alle diese Befehle machen genau das selbe! PORTC = 255; // Dezimale Schreibweise PORTC = 0xFF; // Hexadezimale
-
Thread
ATA Floppy mit ATmega1284P ansteuern
Hallo, was soll das ... [c] PORTC= (PORTC & clr_bit) | stat_command; [/c] machen - keine Definition zu finden. Musst du evl. eine bestimmete Länge für den Resetzyklus einhalten?! Sascha
~0b1111100 Damit ist clr_bit= 0b0000011 auf 8Bit erweitert also 0b00000011 ! Beim verunden mit PortC wird PC7, alias Reset, wieder Low und damit aktiv. Sascha
-
Thread
Registerverständnisfrage
nicht gefunden, WAS mann mit den unteren (r0-r15) Register NICHT machen >kann. ldi, cpi ect. geht nicht. >Wo finde ich die Informationen über die unteren register? Im Assembler Instruction Set Manual vom AVR. Gibts bei Atmel zum Download.
Datenleitung des Ds18B20 .equ DS_DDR = DDRC ;Port des DS18B20 .equ DS_Port = PortC ; .equ DS_Pin = PinC ; .equ LCD = PortB ;LCD-Datenport .equ LCDDDR = DDRB ; .equ LCMD = PortA ;LCD-kommandoport .equ LCMDDR = DDRA
-
Thread
Port benennen
Wieso wurde das beim ATmega eigentlich so umständlich gelöst? Beim PIC geht das meiner Meinung nach viel intuitiver. PORTCbits.RC2=1; vs. PORTC|=(1<<PC2); PORTCbits.RC2=0; vs. PORTC&=~(1<<PC2); if(PORTCbits.RC2) vs. if(PINC&(1<<PINC2))
Pascal schrieb im Beitrag #3669535: > PORTC|=(1<<PC2); dann schreib PORTC|=_BV(PC2);
-
Thread
AT90USB162 PortC funktioniert nicht als Eingang
output PORTB = 0x00; // initial state: no channel is on DDRC = 0x0f; // upper nibble of PORTC as input, lower nibble as output PORTC &= 0x0f; // no pull-ups on upper nibble of PORTC uint8_t sel = 0; unsigned long cnt = 0; PORTB_SET(7); // set PB7 to 1 // Channel
ging davon aus, dass das Bit3 ohne Funktion ist und beim Schreiben einer 1 diese einfach in Nirvana geht... Ich habs jetzt mal entsprechend mit einer 0 versucht: DDRC = 0x07; PORTC &= 0x07; aber das liefert das gleiche Resultat. Die while Schleife läuft nicht an...
-
Thread
Probleme mit Zusammenspiel von Uart-Interrupts
Nachricht (siehe Bild im Anhang), obere Nachricht. Ein Atmega 8 als Slave soll darauf antworten. Da geht bis jetzt auch sehr gut. Ich habe allerdings 2 Probleme, die ich einfach nicht in den Griff bekomme. 1. Der slave senden irgenwoher noch ein "\0" (siehe 3. Zeile, rot eingekreist) 2. Der Slave hört
großes Projekt mit Interrupts ist, lasse ich mir gern auch erklären, wie es richtig oder eleganter geht. Diese Anwendung der Interrupts für RX und TX habe ich aus einem bestehenden Quelltext. Hier nun mein Quelltext des Slaves: [c]#define BAUDRATE 9600 #define F_CPU 8000000 #define MYADRESS 2
-
Thread
HC-SR04 Assembler für Abstandmessung
Ein Kommentar, für welche CPUs das geht und für welche nicht, wäre hilfreich.
Standardbeschaltung ([[AVR-Tutorial:_Equipment#Selbstbau]]) - HC-SR04 (Trigger an PORTB, Echo an PORTD, LCD and PORTC) - LCD (16x2, HD44780) Bug: - angezeigter Abstand konstant ca. 5mm zu wenig. Ich habe die Berechnung und Anzeige mit vorberechneten Werten geteste und es ergab den korrekten Abstand. Im Programm
-
Thread
Wie kann ich den Inhalt eines Arrays in einen port schreiben?
TIMER0_OVF_vect ) // Overflow Interrupt Vector { voice++; if (voice == 16) { PORTC |= (1<<PC5); //Reset High voice =0; } else { PORTC &= ~ (1<<PC5); //Reset LOW } PORTC ^= (1<<PC4); //CLK } [/c] mit [c] if (voice == 8) [/c]
TIMER0_OVF_vect ) // Overflow Interrupt Vector { voice++; if (voice == 8) { PORTC |= (1<<RESET); //Reset High voice =0; PORTC &= ~ (1<<RESET); //Reset LOW } PORTC |= (1<<CLK); PORTC &= ~(1<<CLK); } [/C]
-
Thread
ATtiny85 Takt setzen
brauchte ich den nur noch reinstöpseln, USBasp irgendwie ranstecken, Programm anpassen (ATmega328: auf PORTC, ATtiny85: hat nur PORTB). Die Voreinstellungen für avrdude waren schnell anzupassen, unter Hardware kann man dann ja den Zielprozessor einstellen. Habe dort ATtiny85 ausgewählt, man kann dort auch
einfacher, den Prozessor so zu beschreiben. Auch, wenn ich ihn hin- und herstecken muss. Jetzt geht es ans Aufräumen: Mal Timer auf dem Lütten antesten, vielleicht noch andere "Animationen" basteln. Eine gute Übung, um damit und zwei Schieberegistern einen 3x3x3-Cube anzutreiben. Habe zwar Mini-Arduinos
-
Thread
Time-Interrupt beim RFM12
produziere. man sagt ja, damit könnte der µC eigenartige zustände annehmen. Das klappt aber auch nicht. Es geht nur wenn den Timer komplett von Anfang an ausschaltet ist.
Das ganze Programm bleibt stehen. Wenn ich den Timer ausschalte geht es. Warum ??? Irgendwie führe ich selbstgespräche !
-
Thread
atmega8-Timer1 zu langsam
Ohhhhhhhhhh, mist! Ja klar, gehts. Danke Olivier!!! Aber irgendwie ist es noch recht ungenau. Innerhalb von 20 Minuten läuft meine Uhr schon 10sec nach. Da ich ein Quarz benutze und da (8Mhz/(64*125)) ganzzahlig teilt müsste es
. Hmm, gibt es beim AVR nicht, also entweder CTC Mode oder die doppelte Quarzfrequenz. Zur Not geht auch Prescaler 1024 und manuelles Nachladen des Timers in der ISR wie zu seeligen 8051 Zeiten. Wenn kein anderer Interrupt läuft geht das sicher. Oder man nimmt einfach Timer1 im CTC Mode, damit
-
Thread
ATMEGA88 BOD wird ausgelöst sobald PINC2 auf low geht
Ausgänge. Habs gegengecheckt. [c] DDRC &= ~((1<<DDC0) | (1<<DDC1) | (1<<DDC2) | (1<<DDC3)); PORTC |= (1<<PORTC0) | (1<<PORTC1) | (1<<PORTC2) | (1<<PORTC3); [/c] Das ist die Einstellung für den Port. Wenn es Ausgänge wären, dann würde das Drehencoderinterface ja auch mit ausgeschalteter BOD
wird dann wäre es kein Wunder wenn die Spannung einbricht oder das Netzteil in die Strombegrenzung geht.
-
Thread
Bei Betätigung eines Tasters Strom geben -> Atmega8
******************* ; PORTC - Port C Data Register .equ PORTC0 = 0 ; Port C Data Register bit 0 .equ PC0 = 0 ; For compatibility .equ PORTC1 = 1 ; Port C Data Register bit 1 .equ PC1 = 1 ; For compatibility .equ PORTC2 = 2 ; Port C Data Register bit 2 .equ PC2 = 2 ; For compatibility .equ PORTC3 = 3 ; Port C Data Register bit 3 .equ PC3 = 3 ; For compatibility .equ PORTC4 = 4 ; Port C Data Register
-
Thread
PWM-Programmierung_Lüfter
start=10) { if(!(++count%100)) { pos=++pos%2; } PORTC |= (1<<PC1); if(pos) _delay_us(1900); else _delay_us(1100); PORTC &= ~(1<<PC1); _delay_ms(18); start=0; } [/c] Schonmal
0 ist. Und genau darum geht es bei PWM: die Variation dieser zeitlichen Verteilung.
-
Thread
Ausgangadressierung PORTC durcheinander?
Soweit so gut, allerdings lässt sich der Port C recht seltsam schalten. Schreibe ich das: [c]PORTC = 11111110;[/c] so geht die LED an PC3 an. Schreibe ich folgendes: [c]PORTC = 11111101;[/c] so geht die LED an PC1 an. Schreibe ich folgendes: [c]PORTC = 11111011;[/c] so gehen die LED´s
bzw, die Bitnummern sind natürlich die für dich geltenden Werte einzusetzen. Um also den Pin PC3 am PORTC auf 1 zu setzen [c] PORTC |= ( 1 << PC3 ); [/c] [[Bitmanipulation]]
-
Thread
Variablenübergabe bei _delay_ms
arbeiten. Mögliche Lösung: [c]void Ebenen_ansteuern(unsigned char ebenen, unsigned char dauer) { PORTC=ebenen; while(dauer--) _delay_ms(1); } [/c]
ja, es geht nur mit Konstanten. Noch ne Möglichkeit: Makro (etwa so): [c] #define Ebenen_ansteuern(ebenen, dauer)\ do{\ PORTC = ebenen;\ _delay_ms(dauer);}\ while(0) [/c]
-
Thread
AVR Attmega8a Routinenaufruf fumktioniert nicht (asm)
unmittelbar davor eingestellt(Speicheradresse für Y; Datenmaske für die Abfrage des PINC und setzen des PortC und Position des Kursers im Display) Der anschließende Aufruf funktioniert auch was jedoch nicht geht ist ein weiterer Aufruf mit geänderten Vorgaben. Der zweite Aufruf funktioniert aber wenn ich
[/avrasm] ist es nicht gesetzt. Hier [avrasm] ldi r16,0b00000101 out DDRC,r16 out PORTC,r16 [/avrasm] aber schon.
-
Thread
Atmega8 hängt nach Interrupt
Guten Abend :) Dieses mal habe ich ein Problem mit meinem Programm für den Atmega8. Wenn PortC >= 11 ist und der Interrupt ausgelöst wird, hängt sich das Programm auf und reagiert nicht auf interrupts. Ich bitte euch mir weiterzuhelfen :) LG [c]uint8_t segcodeB[11]; bool segcodeD[11];
1<<PD7); DDRB &=~(1<<PB0)|(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB4)|(1<<PB5); PORTD|=(1<<PD2); PORTC |=(1<<PC0)|(1<<PC1)|(1<<PC2)|(1<<PC3); MCUCR=0b00000011; GICR=0b01000000; sei(); while(1) { if (triggermove) { darstellzahl[0]=darstellzahl[1]; darstellzahl
-
Thread
LED Cube programmieren
{ DDRC=0b0011111; //Port C Ausgänge: 0,1,2,3,4 while(1) { PORTC=0b0000001; _delay_ms(30); PORTC=0b0000011; _delay_ms(30); PORTC=0b0000111; _delay_ms(30); PORTC=0b0001111; _delay_ms(30); PORTC=0b0011111; _delay_ms
SPI_transfer(0b10101010); PORTB=0b0001000; //LATCH On-Off PORTB=0b0000000; PORTC=0b0000001; // Ebene 1-5 Werden angesteuert. _delay_ms(timeperiod); PORTC=0b0000010; _delay_ms(timeperiod); PORTC=0b0000100; _delay_ms(timeperiod); PORTC=0b0001000
-
Thread
Poti Auslesen und in Terminal anzeigen
char Buffer[10]; uart_init(F_CPU, BAUD); DDRC &= ~(1<<PC0); /* Pin PC0 als Eingang */ //PORTC |= (1<<PC0); /* internen Pull-Up an PC0 aktivieren */ PORTC = 0; ADC_Init(); // Initialisierung Analogeingang while(1) { result = ADC_Read(0); utoa( result, Buffer
char Buffer[20]; uart_init(F_CPU, BAUD); DDRC &= ~(1<<PC0); /* Pin PC0 als Eingang */ //PORTC |= (1<<PC0); /* internen Pull-Up an PC0 aktivieren */ PORTC = 0; ADC_Init(); // Initialisierung Analogeingang put2s( "ADC Messung: PC0\n" ); while(1) { result = ADC_Read
-
Thread
2 Stellige 7 Segment Anzeige
geschafft dass die Anzeige von 00 bis 99 zählt. Vllt nicht sehr elegalnt und effektiv gelöst aber es geht. Ist es normal dass ich immer einen leichten Schatten habe? Also wenn ich Zb die Zahl 19 ausgebe habe ich in der Anzeige für den 1er einen leichten Schatten vom 9er drinnen?
eigentlich 16 stehen, mit dem Auge erkennt man es zwar besser aber ihr könnt euch sicher denken um was es geht.
-
Thread
Wer verwendet RFM69?
Geht nicht. Ich schau mir die Funktion gerade nochmal an.
rfm_cmd((rfm_cmd(0x3DFF, 0) | 0x3D04), 1); [/c] Was hat es mit diesem RX-Restart auf sich? Was geht hier schief?
-
Thread
Verstärker für LCD
ja mit ein paar kleinen delay Änderungen gehts, aber das Hauptporblem ist das Schwanken der anderen Pins...
mitkommt? Ja. dirk h. schrieb im Beitrag #3637852: > ja mit ein paar kleinen delay Änderungen gehts, aber das > Hauptporblem > ist das Schwanken der anderen Pins... Wieviele und welche Stützkondensatoren hast du wo drin? mfg.