-
Thread
R2R-Genauigkeit in der Praxis
, 0b11111111 out DDRD, r16 out DDRC, r16 Schleife: inc r16 brne NoTrigger sbi PORTC,0 ; Oszi triggern NoTrigger: out PORTD,r16 ;push r16 ;ldi r16, 10 ;rcall Delay_us ;pop r16 cbi PORTC,0 rjmp Schleife [/avrasm] Ich habe mit 2 Geschwindigkeiten gemessen,
Mein Vorschlag wäre das: [avrasm] .equ F_CPU = 8000000 ; Systemtakt in Hz ... Schleife: sbi PORTC,0 ; Oszi triggern ldi r16,0 cbi PORTC,0 out PORTD,r16 inc r16 out PORTD,r16 inc r16 ... (insgesamt 256 mal!) ... inc r16 out PORTD,r16 rjmp Schleife [/avrasm]
-
Thread
Fehlermeldung bei ATmega48
include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #define green_led0_on() PORTC |= _BV(0) #define green_led0_off() PORTC &= ~_BV(0) #define green_led1_on() PORTC |= _BV(1) #define green_led1_off() PORTC &= ~BV(1) int main(void) { DDRB = 0b11111111; // PORTB auf Ausgang schalten DDRC = 0b11111111; // PORTC auf Ausgang schalten (benutzt wird nur PC0 und PC1) DDRD = 0b11111011; // PD2 als Eingang PORTD = 0b00000100; // PD2 Auf HI setzen für Schalten gegen Masse EIMSK |= _BV(INT0); // Interrupt
-
Thread
Drucker am AVR anschlissen
&B00011110 'Pullup für PB1 bis PB4 aktivieren (Taster) Portc = &B00001111 'Beim starten auf 0 setzen Portd = &B00000000 'Beim starten auf 0 setzen Dim Nutzdaten As String *
Dim Bytewerte(30) As Byte At Textstring Overlay Dim X As Byte Dim Y As Byte Led_gruen Alias Portc.0 Led_rot Alias Portc.1 Taster1 Alias Pinb.1 Taster2 Alias Pinb.2 Taster3 Alias Pinb.3 Taster4 Alias Pinb.4 Strobe Alias Portc.3 Init_signal Alias Portc.2 Busy Alias Pinb.5 Ack_signal Alias
-
Thread
Code::Blocks: AVR - Compiler-Kommandozeile bekommt Host-Optionen
2E6 #include <avr/io.h> #include <util/delay.h> int main(void) { //DDRD |= (1<<PD0); PORTC.DIR = PIN0_bm | PIN1_bm; /* Replace with your application code */ while (1) { //PORTD = (1<<PD0); //PORTC.OUTSET |= (1<<PIN1); PORTC.OUTSET = PIN0_bm; _delay_ms(1000); //PORTD &= ~(1<<PD0); //PORTC.OUTSET &= ~(1<<PIN1); PORTC.OUTCLR = PIN0_bm; _delay_ms(1000); } [/c]
-
Thread
Stromzähler S0 Schnittstelle auswerten
delay.h> #include <stdlib.h> int main(void){ // LED's for debugging DDRC = 0xFF; PORTC = 0xFF; DDRA = 0x00; PORTA = 0xFF; PCMSK0 |= (1<<PCINT0); PCICR |= (1<<PCIE0); // enable global Interrupts sei(); // Endless while while
delay_ms(100); _delay_ms(100); _delay_ms(100); _delay_ms(100); PORTC ^= (1<<PC7); } return 0; } ISR(PCINT0_vect){ PORTC ^= (1<<PC0); } [/c] Am PORTC sind die LED's vom STK500 angeschlossen. An PA0 ist auf SO+ und GND auf SO- angeschlossen.
-
Thread
ATmega32 und RFM12
0x4000) { for(i = 0; i < 3; i++) { // Turn on LED PORTC |= (1<<PC0); _delay_ms(500); // Turn off LED PORTC &= ~(1<<PC0); } // !er, !ebb, ET, ES, EX, !eb, !ew, DC RF12_WRT_CMD(0x8239);
DDRC |= (1<<PC0); // Toggle LED 3 times for(i = 0; i < 3; i++) { // LED on PORTC |= (1<<PC0); // Wait _delay_ms(200); // LED off PORTC &= ~(1<<PC0); // Wait _delay_ms(200); } // Port for nIRQ (INT0) DDRD &= ~(1<<PD2); // Initialize
-
Thread
Atmega8 Eingang Ausgang Verständnis Problem
DDRD, r16 ;PortD als Eingang definieren ldi r16, 0xFF ;PortC auf VCC out PORTC, r16 schleife: sbic PIND, 2 ;nächsten Befehl überspringen wenn Bit 3 = 0 ist von PIND sbi PORTC, 5 ;PORTC PC5 auf GND sbis PIND, 2 ;nächsten Befehl überspringen wenn Bit 3 = 0 ist von PIND cbi PORTC, 5 ;PORTC PC5 auf GND rjmp schleife [/avrasm] zwar ober-overkill aber naja ;) THX an euch ;)
-
Thread
Neuer STK500 und ATmega8
. STK500 ISP6PIN mit SPROG2 verbunden (6 adrige Flachbandkabel) 2. STK500 PORTD mit Switches und PORTC mit LEDS verbunden. 3. AVRStudio 4 leds.asm assembliert "leds.hex" 4. AVRStudio 4 das Programmierfenster (STK500 in ISP Mode with ATmega8) geöffnet und übertragen (s. Screenshot) Hab ich
Und wenn du die Taster an PortC ansteckst, dann tut sich mit den Tasten 0 und 1 auch was.
-
Thread
Unterprogramm mit 2 Variabeln und debounce Befehl aufrufen
.2 = 0 Portc.3 = 1 Portc.4 = 1 Portc.5 = 0 Waitms Pause2 Portc.2 = 0 Portc.3 = 1 Portc.4 = 0 Portc.5 = 1 Waitms Pause2 Portc.2 = 1 Portc.3 = 0 Portc.4 = 0 Portc.5 = 1 Waitms Pause2 Loop Until Merker2 = 0 End Sub Sub Tempo3 Do Portc.2 = 1 Portc.3 = 0 Portc.4 = 1 Portc.5 = 0 Waitms Pause3 Portc.2 = 0 Portc.3 = 1 Portc.4 = 1 Portc.5 = 0 Waitms Pause3 Portc.2 = 0 Portc.3 = 1 Portc.4 = 0 Portc.5 = 1 Waitms
-
Thread
Einzelnen Pin auslesen
> Hoffe jemand kann mir meinen Fehler erklären. > Also ich hab es bisher so versucht das ich PORTC (an dem hab ich die > Brücke gesteckt gehabt) ausgelesen PORTC dient zum Setzen (nicht zum Einlesen) der Ein-/Ausgangspins. Wie es richtig geht steht hier: http://www.mikrocontroller.net/
include <stdint.h> int main() { DDRC=0x00; DDRB = 0xff; while( 1 ) { PORTB = PORTC; } return 0; } [/c]
-
Thread
Was ist heir falsch (programmcode)
PORTC, r18 ;alles aus out PORTD, r18 main8: LDI R17, 0b00000001 ;aufbau in orange main9: ROR r17 out PORTA, r17 out PORTC, r17 CPI r17, 255 BRNE main9
, r19 out PORTC, r19 out PORTD, r19 nop call warten ;warten out PORTA, r18 ;alles aus out PORTB, r18 out PORTC, r18 out PORTD, r18 rjmp main
-
Thread
MAX7219 geht bei manchen Zeichen aus.
for(x=4;x>0;x--){ /*if(bit_test(adresse,x-1)){*/ if(adresse & (1<<(x-1))){ PORTC |= (1<<PDIN); //_delay_us(3); }else{ PORTC &= ~(1<<PDIN); //_delay_us(3); } PORTC |= (1<<CLK); //_delay_us(3); PORTC &= ~(1<<CLK); //_delay_us(
for (x=8;x>0;x--){ /*#if (bit_test(wert,x-1)){*/ if(wert & (1<<(x-1))){ PORTC |= (1<<PDIN); //_delay_us(3); }else{ PORTC &= ~(1<<PDIN); //_delay_us(3); } PORTC |= (1<<CLK); //_delay_us(3); PORTC &= ~(1<<CLK); //_delay_us(
-
Thread
Probleme mit dem ADC des ATmega8
näher als 8cm an dem Hindernis steht. if(adw > 82 ) // Zu nah an einem Hinderniss (8cm) { PORTC |= 0x20; } else // Weit genug entfernt { PORTC &= 0xDF; } // Ab hier beginnt die Servosteuerung, die aber nicht interessiert, da sie funktioniert^^ TCNT2 = nextreload; to++; if((to / ti)%2 == 0) { if(signal == 1) { PORTC &= 0xF7; signal = 0; nextreload = 225; } else { PORTC |= 0x08; signal = 1; nextreload = 30; } } if((to / ti)%2 == 1) { if(signal == 1) { PORTC &= 0xF7
-
Thread
GPS-Geraet streikt
16000000 $baud = 4800 Config Portb = Output Config Portd = Input Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Lcd = 20 * 4 Cls Cursor Off Dim C As Byte Dim I As Byte Dim Time As String * 6 Dim Av As String * 2
-
Thread
Display Programmierung mit GCC 16x4 Display
Der PORTC hat die Pins für den JTAG (PC2..PC5), dieser ist per default bei dem ATmega32 enabled. D.h. Du kannst die Pins nicht so einfach für Deine Anwendung verwenden. Entweder lege die Tasten an einen anderen
(Programmiere im > Büro) [C] int main() { char Buffer[20]; ... DDRC = 0x00; PORTC = 0x04; ... while(1) { utoa( PINC, Buffer, 2 ); lcd_setcursor(0,4); lcd_string( Buffer ); } } [/C] du siehst den Zustand deiner Portbits als 0-en und 1-en Wenn
-
Thread
Mein erstes Programm Code kürzen
#Define SEG_DISP_1 0b11110110 Dann kann man später den Code auch noch lesen, denn unter "PORTC = 0b11101101;" kann ich mir absolut nichts vorstellen unter "PORTC = SEG_DISP_1" aber, dass eine 1 dargestellt wird, bzw. werden sollte :) Gruß Roland
meinArray(meinIndex); //neuenWertBerechen meinIndex++; // Nächste Zahl im Array PORTC = meineVariabel; // neuen Wert an 7-SegmentAnzeige ausgeben }
-
Thread
AVR mit DS1820 Fehlausgabe
-- ' LCD: Db4-Db7 = Portd.4-Portd.7 E = Portd.3 Rs = Portd.2 Backlight = Portb.1 ' I2C: Sda = Portc.4 Scl = Portc.5 ' UART: RxD = Portd.0 TxD = Portd.1 ' 1wire Portb.0 ' Frei: Portb.2-Portb.5 Portc.0-Portc.3 '------------------------------------------------------------------------------ $regfile
.7 , E = Portd.3 , Rs = Portd.2 Config Lcd = 16 * 2 durch Software realisiert Config 1wire = Portc.5 Dim Ar(2) As Byte Cls Do 1wreset 1wwrite &HCC 1wwrite &H44 1wreset 1wwrite &HCC 1wwrite &HBE Ar(1) = 1wread(2) Waitms 500 Locate 1 , 1 Lcd Hex(ar(2)) ; Hex(ar(1))
-
Thread
Bitmanipulationsproblem
Welcher Prozessor ? PORTC wirklich Register für Input ?
Der Gast schrieb im Beitrag #4609110: > PORTC wirklich Register für Input ? Mit hinreichender Wahrscheinlichkeit sollte es das PINC Register sein...
-
Thread
RS485 nach 2,5 Paketen ist schluss
Ohne Autolinefeed void rs485_send_16Byte(uint8_t *s) { uint8_t i = 0; _delay_ms(15); PORTC |= (1<<PORTC4); //RS485 auf Sendemodus _delay_ms(5); while(i<16) { rs485_putc(*s); s++; i++; } _delay_ms(5); PORTC &= ~(1<<PORTC4); //sendemodus beenden - Empfänger
-
Thread
wie Daten an MSP430F1611 seriell einlesen?
Codeschnipsel: Hauptprogramm: [c] // Definitionen // lcd-anschlussbelegung #define LCD_PORT PORTC #define LCD_DDR DDRC #define LCD_DB PC0 #define LCD_E PC4 #define LCD_RS PC5 // INCLUDE #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <stdint.h
LCD-INITIALISIEREN void lcd_init(void) { unsigned char zaehler = 1; LCD_DDR = 0xff; // PORTC = ausgang _delay_ms(15); // 15 ms warten LCD_PORT = 0x3; // PORTC = 0x03 while(zaehler <= 3) // 3-mal enable { lcd_enable(); //enable
-
Thread
Alternative zu MPLab?!
? Hast du es mit MP-LAp erstellt? Könntest du mir bitte mal eis schicken, wo du ein paar Bits von PORTC setzt und ein paar rücksetzt? Ja der Programmer ist echt gut... Grüße Anne
Hallo, im Anhang das komplette Projekt, es wurde mit MPLAB erstellt. PORTC ist komplett aus Ausgang definiert und in einer Endlosschleife wird PORTC dekrementiert. Das hex-file ist schon dabei, mußt nicht erst komilieren. Jupp
-
Thread
Doppelter ISR Einsprung beim Analog Comparator?
} ISR (ANALOG_COMP_vect) { if ((ACSR & 0b00100000)==0) // Wenn Bit ACO gelöscht ist PORTC |= (1<<LED); else PORTC &= ~(1<<LED); } [/c]
(ANALOG_COMP_vect) { cli(); if ((ACSR & 0b00100000)==0) //Wenn Bit ACO gelöscht ist PORTC |= (1<<LED); //LED ON else PORTC &= ~(1<<LED); //LED OFF sei(); } [/c]
-
Thread
MEGA32 FUSES
MEGA32 nicht geändert, also sie sind auf Default-Werte eingestellt. int main(void) { DDRC=0xff; PORTC=0xff; while(1) {} return(0); }
zustimmen. Bist Du so dumm oder tust Du nur so?? Das liefert eine Suche hier im Forum mit Mega32 Portc: http://www.mikrocontroller.net/search?query=mega32+portc&forums[]=1&forums[]=19&forums[]=9&forums[]=10&forums[]=2&forums[]=4&forums[]=3&forums[]=6&forums[]=17&forums[]=11&forums[]=8&forums[]=14&
-
Thread
PROgramm schrittmotor
// Tastgrad festlegen PD4 OCR1B = (1024*197)/100; // Tastgrad festlegen PD5 //PORTC = 0x1F; //PORTD = 0xFF; while(1) { // Motortreiber ansteuern PORTC = 0x1C; } } Leider habe ich das Problem das mein Motor nur ganz leicht dreht wenn ich das PWM
#3102557: > Ich verwende den Atmega 16 und habe eine Vref von 0,9V und 1Ohm an Sense Mega16 und PORTC: Das JTAG hast du per Fuse abgeschaltet?
-
Thread
TimerO Problem MEGA88
Register speichern sei ; Interupts aktivieren loop: out PORTC,leds wait: in temp, TIFR0 sbrs temp, $0 rjmp wait ldi temp, 0x01 out TIFR0, temp com leds out PORTC,leds wait1: in
temp, $77 sts OCR0A, temp sei ; Interupts aktivieren loop:out PORTC,leds wait:in temp, TIFR0 sbrs temp, $02 rjmp wait sbi TIFR0, (1<<OCF0A) com leds out PORTC,leds wait1:in temp, TIFR0
-
Thread
Atmel Studio 7.0 einbinden von avr/io.h klappt nicht
(1 << DDD2) | (1 << DDD3) | (1 << DDD4) | (1 << DDD5) | (1 << DDD6) | (1 << DDD7); PORTC = (1 << DDC6) | (1 << DDC5) | (1 << DDC4) | (1 << DDC3) | (1 << DDC2); // Alle Eingänge am PortC mit PullUp Widerstand schalten TCCR0 = (1<<CS02); // Overflow Interrupt
(1 << DDD2) | (1 << DDD3) | (1 << DDD4) | (1 << DDD5) | (1 << DDD6) | (1 << DDD7); PORTC = (1 << DDC6) | (1 << DDC5) | (1 << DDC4) | (1 << DDC3) | (1 << DDC2); // Alle Eingänge am PortC mit PullUp Widerstand schalten while(1) { PORTD = 0xff; _delay_ms
-
Thread
Skurriles Problem mit BS170 Mosfets
* Serial protocol for 74HC595 shift register */ #define DDR_SER DDRC #define PORT_SER PORTC #define PIN_SER PINC #define SER PC0 #define DDR_SCK DDRC #define PORT_SCK PORTC #define PIN_SCK PINC #define SCK PC1 #define DDR_SCL DDRC #define PORT_SCL PORTC #define PIN_SCL PINC #define SCL PC2 #define DDR_RCK DDRC #define PORT_RCK PORTC #define PIN_RCK PINC #define RCK PC3 void clock() { PORT_SCK |= _BV( SCK ); PORT_SCK &= ~_BV( SCK ); } void store() { PORT_RCK |= _BV( RCK ); PORT_RCK &= ~_BV( RCK );
-
Thread
16bit Bus mit AVR
benutzen. Wie sprich ich aber den Port an? Kann ich einfach einen 16Bit Wert auf den Port legen, z.B. PORTC=55FF ? Grüße Thomas
nichts. Da wäre ein kleines define genausogut: [c] #define BUS(x) (PORTA=(unsigned char)((x)>>8); PORTC=(unsigned char)(x) : BUS(0x55ff); : [/c]
-
Thread
Lauflicht in C mit AVR - bei Tastendruck umkehren
<avr/io.h> #include <avr/delay.h> int main (void) { int x,y; DDRC = 0b11111111; PORTC = 0b00000000; x = 8; i = 1; while(x>=0) { PORTC = i; i = i * 2; x--; _delay_ms(500); } if(bit_is_set(PINA==1)) { PORTC = i; i = i / 2;
Dann sieht das so aus: [c]while(1) { int x = 1; for(i=0; i<8; i++) { PORTC = x; x = x * 2; _delay_ms(500); } x = 1; i = 0; } [/c]
-
Thread
HC-SR04 Ultraschalldistanzsensor an ATmega32
) { PORTC &= ~(1<<PC2); Ultrasonic_state = ULTRASONIC_STATE_WAITING; PORTB |= (1<<PB1); } } /* on any logical change at PD2 */ ISR(INT0_vect) { PORTB |= (1<<PB2); /* Die
sollte es nicht am jtag liegen nochmal den triggerimpuls prüfen > PORTC |= (1<<PC2); heißt PC2 = 1 > TCNT0 = 0; > OCR0 = 10; .... .... >ISR(TIMER0_COMP_vect) >{ > if(Ultrasonic_state == ULTRASONIC_STATE_TRIGGER) > { > PORTC &= ~(1<<PC2); heißt
-
Thread
LCD 8x2 (KS0066) ansteuern
KS0066-Controller ist an einen ATMega32 über 8-Bit-Interface angeschlossen. Die Datenbits liegen an PORTC0-7. PORTB0 = Enable, PORTB1 = R/W, PORTB2 = RS. Der Quelltext, mit dem ich versuche das Display zu betreiben: [c] int main(void){ //Initialization //Configure I/Os DDRA = 0b00000000
type, int value){ PORTB |= 1; PORTB &= 0b11111001; if(type == 1) PORTB |= 0b100; PORTC = value; PORTB &= 0b11111110; pause(30); PORTB |= 1; pause(30); return; } //Pause void pause(uint8_t length){ uint8_t stop; stop = TCNT0 + length; while(TCNT0 < stop)
-
Thread
ATMEGA128 externer Interrupt resettet
scheitern. Zunächst zum Prog.: An einem funktionstüchtigem Testboard mit einem ATMEGA128 soll an PortC eine RGB LED ansteuert werden. Nach Programmstart soll eine Farbe leuchten. Nach einem externen Interrupt an PORTD0 (INT0) der bei einer fallenden Flanke ausgelöst werden soll, soll sich die Farbe
werden im 1sec Takt gewechselt. ************* */ while(1) { if (aaa == 0) { PORTC = gelb; } else { PORTC = blau; } } } /* ********************************** Interrupts ***************************** */ ISR(INT0_vect) { //cli();
-
Thread
Interruptproblem Atmega32
//Interruptroutine verwendet werden ISR(INT0_vect){ unsigned char g = 224; // PORTC erkennt nur Zahlen kleiner als 128, PORTC = ~g; // deshalb Variable eingeführt _delay_ms(1000); x++; NeueZahl = 1; // True der If-Bedingung } int main(void){
MCUCR |= (1<<ISC01)|(1<<ISC00); // Int0 auf steigende Flanke while(1){ PORTC = ~7; _delay_ms(500); if(NeueZahl){ PORTC = ~x; _delay_ms(1000); NeueZahl = 0; // If-Bedingung wieder auf 0 setzten, // damit
-
Thread
Anfängercode, alle 3 Minuten ein anderer Pin auf High
Stunde16 an PB7 Stunde16 Alias Portb.7 Config Stunde16 = Output 'Stunde17 an PC0 Stunde17 Alias Portc.0 Config Stunde17 = Output 'Stunde18 an PC1 Stunde18 Alias Portc.1 Config Stunde18 = Output 'Stunde19 an PC2 Stunde19 Alias Portc.2 Config Stunde19 = Output 'Stunde20 an PC3 Stunde20 Alias Portc.3 Config Stunde20 = Output 'Stunde21 an PC4 Stunde21 Alias Portc.4 Config Stunde21 = Output 'Stunde22 an PC5 Stunde22 Alias Portc.5 Config Stunde22 = Output 'Stunde23 an PC6 Stunde23
-
Thread
ATtiny24A, Power-down
avrasm] .include "m328Pdef.inc" ldi r16,$FF sts PRR,r16 out PORTB,r16 out PORTC,r16 out PORTD,r16 nop main_loop: rjmp main_loop [/avrasm] Mit dem /nop/ fließen 2.16, ohne 1.94 mA.
> sts PRR0,r16 > sts PRR1,r16 > out PORTA,r16 > out PORTB,r16 > out PORTC,r16 > out PORTD,r16 > rjmp main > [/avrasm] > > Mit zweimal /nop/ fließen 3.81, mit einem 3.38 mA. > Soll natürlich heißen, bei mir; und da hätte mich interessiert, welche > Ströme
-
Thread
Schrittmotoren
PB5); // PIN0-5 als Ausgang für die Motoren definieren // PortB als Ausgang definieren DDRC = 0; //PORTC als Eingang für PCINT MASK 1 definieren TCCR1A = (1<<COM1A0) | (0<<WGM11); TCCR1B = (0<<WGM13) | (1<<WGM12) | (1<<CS10); OCR1A=18432; //****************** Interrupt initialisieren ***
); // PIN0-5 als Ausgang für die Motoren definieren // PortB als Ausgang definieren DDRC = 0; //PORTC als Eingang für PCINT MASK 1 definieren TCCR1A = (1<<COM1A0) | (0<<WGM11); TCCR1B = (0<<WGM13) | (1<<WGM12) | (1<<CS10); OCR1A=18432; //****************** Interrupt initialisieren **
-
Thread
Probleme auf ATmega88PA
angeschlossen, die Spalten sind von links nach rechts an PB0 - PB5 PORTB ist für GND zuständig, PORTC für VCC. Das heißt, wenn ich LED 14 einschalten will: PORTC = 0x00; // Alles aus (in Sperrrichtung) PORTB = 0xFF; PORTC |= (1<<PC3); PORTB &= ~(1<<PB3); So, nun lasse ich das ganze über einen
wieder auf 0 setzen! ISR (TIMER0_OVF_vect) { PORTB = 0xFF; // Alles aus, Dioden in Sperrichtung PORTC = 0x00; PORTB &= ~(1<<(currentLed / 4)); // Hier sieht man nochmal, was ich mit dem Umrechnen meinte PORTC |= (1<<(5 - (currentLed % 4))); do { currentLed++; } while (~LED_MASK & (1<<currentLed
-
Thread
ATMEGA 32L - gedrückter Button wird nicht erkannt
Hallo, ich scheitere gerade an einem sehr banalen Problem. Ich versuche am PORTC an den Pins 4,5,6 jeweils 3 verschiedene Buttons einzulesen. Leider erkennt mein Programm nur den PINC6. PINC5 und PINC4 werden leider nicht erkannt. In dem folgenden Codebeispiel versuche ich
{ DDRC &= ~((1 << PINC5)); DDRC |= (1 << PINC0); PORTC |= (1 << PINC5); while(1) { if (debounce(&PINC, PC5)) { PORTC ^= (1 << PC0); } } } Habe direkt auch mal am PC5 gemessen - durch die Pull-Up Widerstände werden
-
Thread
Interrupt: Simulation OK - in Hardware gehts nicht
interrupt.h> void init (void); int main (void) { init(); PORTA=0x15; PORTC=0xff; while (1) { } } void init (void) { DDRA = 0xff; DDRC =0xff; PORTC =0xff; sei(); TIMSK |= 0x01; // Timer 0 overflow interrupt enable TCCR0 &= 0xF8;
ich tipp mal drauf dass die Fuse JTAGEN falsch gesetzt ist und sich PortC noch im jtag Modus befindet
-
Thread
8-Bit Software PWM für mehr als 8 Kanäle
ptr_PORTA_main[i] = ~ptr_PORTA_main[i]; ptr_PORTB_main[i] = ~ptr_PORTB_main[i]; ptr_PORTC_main[i] = ~ptr_PORTC_main[i]; ptr_PORTD_main[i] = ~ptr_PORTD_main[i]; ptr_PORTE_main[i] = ~ptr_PORTE_main[i]; ptr_PORTF_main[i] = ~ptr_PORTF_main[i]; ptr_PORTG_main[i] = ~ptr_PORTG_main
pwm_cycle++; PORTA &= ~ptr_PORTA_isr[pwm_cycle]; PORTB &= ~ptr_PORTB_isr[pwm_cycle]; PORTC &= ~ptr_PORTC_isr[pwm_cycle]; PORTD &= ~ptr_PORTD_isr[pwm_cycle]; PORTE &= ~ptr_PORTE_isr[pwm_cycle]; PORTF &= ~ptr_PORTF_isr[pwm_cycle]; PORTG &= ~ptr_PORTG_isr[pwm_cycle]; PORTH &=
-
Thread
External Interrupt bei ATmega8
dazu ein kleines Testprogramm geschrieben bei dem nach dem Starten des Controllers LED 1 und 2, also PORTC0 und PORTC1 aus sind. Sobald zum ersten Mal ein Int request kommt soll die entsprechende LED bis zum Reset des Controllers angehen. Leider funktioniert das Ganze aus irgendeinem Grund nicht. Kann
(); ext_int(); PORTC |= _BV(PC0); //LED off -> Bit setzen (invertiert[STK500]) PORTC |= _BV(PC1); //LED off -> Bit setzen (invertiert[STK500]) sei(); // interrups global aktiviert while (1); }
-
Thread
Reaktives Blinklicht mit AT Mega8 und IR-Empfänger
Delay_ms (1000) ; //pause PORTB.B5 := 0x01 ; //rot aus {while PORTC.B3 <> 0x00 do // unendlich schleife start begin // if PORTC.B3 <> 0x01 then Ausgabe //else
while i <> 0 do begin i := PORTC.B3 ; i := sbit at PORTC.B3; end; Ausgabe; end; begin DDRC := 0x00 ; //port auf eingang
-
Thread
PIC18F66 Konflikt zwischen RA0 und Init CAN-Modul
TRISC = 0x08; // RC3(SCK) & RC4(SDI) as input, others as output PORTC = 0x00; // clear PORTC TRISD = 0x00; // set PORTD as output TRISE = 16; // RE4(CAN RX) as input, others as output (CAN TX
configureCAN(); // Configure CAN module Lcd_Init(); while(1) { PORTC = 0x1; Delay_ms(500); PORTC = 0x0; Delay_ms (500); for(k=0;k<4;k++) { PORTB = pin_mux[k]; // set MUX/I0 Delay_ms(1); adc_rd = ADC_Read(0); // get ADC value from
-
Thread
EEPROM mit TWI Schnittstelle beschreiben und lesen
TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO); //Transmit Stop condition while (TWCR & (1<<TWINT)); PORTC &= ~(1 << DDC2);[/c] Jetzt habe ich versucht, meine Bytes wieder auszulesen, es wird mir über meine USB am Terminal, der error11 und error12 ausgegeben. Der Code sieht so aus: SLA_W =
Geht jetzt, man sollte nur [c] PORTC |=(1<<DDC2); [/c] zu beginn, mit dem hier ersetzen [c] PORTC &=~(1<<DDC2); [/c] Falls es jemand jemals brauchen sollte. Vielen Dank nochmal. Warst mir eine große Hilfe. Eine Frage
-
Thread
Probleme mit einfachem C-Code
volatile int minuten = 0; int main(void) { DDRB = 0xff; PORTB = 0xff; DDRC = 0x00; PORTC = 0xff; PORTB = 0x00; while(1) { if(PINC & (1<<PINC4)) minuten = ((minuten / 15)+1)*15; } return 0; } ISR (TIMER0_OVF_vect) { cnt++; if(cnt == 931) { cnt
Ich setz mal voraus, das Du am PORTC4 einen Widerstand nach Masse hast und durch drücken der Taste der Pin auf high gehen soll. Wenn da kein Massewiderstand ist, dann ist PINC4 immer high, weil Du durch PORTC=0xFF den internen Pullup
-
Thread
ADC: LED blinkt nur
ADC_Read_Avg(0, 10); //Mehrfachmessung, Kanal 0, 10 Messungen if (adcval > 512) { PORTC &= ~(1 << PC3); } else if (adcval <= 512) { PORTC &= ~(1 << PC5); } } } [/c] Hoffe, ihr koennt mir weiterhelfen...
Dieses hier ist doppelt gemoppelt if (adcval > 512) { PORTC &= ~(1 << PC3); } else if (adcval <= 512) { PORTC &= ~(1 << PC5); } if (adcval > 512) { PORTC &= ~(1 << PC3); } else { //wenn adcval nicht größer als 512 ist
-
Thread
Problem mit LCD 4 Bit Initalisierung
für Datenregister nibble_h = (data >> 4) & 0b00001111; nibble_l = data & 0b00001111; PORTC = nibble_h; lcd_enable(); delay_ms(6); PORTC = nibble_l; lcd_enable(); delay_ms(6); // Viel Sicherheit: Manche brauchen 40 us, andere 1,6ms } /////////////////////////////
Befehlsregister nibble_h = (command >> 4) & 0b00001111; nibble_l = command & 0b00001111; PORTC = nibble_h; lcd_enable(); delay_ms(6); PORTC = nibble_l; lcd_enable(); delay_ms(6); // Viel Sicherheit: Manche brauchen 40 us, andere 1,6ms } ///////////////////////////////
-
Thread
ATmega32 Pins am PortC funktionieren nicht mehr
Hallo! Auf einem Experimentierboard habe ich einen ATmega32. Zu Testzwecken lasse ich auf PortC alle Pins toggeln damit die LED blinkt. Nur bei drei Pins am PortC leuchtet die LED immer. Kann das programmtechnische Gründe haben oder oder kann der Port auch defekt sein ?! Ist eigentlich ein
0xFF; DDRB=0xFF; DDRC=0xFF; while (1) { PORTA=0xFF; PORTB=0xFF; PORTC=0xFF; _delay_ms(500); PORTA=0x00; PORTB=0x00; PORTC=0x00; _delay_ms(500); } } [/c]
-
Thread
PortC beim ATmega162 funktioniert nur zur Hälfte
Ich möchte an einem ATmega162 den PortC benutzen. Der Rest funktioniert schon gut, habe schon ein LCD an einem anderen Port am laufen, doch nun möchte ich hier nur ein paar Taster abfragen und ein Summer ansteuern und nur die Hälfte funktioniert
include "types.h" #include "delay.h" #include "const.h" int main( void ) { DDRC = 0xff; PORTC = 0x00; for (;;) { PORTC = 0x00; delayms(2000); PORTC = 0xff; delayms(2000); } }
-
Thread
PortC Pin6 vom Mega8 nutzen
Hallo ! Hab bis jetzt nur mit AT90s2313 gearbeitet, möchte nun aber den Mega8 verwenden. Kann mir jemand sagen wie ich den Anschluss PortC.6 vom Mega8 (PIN1) nutzen kann da dieser zugleich als Reset-Eingang benutzt wird. Danke im Voraus für jede Hilfe. Gruss Gerhard