-
Thread
Dj Wandbeleuchtung
} if(i==7) { for(int o=0; o<=7; o++( { PORTB=0x00; PORTC=(1<<o); _delay_ms(50); PORTC=0x00; } } if(o==7) { for(int p=0; p<=7; p++) { PORTC=0x00; PORTD=(1<<p); _delay_ms(
} if(i==7) { for(int o=0; o<=7; o++( { PORTB=0x00; PORTC=(1<<o); _delay_ms(50); PORTC=0x00; } } if(o==7) { for(int p=0; p<=7; p++) { PORTC=0x00; PORTD=(1<<p); _delay_ms(
-
Thread
Timerinterrupt kommt nur einmal
löschen, wie Du es ja auch oben gemacht hast. Das ist aber erstens fürchterlich viel Code, zweitens geht es wesentlich einfacher und kürzer. Wenn Du die Register PINC und PINB einliest und den Inhalt von PINC um 6 Bit-Stellen nach links schiebst, steht da folgendes (PortB und PortC sind hier nur Platzhalter und haben nichts mit den Registern PORTB und PORTC zu tun!): 7 6 5 4 3 2 1 0 PortB X X T5 T4 T3 T2 T1 T0 PortC T7 T6 0 0 0 0 0 0 Durch das Linksschieben werden in der unteren Zeile von hinten
-
Thread
mega8 - fragen bei assembler
also zum pin6 an portc: ich brauche halt noch einen weiteren ausgang. ich plane in der schaltung via isp neue updates einspielen zu können. die frage ist ob man das irgendwie bewerkstelligen kann... vielleicht könnte mir
, wenn du begriffen hast, was der Chip kann. Tip am Rande: Lies nicht nur die Überschriften, hier geht es nicht um Werbebotschaften sondern um Fakten, die verstanden werden sollten. Klaus
-
Thread
Problem Schieberegister 595er ud 597er
ich aber den Code ausführe, der vom 597er lesen soll, und das Datum an den 595er weitergibt, dann geht nix mehr. Die Idee ist simpel: Auf die Inputs des 597er Spannung legen, dann erwarte ich, dass dies weitergegeben wird an den 595 als Output. Der Schaltplan sollte passen, ich benutze ein Pollin-Board
schreiben, genau diese werden auf den Leds angezeigt, also im > Code-Beispiel die 233. [c] PORTC &= ~(1<<DD_SS_i); PORTC |= (1<<DD_SS_i); PORTC &= ~(1<<DD_SS_i); PORTC |= (1<<DD_p597); PORTC &= ~(1<<DD_p597); PORTC |= (1<<DD_p597); [/c] Ich steig durch deine Bezeichnungen
-
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
Ultraschall Modul HCSR04, falsche Auswertung
_delay_ms(100); PORTC &= ~(1<<PC0); // _delay_us(15); // -> Löst die Messung des HCSR04 aus. PORTC |= (1<<PC0); // //Jetzt löst der Interrupt aus, weil das Modul den Echo auf high
while (1) { PORTC &= ~(1<<PC0); // _delay_ms(100); // -> Löst die Messung des HCSR04 aus. PORTC |= (1<<PC0); // //Jetzt löst der Interrupt aus, weil das Modul den Echo auf
-
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 ***
#2282998: > ich könnte das nur wenn ich mit Assembler programmiere, in C weiß ich > nicht wie das geht, weil du gar nicht weißt wo dein Prog steht. Wieso weißt du nicht wie das geht, wenn ich nicht weiß, wo mein "Prog" steht? In C unter AVRStudio gibt es im Menü "Debug" einige nützliche Funktionen
-
Thread
sda = (d >> 7); für GCC
define sda PC4 #define scl PC5 void i2c_write(unsigned char d) { unsigned char i; PORTC &= ~(1<<PC5); for ( i=1; i<=8; i++) { sda = (d >> 7); PORTC |= (1<<scl); d = d << 1; PORTC &= ~(1<<scl); } PORTC |= (1<<sda); PORTC &= ~(1<<scl);
); #define SBIT(port,pin) ((*(volatile struct bits*)&port).b##pin) #define scl SBIT(PORTC, 5) #define sda SBIT(DDRC, 4) #define sdain SBIT(PINC, 4) #define sdalevel SBIT(PORTC, 4) #define uchar unsigned char void I2C_write(uchar d) { uchar i; sdalevel = 0; scl = 0;
-
Thread
Drucker am AVR anschlissen
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
'Wartet, bis der Drucker ein ACK gesendet hat, um sicher zu gehen, dass kein Zeichen verloren geht Loop Until Ack_signal = 1 Next X Da steckt alles drin! Klaus.
-
Thread
Hilfe Bei Assembler Program
Atmega32... PORTC... Wie ist eigentlich die JTAG Fuse eingestellt?
Probleme ... Das ist es ja gerade was ich nicht verstehe, Simulation ist bei mir auch ok aber aumf Chip gehts dann nicht ... Trotzdem bis hier hin schon mal vielen Dank für eure Unterstützung :) MfG EXA
-
Thread
DOGM128 und ATmega32L8
glcdeadogm128x6.lbx" Config Graphlcd = 128 * 64eadogm , Cs1 = Portc.2 , A0 = Portc.4 , Si = Portc.6 , Sclk = Portc.5 , Rst = Portc.3 Cls Lcdat 1 , 1 , "11111111" Lcdat 2 , 1 , "88888888" Lcdat 3 , 1 , "MCS Electronics" , 1 Waitms 100 End was ich aus den
Nein diese Sachen sind in der LIB die du einbindest nicht drin. Das einzige was noch geht ist "showpic" ! Gruss Denny
-
Thread
Tasten abfragen oder so
-------------- ' Declarationen '------------------------------------------------ Config Sda = Portc.4 Config Scl = Portc.5 Config I2cdelay = 10 Portc.4 = 0 Portc.5 = 0 Ddrb = 00001111 Const Aus = &B11111111 'Alle Ausgänge 0 Const Pcf8574write = &H40
benutze selbst BASIC in einigen Dialekten. Aber beim AVR muss ich Hardware programmieren. Und das geht in ASM bedeutend eindeutiger (unmissverständlicher) als in BASCOM. In C geht das vermutlich genauso effizient wie in ASM, aber dazu muss man C schon verdammt gut beherrschen. Dazu fehlt mir die Ausdauer
-
Thread
2 8bit Output-Register zu einem 13bit Register machen
Atmega8 zur Verfügung. Ich habe die LEDs über Transistoren mit dem gesamten PORTD und 5 Pins des PORTC verbunden. Das Zählen bis 8 bit geht ja noch recht einfach. PORTD = Wert. Aber wenn ich nun über die 8 bit hinaus möchte, weiß ich gerade nicht so recht weiter. Hat von euch jemand eine Idee dazu ?
: Wenn die verbleibenden 3 Bits von PORTC für andere Sachen verwenden werden und damit unverändert bleiben sollen, verkompliziert sich die letzte Zeile etwas, nämlich zu: [c] PORTC &= ~1F; // untere 5 Bits löschen PORTC
-
Thread
Atmega8 GCC: Bitmanipulation an einer Variablen
1<<PINC4)) { while(dezimalzahl >= 1) { -- dezimalzahl; PORTC = 0x20; _delay_ms(100); PORTC = 0x00 ; _delay_ms(100); } } //PORTC &=(1 << PC5); // } return 0; } Kann mir jemand weiterhelfen? Grüße
1. [...] > 2. [...] > 3. [...] > 4. [...] > 5. [...] > 6. [...] OMG. Noch komplizierter geht's net? Wer überlegt sich so ne GUI...?
-
Thread
XMEGA & TWI -> Lese Problem
toggle die LED an einem der GPIOS hin und her. Und danach lese ich. > Das Schreiben klappt. Das geht also auch dauerhaft, also nach dem ersten Zyklus lesen geht das schreiben wieder ohne Probleme ? Mit der Funktion lese ich bei einem Atxmega E Daten aus einem FRAM mit aus. Page_adress ist die
if(twiname->MASTER.STATUS & (1<<TWI_MASTER_ARBLOST_bp)) { twiname->MASTER.CTRLA = 0; PORTC.DIRSET = PIN1_bm; for(uint8_t i=0;i<9;i++) { PORTC.OUTSET = PIN1_bm; _delay_us(20); PORTC.OUTCLR = PIN1_bm; _delay_us(20); } PORTC.DIRCLR = PIN1_bm;
-
Thread
Inbetriebnahme ENC28J60 Radig/RoeBue Arduino nano3
command_setvar}, {"TIME",command_time}, //{"PING", command_ping}, {"PORTB",command_portb}, {"PORTC",command_portc}, {"PORTCSET",command_setPORTC}, [/code] diese Befehle werden wohl über die serielle Schnittstelle gegeben. Bisher habe ich mit HTERM noch keinen großen Effekt festgestellt wenn
Manfred schrieb im Beitrag #4772364: > Das heißt also, mit fester IP im Rechner aus 192.168.0.x geht das, gut? ja. Das geht so prima ! das Dumme ist nur gewesen daß ich so natürlich nicht mehr ins Internet kam. Ich muss die Adressen natürlich so abstimmen daß beides geht. Vielen Dank übrigens
-
Thread
LCD will nicht funktionieren
der lcd.h habe ich 16MHz eingestellt und hier sind die pin-belegungen #define LCD_PORT PORTC #define LCD_DATA0_PORT LCD_PORT #define LCD_DATA1_PORT LCD_PORT #define LCD_DATA2_PORT LCD_PORT #define LCD_DATA3_PORT LCD_PORT #define LCD_DATA0_PIN 0 <-hier hängt
Bei Mega32 und PortC denke ich immer an das JTAG-Interface... Setze zweimal direkt hintereinander das JTD-Bit in MCUCSR, dann ist JTAG deaktiviert und dir steht PortC für I/O zur Verfügung. Alternativ geht das auch
-
Thread
PIC18F4550 kann PORTE und PORTD nicht beschreiben?
naja habs hinzugefügt hat aber nichts gebracht..... sonst nochn vorschlag? PORTA PORTB PORTC funktionieren.... nur die leds auf porte wollen nicht angehen...
und oder Eingang geschaltet werden können. --> das steht definitiv im Datenblatt übrigens PORTD geht auch nicht. gleiches Problem wie mit PORTE
-
Thread
Problem: Page-Wechsel bei LCD DG-12232 klappt nicht
LCD_RESET_PORTA= 0b11100010 ; reset display [...] ; Display an ldi lcd_command, LCD_COMMAND_PORTC out PORTC, lcd_command ; LCD ist im "command"-Modus... ldi lcd_data, LCD_ON_PORTA out PORTA, lcd_data ; ...und bekommt das Kommando "an" cbi PORTC, CS1 sbi PORTC, CS1 cbi PORTC, CS2
passiert ; Kommando ldi lcd_command, 0<<A0 | 1<<CS1 | 1<<CS2 | 1<<READ | 0<<WRITE out PORTC, lcd_command ; jetzt ist das LCD im "Command"-Modus ldi lcd_data, LCD_SETPAGE_PORTA mov tmp3, tmp2 ; tmp2 sichern (nur zur Sicherheit, push/pop geht auch) or lcd_data, tmp3 ; Befehl "springe
-
Thread
SN74LS164 an AVR
include <util/delay.h> int main (void) { DDRD |= (1<<PC5) | (1<<PC4); //PC4&PC5 als Ausgänge PORTC |= (1<<PC4); //Data auf high PORTC |= (1<<PC5); //Clock auf high _delay_ms(10); //10 ms warten PORTC &= ~(1<<PC5);//Clock auf low while (1); } [/c]
4000000 #include <util/delay.h> int i; int main (void) { DDRD |= (1<<PC5) | (1<<PC4); PORTC |= (1<<PC4); i = 0; while(i < 8) { PORTC |= (1<<PC5); _delay_ms(10); PORTC &= ~(1<<PC5); i++; } while (1); } [/c] Damit gehts immer noch nicht. :(
-
Thread
Elektrische Grundlagen eines Busses mit TTL-Pegeln
einfach für jeden dieser vier IO-Pins jede Kombination von gesetzten/zurückgesetzten Bits des DDRC-/PORTC-/PINC-Registers getestet und geschaut ob das entsprechende PINC-Bit beim Auslesen danach gesetzt oder nicht gesetzt ist. Beispiel: DDRC : 0111 (PC0+PC1+PC2 = Output / PC1 + PC3 = Input) PORTC: 0101
1) MEHR Pins mit Low-Pegel gibt als mit Highpegel, ansonsten ist er "1" Beispiele: DDRC : 0011 PORTC: 0011 (zwei Ausgabepins mit high-Pegel) ----------- PINC<: 1111 (high-Pegel) DDRC : 1111 PORTC: 0101 (zwei Ausgabepins mit high, zwei mit low-Pegel) ----------- PINC<: 1111 (high-Pegel setzt
-
Thread
Probleme bei einfachem Atmega Programm
> PORTC &= (0 << PC2); ...und lies Dir bitte mal den Artikel [[Bitmanipulation]] durch! So, wie Du das da schreibst, passiert da was ganz anderes als das, was Du willst! So wie es aussieht, könnte auch
??? Das müsste doch gehen, oder? Klar geht das. Es macht nur vermutlich nicht das, was Du willst. Denn wenn das, was da passiert, von Dir beabsichtigt wäre, hättest Du vermutlich einfach "PORTC = 0;" geschrieben... Merke: Eine 0 kannst Du
-
Thread
Zugriff auf einzelne Bits in einem Register
Mit Macros geht das beim AVR-GCC z.B. so: [C] #define RESET(x) _XRS(x) #define SET(x) _XS(x) #define _XRS(x,y) x &= ~(1<<y) #define _XS(x,y) x |= 1<<y #define LED_I2C
#define _XS(x,y) x |= 1<<y wird es angewendet, so ergibt sich PORTC |= 1 << 3
-
Thread
Atmega8 Interrupts
PC0) ; // Port C0 an 100ms warten _delay_ms (100) ; PORTC |= _BV (PC0) ; // PORT C0 aus 100 ms warten PORTC &= ~_BV (PC1) ; // PORT PC1 an 100 ms warten _delay_ms (100) ; PORTC |= _BV (PC1) ; // PORT PC1 aus 100ms warten PORTC &= ~_BV (PC2) ; // PORT PC2 an 100 ms warten _delay_ms (100) ; PORTC |= _BV (PC2) ; // // PORT PC2 aus 100ms warten PORTC &= ~_BV (PC3) ; // PORT PC3 an 100ms warten _delay_ms (100) ; PORTC |= _BV (PC3) ; // // PORT PC3 aus 100ms warten PORTC &= ~_BV
-
Thread
Taster entprellen
if (bit_is_clear(PINA,7) // nach Entprellung immer noch gedrückt? { PORTC++; while(bit_is_clear(PINA,7); // warten bis losgelassen } } Aber: PORTC ist eine in einem Header vordefinierte Konstante. Die kann man doch nicht einfach so inkrementieren
Genauso tuts. Lies nochmal! Das geht.
-
Thread
atmega644p - Welche Pins können als I/O benutzt werden?
b11100111; PORTB = b00000000; DDRC = b11111110; PORTC = b00000000; DDRD = b11100011; //taster auch als eingang... PORTD = b00000000; Wenn ich jetzt Testweise alle Leds an schalte, scheint alles zu funktionieren. //////////////////// //Testpattern /////////////////// PORTA |= b11001111; PORTB |= b11100111; PORTC |= b11111110; PORTD |= b01100011; _delay_ms(2000); PORTA = b00000000; PORTB = b00000000; PORTC = b00000000; PORTD = b00000000; Aber wenn ich jede led hintereinander einzel durch schalte, geht
-
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
Binäruhr selbstbau
Hier mal vorausgesetzt, dass nur eine Spalte angeschlossen wird. void ledout(uint8_h data){ PORTC = data & (1 << PC0); PORTC = data & (1 << PC1); PORTC = data & (1 << PC2); PORTC = data & (1 << PC3); } main (){ ... // erste Stelle schreiben // hier: Spalte 1 high ledout( ...
ist ist einfacher.. und es sind ja nur paar widerstände und trans. notwendig... @entity: geht bis quartzfreq/2..., bitte schön
-
Thread
Mal wieder EA DOG-M 162, keine Initialisierung
Labornetzteil) Pin24 VOUT an 5V Pin25 VIN an 5V Pin26 VDD an 5V Pin27 VSS an Masse Pin28 D7 an PortC 7 (ATMega16) Pin29 D6 an PortC 6 Pin30 D5 an PortC 5 Pin31 D4 an PortC 4 Pin32 D3 an PortC 3 Pin33 D2 an PortC 2 Pin34 D1 an PortC 1 Pin35 D0 an PortC 0 Pin36 E an PortB 2 Pin37 RW an PortB
;LCD Function SET ldi lcdd, 0b00111001 ; 8bit,2-Zeilen, kleine Schrift, usw. out PORTC, lcdd rcall lcd_lade rcall vz2100us ; Instruction Table 1 an ldi lcdd, 0b00011100 ; Standard out PORTC, lcdd nop rcall lcd_lade
-
Thread
LC Display will einfach nicht
delay_ms(1); } void lcd_init (void) { DDRC = 0xff; long_delay(100); PORTC =3; unsigned int a = 0; while(a < 3){ long_delay(10); PORTC |= (1<<PC5); long_delay(10); PORTC &= ~(1<<PC5); a++; } long_delay(10); PORTC =
folgender Maßen: > > DB4 - DB7: PC0 - PC3 > RS: PC4 > E: PC5 > RW: GND Bei welchem µC? Bei PORTC habe ich immer mögliche Doppelfunktionen des Ports im Hinterkopf. Bei manchen AVRs muss man z.B. JTAG abschalten damit das geht.
-
Thread
Probleme mit einfachem C-Code
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
funktioniert es wie erwartet. Genauer: Wenn ich in der while-Schleife eine volatile-Variable verändere, geht es nicht mehr. Nur warum nicht??
-
Thread
ATMEGA128 externer Interrupt resettet
werden im 1sec Takt gewechselt. ************* */ while(1) { if (aaa == 0) { PORTC = gelb; } else { PORTC = blau; } } } /* ********************************** Interrupts ***************************** */ ISR(INT0_vect) { //cli();
if (aaa == 0) { aaa = 1; } else { aaa = 0; } } [/c] ersetz habe geht alles. Danke für die schnelle Hilfe.
-
Thread
SPI unstabil
case 4: lcd_set_cursor(buf[0]-40, buf[1]-40); break; case 5: PORTC |= 0x08; //Hintergrundbeleuchtung an break; case 6: PORTC &= ~0x08; //Hintergrundbeleuchtung aus break; default: lcd_string("SPI-ERROR!!"); } bufpos
EDIT: Aber eine Antwort darauf, wieso es mit MISO nicht geht und ohne schon ...ist es nicht.... Sorry, bin im Moment echt ein bisschen gestresst....
-
Thread
Xmega: Interne PullUps aktivieren
) { /* Configure data direction for PORTC and PORTD. */ //PORTC.DIRCLR=0XFF; PORT_ConfigurePins( &PORTC, 0xFF, false, false, PORT_OPC_WIREDANDPULL_gc, PORT_ISC_BOTHEDGES_gc ); PORT_SetPinsAsInput( &PORTC, 0xFF ); PORT_SetPinsAsOutput( &PORTD, 0xFF ); /* Continously copy the value from PORTC to PORTD. */ do { uint8_t temp = PORT_GetPortValue( &PORTC ); PORT_SetOutputValue( &PORTD
-
Thread
Daft Punk Tisch
wohl eher: PORTA = 0b01010101; //Erstellt das 1 Schachbrettmuster PORTB = 0b10101010; PORTC = 0b01010101; PORTD = 0b10101010;
morgen nochmal hoch. Schaltplan zur Musikerkennung habe ich nur im Kopf. Da es jetzt ins Kino geht gibts morgen den Rest
-
Thread
pwm ansteuern mittles taster
&PINC, PC1)) //Taste S2 {S2=true; } PORTC = SavePORTC; DDRC = SaveDDRC; // Laden des alten Portzustandes } danke
[C] void ButtonControl() { char SavePORTC = PORTC; char SaveDDRC = DDRC; PORTC |= (1<<PC0) | (1<<PC1) ; DDRC &= ~((1<<DDC0) | (1<<DDC1)); [/C] Lass das DDR Register und das Port Register in Ruhe! Diese Einstellung macht man
-
Thread
Probleme mit PCINT an ATmega644P
Steffen K. schrieb: > PORTC= 0xf8; // Pullups für Eingägne an imo schaltest du da alle Ausgänge auf 1 und keine PullUps...kA ob das der Grund ist...
void) { init(); PORTA |=(1<<3); for(;;) run(); return 0; }[\c] Ergebnis: LED geht an, ich kann am interrupteingang machen was ich will sie geht nicht mehr aus
-
Thread
atmega 16, array, assembler, indirekte adressierung
PORTC, r16 . . . Jedenfalls sagen das meine bescheidenen Assemblerkenntnisse ,,,
Indirekte Adressierung geht nur im SRAM. Sonst haben meine Vorredner schon recht :)
-
Thread
Probleme mit KS0180 Grafikdisplay
DISPLAY uC D0 - D7 ----> PORTB (habe ich in der KS0180.h geändert) D/I ----> PORTC PIN 0 R/W ----> PORTC PIN 1 E1 ----> PORTC PIN 2 E2 ----> PORTC PIN 2 CS1L ----> PORTC PIN 3 CS1H ----> +5V CS2L ----> PORTC PIN 4 CS2H ----> +5V RES
jetzt auch einliefern lassen :D Das wird wohl ein Rätsel bleiben, warum es mit Port C nicht geht. Sicher ist auf jedenfall: EA DIP128-6 mit KS0108 + STK500 + ATMEGAs + Steckplatine + jede Menge Drähte stecken -------------------------------- = FUNKTIONIERT DOCH !!!
-
Thread
Problem mit OP LM324
ich vermute hier die Ursache. Da der OP bei ständig High also abgeklemten 250Hz Singnal nicht kaput geht. Ist das so Plausiebel oder habt ihr eine andere Vermutung. Vielen Dank Michael
DDRD = 0x1F; // PortD 0 bis 5 als Ausgang DDRC = 0x00; // PortC als eingang PORTC = 0xFF; //Pull up Widerstände acktivieren PORTD = 0xE0; // PORTC7 als eingang PORTD |= (1<<PD7); //Pull up Widerstand ein
-
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
STM32 Tutorial
deutlicher haben möchtest kannst du's gerne selbst anpassen, ich bin grad zu faul nachzulesen, wie's geht. ;-)
Wie schaffe ich es denn, dass ich z.B. Pin 8 und 9 bei PortC als Ausgang habe und Pin 5 an PortC als Eingang für nen Knopf... bzw einen anderen Pin an Port C als Analog? Also wie muss dann meine Init Struct aussehen? Irgendwie raff ich es noch nicht so ganz
-
Thread
SHTxx + ATmega16 + TWI
So haben uns jetz an den Code von sensirion gehalten mit allen zeiten usw. Es geht immernoch nix. Selbst wenn wir eine slave adresse angeben die es nicht gibt meldet er erfolgreich gesendet. Kann bitte jemand nochmal drüberschauen. Danke void S_SDA() { DDRC |= (1<<SDA); PORTC |= (1<<SDA); } void C_SDA(){ DDRC |= (1<<SDA); PORTC &= ~(1<<SDA); } void S_SCL(){ DDRC |= (1<<SCL); PORTC |= (1<<SCL); } void C_SCL(){ DDRC |= (1<<SCL); PORTC &= ~(1<<SCL); } unsigned char G_SDA(){ DDRC &= ~(1<<SDA
-
Thread
Codesequenz mehrmals brauchen = auslagern
> Wenn es sehr, sehr, sehr zeitkritisch ist, geht das auch per include. Das macht man dann aber eher per inline als per include.
Markus E. schrieb im Beitrag #2625482: > Aber es geht ja um den Code, nicht darum, was der Compiler daraus macht! Nö, es geht hier darum, den Code an der Stelle einzufügen, also genau das was der Compiler daraus macht! Sonst nimmt natürlich Funktionen
-
Thread
ATMEGA8 - ULN2803 - LM23-K
Geht leider immer noch nicht.
>Geht leider immer noch nicht. Den ULN2803 falsch rum eingebaut?
-
Thread
RGB LED 3x3x3
glauben daß das Problem ist bei R42 zu suchen ist oder im Code Zeile 28 ? Aber klar, wenn nix geht 100nF
0b00001111; DDRB = 0b00000110; DDRD = 0b00000010; CLEAR_BIT(PORTB,2); //Output Enable SET_BIT(PORTC,3); //SDI //Ebenen SET_BIT(PORTC,2); SET_BIT(PORTC,1); CLEAR_BIT(PORTC,0); /** Hauptschleife **/ while(true) { //CLK CLEAR_BIT(PORTB,1); _delay_ms(1000);
-
Thread
AVR-Simulator im AVR Studio
{ // Datenrichtung an PORTB: Alle Pins sind Ausgang DDRB = 0xff; // Datenrichtung an PORTC: Alle Pins sind Eingang DDRC = 0x00; // Interner Pullupwiderstand an PC0 einschalten PORTC |= (1<<PC0); while(1) { // wenn GENAU JETZT HIGH an PC0 anliegt // Pullup an
@Stefan B.: Es geht hier offensichtlich um Debugging im /Simulator/. Hardware ist hier noch gar nicht im Spiel. Dementsprechend gibt's auch keine echten Taster usw. Mit dem Kommentar hingegen volle Zustimmung! Sollte
-
Thread
Wert eines Knopfes lesen
: [c] // PORTD2 und 3 als Eingang DDRD &= ~(1<<2); DDRD &= ~(1<<3); // PORTC0-3 als Ausgang DDRC |= (1<<0) | (1<<1) | (1<<2) | (1<<3); while(1 == 1) { if(bit_is_set(PIND_PIN, 2)) PORTC &= ~2; else PORTC |= 2; } [/c] Nun bleibt das LED2 immer an, egal
Pull-Ups im AVR? Ist es was internes am ATMega? Wenn ja, wäre es eine Idee zum testen, ob das Programm geht... Wie nutze ich die? Danke Luca Bertoncello
-
Thread
Code übersetzen
Abend Forum, ich wende mich mal an Euch da ich seit Tagen (Nächten) schon nicht weiter komme! Es geht um eine Codeübersetzung für die scheinbar mein Wissen nicht ausreicht. Dabei geht es um den Kalman Filter. Diesen habe ich als Basic-Quellcode im Netz gefunden: http://www.elektor.de/forum/foren-ubersicht
Kalman_filter_auswertung(gyro As Single , Adxl As Single , Dt As Single) As Single Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.1 , Rs = Portc.0 Config Lcd = 16 * 2 Cls Config Adc = Single , Prescaler = 128 , Reference = Off Start Adc 'Init Call Init_gyro1dkalman
-
Thread
Zeiger von PORTs (ATmega16)
{&PORTA,(1<<4)}, {&PORTA,(1<<5)}, {&PORTA,(1<<6)}, {&PORTA,(1<<7)}, {&PORTC,(1<<7)}, {&PORTC,(1<<6)}, {&PORTC,(1<<5)} }; [/c] Wenn man dann zb. den Gleisabschnitt Nr. 5 Einschalten möchte muss man nur: [c] *power_config[5].port |= power_config[5].pin
einfach > ein Byte und sonst nichts, egal ob es jetzt uint8 oder unsigned char > heißt ?! Es geht nicht um "unsigned char" <-> "uint8_t" (du könntest auch schreiben eeprom_write_byte((unsigned char *)railNr, trainNr);). Es geht bei der Warnung darum, dass du einem Pointer direkt einen Wert zuweist